Ë
    Èš§j¯N ã                   ór  — d dl Z d dlZd dlmZmZ 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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mZmZmZmZmZm Z m!Z!m"Z" d dl#m$Z$ d„ Z%d„ Z&d„ Z'd:d	„Z(d
„ Z)d„ Z*d„ Z+ G d„ d«      Z,d„ Z-d„ Z.d„ Z/d„ Z0d„ Z1 G d„ de jd                  «      Z3 G d„ de3«      Z4 G d„ de4«      Z5 G d„ de4«      Z6 G d„ de3«      Z7 G d„ de7«      Z8ejr                  j"                   G d „ d!e7«      «       Z: G d"„ d#«      Z; G d$„ d%e;ejx                  «      Z= G d&„ d'e;ejx                  «      Z>d(„ Z?d)„ Z@d*„ ZAd+„ ZBd,„ ZCejr                  j‰                  d-d.„ d/„ d0„ d1„ f«      d2„ «       ZEd3„ ZFejr                  j‰                  d4d5„ d6fd7„ d6fd8„ d6fg«      d9„ «       ZGy);é    N)ÚdateÚdatetime)ÚDecimal)
Úopen_csvÚread_csvÚReadOptionsÚParseOptionsÚConvertOptionsÚISO8601Ú	write_csvÚWriteOptionsÚ	CSVWriterÚ
InvalidRow)Úutilc               #   ón   K  — t         j                  } | E d {  –—†  | D ]  }| D ]	  }||z   –— Œ Œ y 7 Œ­w©N)ÚstringÚascii_lowercase)ÚlettersÚfirstÚseconds      úYC:\Users\Luka\AppData\Local\Temp\pip-target-o84fipzb\lib\python\pyarrow/tests/test_csv.pyÚgenerate_col_namesr   /   s=   è ø€ ä×$Ñ$€GØ×ÐÛˆÛˆFØ˜&‘.Ó ñ ñ ð ús   ‚5˜3™5c              #   óJ   K  — t        d||z  |«      D ]  }| |||z    –— Œ y ­w©Nr   ©Úrange©ÚarrÚnum_colsÚnum_rowsÚis       r   Ú
split_rowsr#   8   s/   è ø€ ä�1�h Ñ)¨8Ö4ˆØ�!�A˜‘LÐ!Ó!ñ 5ùs   ‚!#c              #   óB   K  — t        d|«      D ]  }| |d |…   –— Œ y ­wr   r   r   s       r   Úsplit_columnsr%   >   s(   è ø€ ä�1�hÖˆØ�!�+�X�+ÑÓñ  ùs   ‚c           	      ó  — t        j                  d«      }t        | |z  «      D �cg c]  }|j                  dd«      ‘Œ }}t	        j
                  «       }t        t        j                  t        «       | «      «      }|r1|j                  dj                  |«      «       |j                  |«       t        || |«      D ]A  }	|j                  dj                  t        t        |	«      «      «       |j                  |«       ŒC |j                  «       j!                  «       }t#        || |«      D �	cg c]+  }	t%        j&                  |	t%        j(                  «       ¬«      ‘Œ- }
}	t$        j*                  j-                  |
|«      }||fS c c}w c c}	w )Né*   r   éè  Ú,)Útype)ÚrandomÚRandomr   ÚrandintÚioÚStringIOÚlistÚ	itertoolsÚislicer   ÚwriteÚjoinr#   ÚmapÚstrÚgetvalueÚencoder%   ÚpaÚarrayÚint64ÚTableÚfrom_arrays)r    r!   ÚlinesepÚwrite_namesÚrndÚ_r   ÚcsvÚ	col_namesÚrowÚcolumnsÚexpecteds               r   Úmake_random_csvrG   D   s=  € Ü
�-‰-˜Ó
€CÜ).¨x¸(Ñ/BÔ)CÓ
DÑ)C Aˆ3�;‰;�q˜$ÕÐ)C€CÐ
DÜ
�+‰+‹-€CÜ”Y×%Ñ%Ô&8Ó&:¸HÓEÓF€IÙØ�	‰	�#—(‘(˜9Ó%Ô&Ø�	‰	�'ÔÜ˜#˜x¨Ö2ˆØ�	‰	�#—(‘(œ3œs C›=Ó)Ô*Ø�	‰	�'Õð 3ð �,‰,‹.×
Ñ
Ó
!€Cä'¨¨X°xÔ@óBÙ@�3ô �x‰x˜¤"§(¡(£*Ö-Ø@ð ð Bä�x‰x×#Ñ# G¨YÓ7€HØ�ˆ=Ðùò EùòBs   ¦FÄ-0Fc                 óÈ   — t        j                  «       }|j                  dj                  | «      «       |j                  d«       |j	                  «       j                  «       S )Nr)   Ú
)r.   r/   r3   r4   r7   r8   )Úcolumn_namesrB   s     r   Úmake_empty_csvrK   V   sB   € Ü
�+‰+‹-€CØ‡I�Iˆc�h‰h�|Ó$Ô%Ø‡I�Iˆd„OØ�<‰<‹>× Ñ Ó"Ð"ó    c                 óò  —  | «       }|j                  «       D ]K  \  }}t        ||«      |d   k(  s
J d|z   «       ‚|D ]%  }t        |||«       t        ||«      |k(  rŒ J d«       ‚ ŒM t        j                  t
        «      5  d|_        ddd«       |j                  «       D ��ci c]  \  }}||d   “Œ }}} | di |¤Ž}|j                  «       D ]  \  }}t        ||«      |k(  rŒJ ‚ y# 1 sw Y   ŒaxY wc c}}w )zD
    Check setting and getting attributes of an *Options class.
    r   zincorrect default value for zfailed setting valueTNé   © )ÚitemsÚgetattrÚsetattrÚpytestÚraisesÚAttributeErrorÚzzz_non_existent)ÚclsÚattr_valuesÚoptsÚnameÚvaluesÚvÚnon_defaultsÚvalues           r   Úcheck_options_classr_   ]   s  € ñ ‹5€Dà#×)Ñ)Ö+‰ˆˆfÜ�t˜TÓ" f¨Q¡iÒ/ð 	2Ø*¨TÑ1ó	2Ð/ãˆAÜ�D˜$ Ô"Ü˜4 Ó&¨!Ó+ÐCÐ-CÓCÐ+ñ ð ,ô 
�‰”~Õ	&Ø $ˆÔ÷ 
'ð 9D×8IÑ8IÔ8KÔLÑ8K©¨¨f�D˜& ™)‘OÐ8K€LÑLÙÑ�Ñ€DØ#×)Ñ)Ö+‰ˆˆeÜ�t˜TÓ" eÓ+Ð+Ð+ñ ,÷ 
'Ð	&üó Ms   Á?C'Â"C3Ã'C0c                 ó¾   —  | di |¤Ž}|j                  |j                  ||j                  ¬«      «      }|j                  «       D ]  \  }}t	        ||«      |k(  rŒJ ‚ y )N)ÚprotocolrO   )ÚloadsÚdumpsÚHIGHEST_PROTOCOLrP   rQ   )rW   ÚpicklerrX   rY   Únew_optsrZ   r^   s          r   Úcheck_options_class_picklingrg   u   sf   € ÙÑ�Ñ€DØ�}‰}˜WŸ]™]¨4Ø4;×4LÑ4Lð +ó Nó O€Hà"×(Ñ(Ö*‰ˆˆeÜ�x Ó&¨%Ó/Ð/Ð/ñ +rL   c                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)ÚInvalidRowHandlerc                 ó    — || _         g | _        y r   )ÚresultÚrows)Úselfrk   s     r   Ú__init__zInvalidRowHandler.__init__~   s   € ØˆŒØˆ�	rL   c                 óP   — | j                   j                  |«       | j                  S r   )rl   Úappendrk   )rm   rD   s     r   Ú__call__zInvalidRowHandler.__call__‚   s   € Ø�	‰	×Ñ˜ÔØ�{‰{ÐrL   c                 óX   — t        |t        «      xr |j                  | j                  k(  S r   ©Ú
isinstanceri   rk   ©rm   Úothers     r   Ú__eq__zInvalidRowHandler.__eq__†   s'   € Ü˜5Ô"3Ó4ò ,Ø—‘ §¡Ñ+ð	-rL   c                 óZ   — t        |t        «       xs |j                  | j                  k7  S r   rs   ru   s     r   Ú__ne__zInvalidRowHandler.__ne__Š   s*   € Ü˜uÔ&7Ó8Ð8ò ,Ø—‘ §¡Ñ+ð	-rL   N)Ú__name__Ú
__module__Ú__qualname__rn   rq   rw   ry   rO   rL   r   ri   ri   }   s   „ òòò-ó-rL   ri   c                  óæ   — d} d}t        dd«      D �cg c]  }|‘Œ }}t        t        || |«      «      }|g d¢g d¢gk(  sJ ‚t        t        || |«      «      }|ddgddgd	d
gddgddggk(  sJ ‚y c c}w )Né   é   rN   é   )rN   r   é   é   r~   )é   é   é   é	   é
   rƒ   r„   r�   r…   r‚   r†   r‡   )r   r0   r#   r%   )r    r!   Úxr   rl   rE   s         r   Ú#test_split_rows_and_columns_utilityr‰   �   sª   € Ø€HØ€HÜ˜A˜r”lÓ
#‘l�Š1�l€CÐ
#Ü”
˜3 ¨(Ó3Ó4€DØÚÚðò ð ð ô ”=  h°Ó9Ó:€GØØ	
ˆAˆØ	
ˆAˆØ	
ˆAˆØ	
ˆAˆØ	
ˆBˆðò ð ñ ùò $s   “	A.c           
      ób  — t         } |«       }t        |ddgddgg ddggddgddgdd	g¬
«       t        || ddddgddd	¬«       |j                  dkD  sJ ‚d|_        |j                  dk(  sJ ‚ |d¬«      }|j                  dk(  sJ ‚|j	                  «        d}t        j                  t        j                  |¬«      5   |«       }d|_        |j	                  «        d d d «       d}t        j                  t        j                  |¬«      5   |«       }d|_	        |j	                  «        d d d «       d}t        j                  t        j                  |¬«      5   |«       }d|_
        |j	                  «        d d d «       d}t        j                  t        j                  |¬«      5   |«       }d|_        d|_        |j	                  «        d d d «       d}t        |«      d|› d�k(  sJ ‚t        |«      d|› d�k(  sJ ‚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   ŒYxY w)NTFr   r�   ÚabÚcdÚutf8Úutf16é   )Úuse_threadsÚ	skip_rowsrJ   Úautogenerate_column_namesÚencodingÚskip_rows_after_names)re   r�   r‘   rJ   r’   r“   r”   é90  iÒ  ©Ú
block_sizez-ReadOptions: block_size must be at least 1: 0©Úmatchz-ReadOptions: skip_rows cannot be negative: -1éÿÿÿÿz9ReadOptions: skip_rows_after_names cannot be negative: -1zTReadOptions: autogenerate_column_names cannot be true when column_names are provided©ÚaÚbz±
    use_threads=True,
    block_size=1048576,
    skip_rows=0,
    skip_rows_after_names=0,
    column_names=['a', 'b'],
    autogenerate_column_names=True,
    encoding='utf8'z<pyarrow.csv.ReadOptions>(Ú)zReadOptions()r   r_   rg   r—   ÚvalidaterS   rT   r9   ÚArrowInvalidr‘   r”   r’   rJ   Úreprr6   )Úpickle_modulerW   rY   r™   Úexpected_repr_inners        r   Útest_read_optionsr¤   ¢   s  € Ü
€CÙ‹5€Dä˜¨$°¨Ø#$ a &Ø&(¨4°¨,Ð%7Ø38¸$°-Ø"(¨'Ð!2Ø/0°"¨gõ7ô ! ¨mØ-1Ø+,Ø/3°T¨lØ;@Ø*1Ø79õ;ð �?‰?˜QÒÐÐØ€D„OØ�?‰?˜eÒ#Ð#Ð#á˜$Ô€DØ�?‰?˜dÒ"Ð"Ð"à‡M�M„Oà;€EÜ	�‰”r—‘¨eÖ	4Ù‹uˆØˆŒØ�‰Œ÷ 
5ð
 <€EÜ	�‰”r—‘¨eÖ	4Ù‹uˆØˆŒØ�‰Œ÷ 
5ð
 H€EÜ	�‰”r—‘¨eÖ	4Ù‹uˆØ%'ˆÔ"Ø�‰Œ÷ 
5ð
)€Eä	�‰”r—‘¨eÖ	4Ù‹uˆØ)-ˆÔ&Ø&ˆÔØ�‰Œ÷	 
5ðÐô �‹:Ð5Ð6IÐ5JÈ!ÐLÒLÐLÐLÜˆt‹9˜,Ð':Ð&;¸1Ð=Ò=Ð=Ñ=÷G 
5Ñ	4ú÷ 
5Ð	4ú÷ 
5Ð	4ú÷ 
5Ð	4ús0   Â=H ÄHÅHÆ'&H%È H
ÈHÈH"È%H.c                 ó|  — t         }t        d«      }t        |ddgddgg d¢ddgddgddgd |g¬«       t        || dddddd|¬	«	        |«       j	                  «         |«       }d
|_        |j	                  «        d}t        j                  t        j                  |¬«      5   |«       }d|_        |j	                  «        d d d «       t        j                  t        j                  |¬«      5   |«       }d|_        |j	                  «        d d d «       d}t        j                  t        j                  |¬«      5   |«       }d|_
        |j	                  «        d d d «       t        j                  t        j                  |¬«      5   |«       }d|_
        |j	                  «        d d d «       d}t        j                  t        j                  |¬«      5   |«       }d|_        |j	                  «        d d d «       t        j                  t        j                  |¬«      5   |«       }d|_        |j	                  «        d d d «       d}t        |«      d|› d�k(  sJ ‚t        |«      d|› d�k(  sJ ‚y # 1 sw Y   �ŒµxY w# 1 sw Y   �ŒvxY w# 1 sw Y   �Œ5xY w# 1 sw Y   ŒõxY w# 1 sw Y   Œ³xY w# 1 sw Y   ŒsxY w)NÚskipr)   rˆ   FÚy)Ú"ÚzFT)Ú	delimiterÚescape_charÚ
quote_charÚdouble_quoteÚnewlines_in_valuesÚignore_empty_linesÚinvalid_row_handler)re   rª   r«   r¬   r­   r®   r¯   r°   Ú	z,ParseOptions: delimiter cannot be \\r or \\nr˜   rI   Úz-ParseOptions: quote_char cannot be \\r or \\nz.ParseOptions: escape_char cannot be \\r or \\nz¬
    delimiter=',',
    quote_char='"',
    double_quote=True,
    escape_char='\r',
    newlines_in_values=False,
    ignore_empty_lines=True,
    invalid_row_handler=Nonez<pyarrow.csv.ParseOptions>(rž   zParseOptions()r	   ri   r_   rg   rŸ   rª   rS   rT   r9   r    r¬   r«   r¡   r6   )r¢   rW   Úskip_handlerrY   r™   r£   s         r   Útest_parse_optionsr´   å   s?  € Ü
€CÜ$ VÓ,€Lä˜¨¨S zØ%*¨C LÚ#4Ø&*¨E ]Ø,1°4¨=Ø,0°%¨=Ø-1°<Ð,@õBô ! ¨mØ+.Ø-0Ø,1Ø.3Ø48Ø49Ø5AõCñ ƒE‡N�NÔÙ‹5€DØ€D„NØ‡M�M„Oà>€EÜ	�‰”r—‘¨eÖ	4Ù‹uˆØˆŒØ�‰Œ÷ 
5ô
 
�‰”r—‘¨eÖ	4Ù‹uˆØˆŒØ�‰Œ÷ 
5ð
 @€EÜ	�‰”r—‘¨eÖ	4Ù‹uˆØˆŒØ�‰Œ÷ 
5ô
 
�‰”r—‘¨eÖ	4Ù‹uˆØˆŒØ�‰Œ÷ 
5ð
 A€EÜ	�‰”r—‘¨eÖ	4Ù‹uˆØˆÔØ�‰Œ÷ 
5ô
 
�‰”r—‘¨eÖ	4Ù‹uˆØˆÔØ�‰Œ÷ 
5ð
 Ðô �‹:Ð6Ð7JÐ6KÈ1ÐMÒMÐMÐMÜˆt‹9˜-Ð(;Ð'<¸AÐ>Ò>Ð>Ñ>÷U 
5Ñ	4ú÷
 
5Ñ	4ú÷ 
5Ñ	4ú÷
 
5Ð	4ú÷ 
5Ð	4ú÷
 
5Ð	4úsH   Â!I3Ã-J Ä;JÆJÇJ&È!J2É3I=Ê J
ÊJÊJ#Ê&J/Ê2J;c                 ó  — t         } |«       }t        |ddgddgddgddgg ddggddgddgg t        dgg¬«	       t        || ddddddgddt        dgt	        j
                  «       ¬	«       t        j                  t        «      5  d
|_	        d d d «       |j                  dkD  sJ ‚d|_
        |j                  dk(  sJ ‚|j                  i k(  sJ ‚t	        j
                  «       t	        j                  «       dœ|_        |j                  t	        j
                  «       t	        j                  «       dœk(  sJ ‚dddœ|_        |j                  t	        j
                  «       t	        j                  «       dœk(  sJ ‚t	        j                  dt	        j                  «       fdt	        j                   «       fg«      }||_        |j                  t	        j                  «       t	        j                   «       dœk(  sJ ‚dt	        j"                  «       fg|_        |j                  dt	        j"                  «       ik(  sJ ‚t        j                  t$        d¬«      5  dd i|_        d d d «       t        j                  t$        «      5  d|_        d d d «       |j&                  �J ‚t	        j                   «       |_        |j&                  t	        j                   «       k(  sJ ‚d|_        |j&                  t	        j                  «       k(  sJ ‚d |_        |j&                  �J ‚t        j                  t$        d¬«      5  d|_        d d d «       t)        |j*                  t,        «      sJ ‚d|j*                  v sJ ‚d|j*                  v sJ ‚ddg|_        |j*                  ddgk(  sJ ‚t)        |j.                  t,        «      sJ ‚ddg|_        |j.                  ddgk(  sJ ‚t)        |j0                  t,        «      sJ ‚ddg|_        |j0                  ddgk(  sJ ‚|j2                  g k(  sJ ‚t        g|_        |j2                  t        gk(  sJ ‚ |dt	        j                  «       it	        j
                  «       ddgdd gd!d"gd#t        d$g¬%«      }|j                  dt	        j                  «       ik(  sJ ‚|j&                  t	        j
                  «       k(  sJ ‚|j*                  ddgk(  sJ ‚|j0                  d!d"gk(  sJ ‚|j.                  dd gk(  sJ ‚|j                  d#k(  sJ ‚|j2                  t        d$gk(  sJ ‚d&}t5        |«      d'|› d(�k(  sJ ‚t7        |«      d)|› d(�k(  sJ ‚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   �ŒAxY w)*NTFÚ.r)   ÚdefÚabcz%y-%m)Ú
check_utf8Ústrings_can_be_nullÚquoted_strings_can_be_nullÚdecimal_pointÚinclude_columnsÚinclude_missing_columnsÚauto_dict_encodeÚtimestamp_parsers)
re   r¹   rº   r»   r¼   r½   r¾   r¿   rÀ   Údefault_column_typez..r   éŸ† )r�   ÚcÚint16Únull)r\   Úwrœ   r�   r›   rˆ   zDataType expectedr˜   Úint32é{   Ú úN/AÚxxxÚyyyÚNÚnnÚTÚttÚFÚffiç  z%Y-%m-%d)Úcolumn_typesrÁ   Únull_valuesÚtrue_valuesÚfalse_valuesÚauto_dict_max_cardinalityrÀ   aÁ  
    check_utf8=True,
    column_types={'a': DataType(null)},
    default_column_type=DataType(int16),
    null_values=['N', 'nn'],
    true_values=['T', 'tt'],
    false_values=['F', 'ff'],
    decimal_point='.',
    strings_can_be_null=False,
    quoted_strings_can_be_null=True,
    include_columns=[],
    include_missing_columns=False,
    auto_dict_encode=False,
    auto_dict_max_cardinality=999,
    timestamp_parsers=['ISO8601', '%Y-%m-%d']z<pyarrow.csv.ConvertOptions>(rž   zConvertOptions()r
   r_   r   rg   r9   rÄ   rS   rT   Ú
ValueErrorr¼   r×   rÓ   Úfloat32rÅ   ÚschemarÇ   r   ÚbinaryÚ	TypeErrorrÁ   rt   rÔ   r0   rÕ   rÖ   rÀ   r¡   r6   )r¢   rW   rY   rÚ   r£   s        r   Útest_convert_optionsrÝ   -  s  € Ü
€CÙ‹5€DäØ˜˜u˜Ø" D˜MØ$(¨% =Ø˜C�jØ˜e U˜^Ð,Ø!&¨ Ø ˜Ø¤¨Ð1Ð2õ4ô !Ø�]ØØ Ø#(ØØ ˜Ø %ØÜ" GÐ,ÜŸH™H›Jõ
(ô 
�‰”zÕ	"Ø!ˆÔ÷ 
#ð ×)Ñ)¨AÒ-Ð-Ð-Ø%*€DÔ"Ø×)Ñ)¨UÒ2Ð2Ð2à×Ñ Ò"Ð"Ð"ä Ÿh™h›j¬r¯z©z«|Ñ<€DÔØ×Ñ¤b§h¡h£j´r·z±z³|Ñ DÒDÐDÐDØ%¨FÑ3€DÔØ×Ñ¤b§h¡h£j´r·w±w³yÑ AÒAÐAÐAä�Y‰Y˜œbŸh™h›jÐ)¨C´·±³Ð+=Ð>Ó?€FØ€DÔØ×Ñ¤b§h¡h£j´r·y±y³{Ñ CÒCÐCÐCàœrŸy™y›{Ð+Ð,€DÔØ×Ñ ¤b§i¡i£kÐ 2Ò2Ð2Ð2ä	�‰”yÐ(;Ö	<Ø  $˜KˆÔ÷ 
=ä	�‰”yÕ	!ØˆÔ÷ 
"ð ×#Ñ#Ð+Ð+Ð+Ü!Ÿy™y›{€DÔØ×#Ñ#¤r§y¡y£{Ò2Ð2Ð2Ø&€DÔØ×#Ñ#¤r§x¡x£zÒ1Ð1Ð1Ø#€DÔØ×#Ñ#Ð+Ð+Ð+ä	�‰”yÐ(;Ö	<Ø#&ˆÔ ÷ 
=ô �d×&Ñ&¬Ô-Ð-Ð-Ø�×!Ñ!Ñ!Ð!Ð!Ø�D×$Ñ$Ñ$Ð$Ð$Ø˜u�~€DÔØ×Ñ  u˜~Ò-Ð-Ð-ä�d×&Ñ&¬Ô-Ð-Ð-Ø˜u�~€DÔØ×Ñ  u˜~Ò-Ð-Ð-ä�d×'Ñ'¬Ô.Ð.Ð.Ø ˜€DÔØ×Ñ ¨ Ò.Ð.Ð.à×!Ñ! RÒ'Ð'Ð'Ü%˜Y€DÔØ×!Ñ!¤g YÒ.Ð.Ð.á˜S¤"§'¡'£)Ð,Ü#%§8¡8£:Ø ˜;°S¸$°KØ  $˜KÀ3Ü")¨:Ð!6ô	8€Dð
 ×Ñ ¤b§g¡g£iÐ 0Ò0Ð0Ð0Ø×#Ñ#¤r§x¡x£zÒ1Ð1Ð1Ø×Ñ  T˜{Ò*Ð*Ð*Ø×Ñ  d Ò+Ð+Ð+Ø×Ñ  T˜{Ò*Ð*Ð*Ø×)Ñ)¨SÒ0Ð0Ð0Ø×!Ñ!¤g¨zÐ%:Ò:Ð:Ð:ð1Ðô �‹:Ð8Ð9LÐ8MÈQÐOÒOÐOÐOÜˆt‹9˜/Ð*=Ð)>¸aÐ@Ò@Ð@Ñ@÷i 
#Ñ	"ú÷* 
=Ñ	<úç	!Ñ	!ú÷ 
=Ñ	<ús0   ÂUÉ
UÉ:U(Ì.U5ÕUÕU%Õ(U2Õ5U?c                  óö  — t         }  | «       }t        | ddgg d¢g d¢¬«       |j                  dkD  sJ ‚d|_        |j                  dk(  sJ ‚ | d¬	«      }|j                  dk(  sJ ‚|j                  «        d
}t	        j
                  t        j                  |¬«      5   | «       }d|_        |j                  «        d d d «       d}t        |«      d|› d�k(  sJ ‚t        |«      d|› d�k(  sJ ‚y # 1 sw Y   Œ4xY w)NTF)r)   r±   Ú|)ÚneededÚnoneÚ	all_valid)Úinclude_headerrª   Úquoting_styler   r•   i”&  )Ú
batch_sizez.WriteOptions: batch_size must be at least 1: 0r˜   zY
    include_header=True,
    batch_size=0,
    delimiter=',',
    quoting_style='needed'z<pyarrow.csv.WriteOptions>(rž   zWriteOptions()
r   r_   rå   rŸ   rS   rT   r9   r    r¡   r6   )rW   rY   r™   r£   s       r   Útest_write_optionsræ   ž  sø   € Ü
€CÙ‹5€DäØ˜T 5˜MÒ5EÚ5õ7ð �?‰?˜QÒÐÐØ€D„OØ�?‰?˜eÒ#Ð#Ð#á˜$Ô€DØ�?‰?˜dÒ"Ð"Ð"à‡M�M„Oà<€EÜ	�‰”r—‘¨eÖ	4Ù‹uˆØˆŒØ�‰Œ÷ 
5ð
Ðô �‹:Ð6Ð7JÐ6KÈ1ÐMÒMÐMÐMÜˆt‹9˜-Ð(;Ð'<¸AÐ>Ò>Ð>Ñ>÷ 
5Ð	4ús   ÂC/Ã/C8c                   óÂ   — e Zd ZdZej
                  d„ «       Zeej
                  d„ «       «       Ze	d„ «       Z
d„ Zd„ Zej                  j                  d„ «       Zd„ Zd	„ Zy
)ÚBaseTestCSVzDCommon tests which are shared by streaming and non streaming readersc                 ó   — t         ‚)zš
        :param b: bytes to be parsed
        :param kwargs: arguments passed on to open the csv file
        :return: b parsed as a single Table
        ©ÚNotImplementedError©rm   r�   Úkwargss      r   Ú
read_byteszBaseTestCSV.read_bytesÂ  s
   € ô "Ð!rL   c                 ó   — t         ‚)z#Whether this test is multi-threadedrê   ©rm   s    r   r�   zBaseTestCSV.use_threadsË  s
   € ô "Ð!rL   c                 óZ   — | j                   t        |«      k(  sJ ‚| j                  |k(  sJ ‚y r   )Únum_columnsÚlenrJ   )ÚtableÚnamess     r   Úcheck_nameszBaseTestCSV.check_namesÑ  s.   € à× Ñ ¤C¨£JÒ.Ð.Ð.Ø×!Ñ! UÒ*Ð*Ñ*rL   c                 ó  — d}t        «       }d|_        | j                  ||¬«      }| j                  |ddg«       |j	                  «       ddgdd	gd
œk(  sJ ‚d|_        | j                  ||¬«      }| j                  |dd	g«       |j	                  «       g g dœk(  sJ ‚d|_        t        j                  t        j                  «      5  | j                  ||¬«      }d d d «       d}d|_        | j                  ||¬«      }| j                  |ddg«       |j	                  «       dgd	gdœk(  sJ ‚d|_        ddg|_	        | j                  ||¬«      }| j                  |ddg«       |j	                  «       g g dœk(  sJ ‚y # 1 sw Y   Œ£xY w)Nó   ab,cd
ef,gh
ij,kl
mn,op
rN   ©Úread_optionsÚefÚghÚijÚmnÚklÚop)rû   rü   r�   )rþ   r   r‚   ó   abcd
,,,,,
ij,kl
mn,op
r   )rý   rÿ   )
r   r‘   rî   rö   Ú	to_pydictrS   rT   r9   r    rJ   ©rm   rl   rY   rô   s       r   Útest_header_skip_rowsz!BaseTestCSV.test_header_skip_rowsÖ  s®  € Ø.ˆä‹}ˆØˆŒØ—‘ °4�Ó8ˆØ×Ñ˜  t Ô-Ø�‰Ó Ø˜�,Ø˜�,ñ%
ò 
ð 	
ð 
ð
 ˆŒØ—‘ °4�Ó8ˆØ×Ñ˜  t Ô-Ø�‰Ó ØØñ%
ò 
ð 	
ð 
ð
 ˆŒÜ�]‰]œ2Ÿ?™?Õ+à—O‘O D°t�OÓ<ˆE÷ ,ð
 .ˆØˆŒØ—‘ °4�Ó8ˆØ×Ñ˜  t Ô-Ø�‰Ó Ø�&Ø�&ñ%
ò 
ð 	
ð 
ð ˆŒØ! 4˜LˆÔØ—‘ °4�Ó8ˆØ×Ñ˜  t Ô-Ø�‰Ó ØØñ%
ò 
ð 	
ñ 
÷' ,Ð+ús   ÃE=Å=Fc                 óT  — d}t        «       }d|_        | j                  ||¬«      }| j                  |ddg«       |j	                  «       ddgdd	gd
œk(  sJ ‚d|_        | j                  ||¬«      }| j                  |ddg«       |j	                  «       g g d
œk(  sJ ‚d|_        | j                  ||¬«      }| j                  |ddg«       |j	                  «       g g d
œk(  sJ ‚d}d|_        ddg|_        | j                  ||¬«      }| j                  |ddg«       |j	                  «       ddgdd	gdœk(  sJ ‚t        «       }d}d|_        t        «       }d|_        | j                  |||¬«      }| j                  |ddg«       |j	                  «       dgd	gd
œk(  sJ ‚d|_        d|_        | j                  |||¬«      }| j                  |ddg«       |j	                  «       dgd	gd
œk(  sJ ‚t        «       }t        dd¬«      \  }}d|_        t        |«      dz  |_        | j                  ||¬«      }|j                  |j                  k(  sJ ‚|j                  dk(  sJ ‚|j	                  «       }|j	                  «       j                  «       D ]  \  }}|dd  ||   k(  rŒJ ‚ | j                  |||¬«      }|j                  |j                  k(  sJ ‚|j                  dk(  sJ ‚|j	                  «       }|j	                  «       j                  «       D ]  \  }}|dd  ||   k(  rŒJ ‚ t        ddd¬«      \  }}t        «       }d|_        d |_        |j                  j                  |_        | j                  |||¬«      }|j                  |j                  k(  sJ ‚|j                  |j                  |j                  z
  |j                  z
  k(  sJ ‚|j	                  «       }|j	                  «       j                  «       D ])  \  }}||j                  |j                  z   d  ||   k(  rŒ)J ‚ y )!Nrø   rN   rù   r‹   rŒ   rý   rþ   rÿ   r   ©r‹   rŒ   r�   r‚   r  r   Úf0Úf1©r  r  s#   ab,cd
"e
f","g

h"
"ij","k
l"
mn,opT©rú   Úparse_optionsé   r~   r(   ©r    r!   i„  r€   éd   éÈ   F)r    r!   r?   é%   é)   )r   r”   rî   rö   r  rJ   r	   r®   r—   rG   ró   rÚ   r!   rP   r‘   rõ   )	rm   rl   rY   rô   Ú
parse_optsrF   Ú
table_dictrZ   r[   s	            r   Útest_skip_rows_after_namesz&BaseTestCSV.test_skip_rows_after_names  sŸ  € Ø.ˆä‹}ˆØ%&ˆÔ"Ø—‘ °4�Ó8ˆØ×Ñ˜  t Ô-Ø�‰Ó Ø˜�,Ø˜�,ñ%
ò 
ð 	
ð 
ð &'ˆÔ"Ø—‘ °4�Ó8ˆØ×Ñ˜  t Ô-Ø�‰Ó ØØñ%
ò 
ð 	
ð 
ð &'ˆÔ"Ø—‘ °4�Ó8ˆØ×Ñ˜  t Ô-Ø�‰Ó ØØñ%
ò 
ð 	
ð 
ð .ˆØ%&ˆÔ"Ø! 4˜LˆÔØ—‘ °4�Ó8ˆØ×Ñ˜  t Ô-Ø�‰Ó Ø˜�,Ø˜�,ñ%
ò 
ð 	
ð 
ô ‹}ˆð =ˆØ%&ˆÔ"Ü!“^ˆ
Ø(,ˆ
Ô%Ø—‘ °4Ø.8ð  ó :ˆà×Ñ˜  t Ô-Ø�‰Ó Ø�&Ø�&ñ%
ò 
ð 	
ð 
ð &'ˆÔ"ØˆŒØ—‘ °4Ø.8ð  ó :ˆà×Ñ˜  t Ô-Ø�‰Ó Ø�&Ø�&ñ%
ò 
ð 	
ð 
ô ‹}ˆô )°!¸dÔC‰ˆˆhØ%(ˆÔ"Ü˜d›) b™.ˆŒØ—‘ °4�Ó8ˆØ�|‰|˜xŸ™Ò.Ð.Ð.Ø�~‰~ Ò$Ð$Ð$Ø—_‘_Ó&ˆ
Ø$×.Ñ.Ó0×6Ñ6Ö8‰LˆD�&Ø˜#˜$�< :¨dÑ#3Ó3Ð3Ð3ð 9ð —‘ °4Ø.8ð  ó :ˆà�|‰|˜xŸ™Ò.Ð.Ð.Ø�~‰~ Ò$Ð$Ð$Ø—_‘_Ó&ˆ
Ø$×.Ñ.Ó0×6Ñ6Ö8‰LˆD�&Ø˜#˜$�< :¨dÑ#3Ó3Ð3Ð3ð 9ô )°!¸cØ5:ô<‰ˆˆhä‹}ˆØˆŒØ%'ˆÔ"Ø$ŸO™O×1Ñ1ˆÔØ—‘ °4Ø.8ð  ó :ˆà�|‰|˜xŸ™Ò.Ð.Ð.Ø—‘Ø×!Ñ! D§N¡NÑ2Ø×*Ñ*ñ+ò+ð 	,ð +ð —_‘_Ó&ˆ
Ø$×.Ñ.Ó0×6Ñ6Ö8‰LˆD�&Ø˜4Ÿ>™>¨D×,FÑ,FÑFÐGÐHØ˜tÑ$ó%ð &ð %ñ 9rL   c                 ó	  ‡ — ˆ fd„}t        ddd¬«      \  }}t        «       }t        |«      dz  |_        t	        «       }dt        j                  «       i|_        |dz   } |d	d
«      }t        j                  t
        j                  |¬«      5  ‰ j                  |||¬«       d d d «       |dz   } |dd
|«      }	t        j                  t
        j                  |	¬«      5  ‰ j                  |||¬«       d d d «       d}
||
z   } |dd
|
dd j                  d«      «      }t        j                  t
        j                  |¬«      5  ‰ j                  |||¬«       d d d «       d|_        t        j                  t
        j                  |¬«      5  ‰ j                  |||¬«       d d d «       t        j                  t
        j                  |	¬«      5  ‰ j                  |||¬«       d d d «       t        j                  t
        j                  |¬«      5  ‰ j                  |||¬«       d d d «       d|_        t        ddd¬«      \  }}g d¢|_        |dz   } |d	d«      }t        j                  t
        j                  |¬«      5  ‰ j                  |||¬«       d d d «       ||
z   } |dd|
dd j                  d«      «      }t        j                  t
        j                  |¬«      5  ‰ j                  |||¬«       d d d «       |dz   } |dd«      }	|	j                  t        |«      «      }	t        j                  t
        j                  |	¬«      5  ‰ j                  |||¬«       d d d «       d|_        t        j                  t
        j                  |¬«      5  ‰ j                  |||¬«       d d d «       t        j                  t
        j                  |	¬«      5  ‰ j                  |||¬«       d d d «       y # 1 sw Y   �ŒWxY w# 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   �ŒJxY w# 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   ŒýxY w# 1 sw Y   ŒÀxY w# 1 sw Y   y xY w)Nc                 óT   •— ‰j                   rd}nd|› d�} | j                  |g|¢­Ž S )NrÉ   zRow #z: )r�   Úformat)Ú
msg_formatrD   ÚargsÚrow_inform   s       €r   Ú
format_msgz@BaseTestCSV.test_row_number_offset_in_errors.<locals>.format_msgo  s6   ø€ Ø×ÒØ‘à" 3 % r˜?�Ø$�:×$Ñ$ XÐ5°Ò5Ð5rL   r‚   r  T)r?   r�   rœ   s   1,2
z{}Expected 4 columns, got 2éf   r˜   ©rú   Úconvert_optionss	   a,b,c,d
zDIn CSV column #0: {}CSV conversion error to int32: invalid value 'a's  this is a long rowthis is a long rowthis is a long rowthis is a long rowthis is a long rowthis is a long rowthis is a long rowthis is a long rowthis is a long rowthis is a long rowthis is a long rowthis is a long rowthis is a long rowthis is a long rowthis is a long row,3
z#{}Expected 4 columns, got 2: {} ...r   é`   zutf-8é/   F©rœ   r�   rÃ   Údée   é   )rG   r   ró   r—   r
   r9   rÇ   rÓ   rS   rT   r    rî   Údecoder”   rJ   r  r‘   )rm   r  rB   rA   rú   r  Úcsv_bad_columnsÚmessage_columnsÚcsv_bad_typeÚmessage_valueÚlong_rowÚcsv_bad_columns_longÚmessage_longs   `            r   Ú test_row_number_offset_in_errorsz,BaseTestCSV.test_row_number_offset_in_errorsl  s	  ø€ ô	6ô !  C°TÔ:‰ˆˆQä"“}ˆÜ"% c£(¨Q¡,ˆÔÜ(Ó*ˆØ(+¬R¯X©X«ZÐ'8ˆÔ$ð  
Ñ*ˆÙ$Ð%BÀCÓHˆÜ�]‰]œ2Ÿ?™?°/ÖBØ�O‰O˜OØ)5Ø,;ð ô =÷ Cð
 ˜^Ñ+ˆÙ"ð?à�óˆô �]‰]œ2Ÿ?™?°-Ö@Ø�O‰O˜LØ)5Ø,;ð ô =÷ Að
 <ˆØ" X™~ÐÙ!Ð"GÈØ"*¨1¨R .×"7Ñ"7¸Ó"@óBˆä�]‰]œ2Ÿ?™?°,Ö?Ø�O‰OÐ0Ø)5Ø,;ð ô =÷ @ð .0ˆÔ*ä�]‰]œ2Ÿ?™?°/ÖBØ�O‰O˜OØ)5Ø,;ð ô =÷ Cô
 �]‰]œ2Ÿ?™?°-Ö@Ø�O‰O˜LØ)5Ø,;ð ô =÷ Aô
 �]‰]œ2Ÿ?™?°,Ö?Ø�O‰OÐ0Ø)5Ø,;ð ô =÷ @ð
 ./ˆÔ*ô !  C°UÔ;‰ˆˆQÚ$8ˆÔ!Ø 
Ñ*ˆÙ$Ð%BÀCÓHˆÜ�]‰]œ2Ÿ?™?°/ÖBØ�O‰O˜OØ)5Ø,;ð ô =÷ Cð
  # X™~ÐÙ!Ð"GÈØ"*¨1¨R .×"7Ñ"7¸Ó"@óBˆä�]‰]œ2Ÿ?™?°,Ö?Ø�O‰OÐ0Ø)5Ø,;ð ô =÷ @ð
 ˜^Ñ+ˆÙ"ð?àóˆð &×,Ñ,¬S°«XÓ6ˆÜ�]‰]œ2Ÿ?™?°-Ö@Ø�O‰O˜LØ)5Ø,;ð ô =÷ Að "$ˆÔÜ�]‰]œ2Ÿ?™?°/ÖBØ�O‰O˜OØ)5Ø,;ð ô =÷ Cô
 �]‰]œ2Ÿ?™?°-Ö@Ø�O‰O˜LØ)5Ø,;ð ô =÷ AÐ@÷a CÑBú÷ AÑ@ú÷ @Ñ?ú÷ CÑBú÷
 AÑ@ú÷
 @Ñ?ú÷ CÑBú÷ @Ñ?ú÷ AÐ@ú÷ CÐBú÷
 AÐ@ús„   ÂO7ÃPÅPÆPÇP+ÈP8ÊQË$QÍQÎQ+ÏQ7Ï7PÐPÐPÐP(Ð+P5Ð8QÑQÑQÑQ(Ñ+Q4Ñ7R c                 óx  ‡ — d}t        «       }t        j                  t        d¬«      5  ‰ j	                  ||¬«       d d d «       t        d«      |_        ‰ j	                  ||¬«      }|j                  «       ddgdd	gd
œk(  sJ ‚ˆ fd„}t        dd |d«      d«      t        dd |d«      d«      g}|j                  j                  |k(  sJ ‚t        d«      |_        t        j                  t        d¬«      5  ‰ j	                  ||¬«       d d d «       t        dd |d«      d«      g}|j                  j                  |k(  sJ ‚t        d«      |_        |j                  |j                  |«      «      }‰ j	                  ||¬«      }|j                  «       ddgdd	gd
œk(  sJ ‚y # 1 sw Y   �ŒhxY w# 1 sw Y   Œ¦xY w)Ns   a,b
c
d,e
f,g,h
i,j
zExpected 2 columns, got 1: cr˜   ©r  r¦   r"  r"   ÚeÚjr›   c                 ó$   •— ‰j                   rd S | S r   )r�   )rˆ   rm   s    €r   Úrow_numz5BaseTestCSV.test_invalid_row_handler.<locals>.row_numå  s   ø€ Ø×+Ò+�4Ð2°Ð2rL   r   rN   rÃ   r�   r‚   zf,g,hÚerror)r	   rS   rT   rØ   rî   ri   r°   r  r   rl   rb   rc   )rm   r¢   rl   r  rô   r3  Úexpected_rowss   `      r   Útest_invalid_row_handlerz$BaseTestCSV.test_invalid_row_handlerÕ  s½  ø€ Ø+ˆÜ!“^ˆ
Ü�]‰]ÜØ4ö6ð �O‰O˜D°
ˆOÔ;÷6ô *;¸6Ó)Bˆ
Ô&Ø—‘ °J�Ó?ˆØ�‰Ó Ø�s�Ø�s�ñ%
ò 
ð 	
ð 
ô
	3ô �q˜!™W Q›Z¨Ó-Ü�q˜!™W Q›Z¨Ó1ð
ˆð ×-Ñ-×2Ñ2°mÒCÐCÐCô *;¸7Ó)Cˆ
Ô&Ü�]‰]ÜØ4ö6ð �O‰O˜D°
ˆOÔ;÷6ô $ A q©'°!«*°cÓ:Ð;ˆØ×-Ñ-×2Ñ2°mÒCÐCÐCô *;¸6Ó)Bˆ
Ô&Ø"×(Ñ(¨×)<Ñ)<¸ZÓ)HÓIˆ
à—‘ °J�Ó?ˆØ�‰Ó Ø�s�Ø�s�ñ%
ò 
ð 	
ñ 
÷G6ñ 6ú÷.6ð 6ús   ©F#Ã7F0Æ#F-Æ0F9c                 óx  — d}ddgddgddgdœ}t        d	d
«      D ]?  }| j                  |t        d¬«      t        |¬«      ¬«      j	                  «       }||k(  rŒ?J ‚ t        d	d«      D ]C  }t        j                  t        d¬«      5  | j                  |t        |¬«      ¬«       d d d «       ŒE y # 1 sw Y   ŒPxY w)Ns   a,b,c
d,e,"f
"
g,h,i
r"  Úgr0  Úhzf
r"   ©rœ   r�   rÃ   r…   é   T)r®   r–   ©r  rú   r€   z#cell values spanning multiple linesr˜   rù   )r   rî   r	   r   r  rS   rT   rØ   )rm   rl   rF   r—   r"  s        r   Útest_chunker_out_of_syncz$BaseTestCSV.test_chunker_out_of_sync   sÎ   € ð 0ˆà�s�Ø�s�Ø˜�ñ
ˆô
    2ž,ˆJà—‘Ø¤LÀDÔ$IÜ(°JÔ?ð  ó AçAJÁÃð ð ˜“=Ð �=ð 'ô    2ž,ˆJÜ—‘œzØ%JöLà—‘Ø¤{¸jÔ'Ið  ô K÷Lð Lñ '÷Lð Lús   ÂB0Â0B9	N)rz   r{   r|   Ú__doc__r¸   Úabstractmethodrî   Úpropertyr�   Ústaticmethodrö   r  r  rS   ÚmarkÚnumpyr-  r6  r=  rO   rL   r   rè   rè   ¿  s�   „ ÙNà×Ññ"ó ð"ð Ø×Ññ"ó ó ð"ð ñ+ó ð+ò+
òZg&ðR ‡[�[×Ññf=ó ðf=òP)
óVKrL   rè   c                   óH  — e Zd Zddœd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd	„ Z	d
„ Z
d„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd „ Z d!„ Z!d"„ Z"d#„ Z#e$jJ                  jL                  d$„ «       Z'e$jJ                  jL                  d%„ «       Z(y&)'ÚBaseCSVTableReadT)Úvalidate_fullc                óÖ   — t        | j                  t        «      sJ ‚|j                  dt	        «       «      }| j                  |_        t        |g|¢­i |¤Ž}|j                  |¬«       |S )a=  
        Reads the CSV file into memory using pyarrow's read_csv
        csv The CSV bytes
        args Positional arguments to be forwarded to pyarrow's read_csv
        validate_full Whether or not to fully validate the resulting table
        kwargs Keyword arguments to be forwarded to pyarrow's read_csv
        rú   ©Úfull)rt   r�   ÚboolÚ
setdefaultr   r   rŸ   )rm   rB   rF  r  rí   rú   rô   s          r   r   zBaseCSVTableRead.read_csv  sc   € ô ˜$×*Ñ*¬DÔ1Ð1Ð1Ø×(Ñ(¨¼»ÓGˆØ#'×#3Ñ#3ˆÔ Ü˜Ð.˜tÒ. vÑ.ˆØ�‰˜MˆÔ*ØˆrL   c                 óN   —  | j                   t        j                  |«      fi |¤ŽS r   )r   r9   Ú	py_bufferrì   s      r   rî   zBaseCSVTableRead.read_bytes+  ó    € Øˆt�}‰}œRŸ\™\¨!›_Ñ7°Ñ7Ð7rL   c                 óP  — d}dgdgdœ}t        j                  |«      }| j                  |«      }|j                  «       |k(  sJ ‚t        j                  |j                  «       «      }t        j                  t        «      5  | j                  |«       d d d «       y # 1 sw Y   y xY w)Ns   a,b
1,2
rN   r   r›   )	r.   ÚBytesIOr   r  r/   r%  rS   rT   rÜ   )rm   ÚdataÚexpected_dataÚbiorô   Úsios         r   Útest_file_objectz!BaseCSVTableRead.test_file_object.  s~   € ØˆØ ˜c¨¨Ñ,ˆÜ�j‰j˜ÓˆØ—‘˜cÓ"ˆØ�‰Ó  MÒ1Ð1Ð1ä�k‰k˜$Ÿ+™+›-Ó(ˆÜ�]‰]œ9Õ%Ø�M‰M˜#Ô÷ &×%Ñ%ús   ÂBÂB%c                 ó¬   — d}| j                  |«      }t        |t        j                  «      sJ ‚| j	                  |g d¢«       |j
                  dk(  sJ ‚y )Nó   abc,def,gh
)r¸   r·   rü   r   )rî   rt   r9   r<   rö   r!   ©rm   rl   rô   s      r   Útest_headerzBaseCSVTableRead.test_header9  sL   € ØˆØ—‘ Ó%ˆÜ˜%¤§¡Ô*Ð*Ð*Ø×Ñ˜Ò 4Ô5Ø�~‰~ Ò"Ð"Ñ"rL   c                 ób   — d}dgdgdœ}| j                  |«      }|j                  «       |k(  sJ ‚y )Ns   ï»¿a,b
1,2
rN   r   r›   ©rî   r  )rm   rl   rR  rô   s       r   Útest_bomzBaseCSVTableRead.test_bom@  s8   € Ø(ˆØ ˜c¨¨Ñ,ˆØ—‘ Ó%ˆØ�‰Ó  MÒ1Ð1Ñ1rL   c                 óê   — g d¢}dD ]j  }d|fD ]a  }|j                  |«      |z   }| j                  |«      }t        |j                  «       «      dk(  sJ ‚|j	                  «       g d¢g d¢dœk(  rŒaJ ‚ Œl y )N)s   a,bs   1,2s   3,4s   56,78)ó   
ó   ó   
rL   rN   )rN   r�   é8   )r   r‚   éN   r›   )r4   rî   ró   Ú
to_batchesr  )rm   rl   Úline_endingÚfile_endingrQ  rô   s         r   Útest_one_chunkzBaseCSVTableRead.test_one_chunkF  s…   € ò 2ˆÛ2ˆKØ # [Ó1�Ø"×'Ñ'¨Ó-°Ñ;�ØŸ™¨Ó-�Ü˜5×+Ñ+Ó-Ó.°!Ò3Ð3Ð3Ø—‘Ó(Ú#Ú#ñ-ó ð ð ñ	  2ñ 3rL   c                 óØ  — d}t        «       }ddg|_        | j                  ||¬«      }| j                  |ddg«       |j	                  «       g d¢g d¢dœk(  sJ ‚d|_        | j                  ||¬«      }| j                  |ddg«       |j	                  «       d	gd
gdœk(  sJ ‚d|_        | j                  ||¬«      }| j                  |ddg«       |j	                  «       g g dœk(  sJ ‚d|_        t        j                  t        j                  «      5  | j                  ||¬«      }d d d «       d|_        g d¢|_        t        j                  t        j                  d¬«      5  | j                  ||¬«      }d d d «       d}d|_        ddg|_        | j                  ||¬«      }| j                  |ddg«       |j	                  «       dd	gdd
gdœk(  sJ ‚y # 1 sw Y   Œ°xY w# 1 sw Y   ŒkxY w)Nrø   rˆ   r§   rù   ©r‹   rû   rý   rþ   ©rŒ   rü   rÿ   r   ©rˆ   r§   r�   rþ   r   r‚   r~   r   )rˆ   r§   r©   úExpected 3 columns, got 2r˜   r  r   rý   rÿ   )
r   rJ   rî   rö   r  r‘   rS   rT   r9   r    r  s       r   Útest_header_column_namesz)BaseCSVTableRead.test_header_column_namesT  sû  € Ø.ˆä‹}ˆØ  #˜JˆÔØ—‘ °4�Ó8ˆØ×Ñ˜  c 
Ô+Ø�‰Ó Ú)Ú)ñ%
ò 
ð 	
ð 
ð
 ˆŒØ—‘ °4�Ó8ˆØ×Ñ˜  c 
Ô+Ø�‰Ó Ø�Ø�ñ%
ò 
ð 	
ð 
ð
 ˆŒØ—‘ °4�Ó8ˆØ×Ñ˜  c 
Ô+Ø�‰Ó ØØñ%
ò 
ð 	
ð 
ð
 ˆŒÜ�]‰]œ2Ÿ?™?Õ+à—O‘O D°t�OÓ<ˆE÷ ,ð
 ˆŒÚ+ˆÔÜ�]‰]œ2Ÿ?™?Ø!<ö>à—O‘O D°t�OÓ<ˆE÷>ð
 .ˆØˆŒØ  #˜JˆÔØ—‘ °4�Ó8ˆØ×Ñ˜  c 
Ô+Ø�‰Ó Ø˜�Ø˜�ñ%
ò 
ð 	
ñ 
÷# ,Ð+ú÷>ð >ús   ÄGÅ"G ÇGÇ G)c                 óä  — d}t        «       }d|_        | j                  ||¬«      }| j                  |ddg«       |j	                  «       g d¢g d¢dœk(  sJ ‚d	|_        | j                  ||¬«      }| j                  |ddg«       |j	                  «       d
gdgdœk(  sJ ‚d|_        t        j                  t        j                  «      5  | j                  ||¬«      }d d d «       y # 1 sw Y   y xY w)Nrø   Trù   r  r  rh  ri  r	  r�   rþ   r   r‚   )
r   r’   rî   rö   r  r‘   rS   rT   r9   r    r  s       r   Ú%test_header_autogenerate_column_namesz6BaseCSVTableRead.test_header_autogenerate_column_names‡  sî   € Ø.ˆä‹}ˆØ)-ˆÔ&Ø—‘ °4�Ó8ˆØ×Ñ˜  t Ô-Ø�‰Ó Ú*Ú*ñ%
ò 
ð 	
ð 
ð
 ˆŒØ—‘ °4�Ó8ˆØ×Ñ˜  t Ô-Ø�‰Ó Ø�&Ø�&ñ%
ò 
ð 	
ð 
ð ˆŒÜ�]‰]œ2Ÿ?™?Õ+Ø—O‘O D°t�OÓ<ˆE÷ ,×+Ñ+ús   Ã	C&Ã&C/c                 óR  — d}t        «       }dg|_        | j                  ||¬«      }| j                  |dg«       |j	                  «       dg d¢ik(  sJ ‚ddg|_        | j                  ||¬«      }t        j                  dt        j                  «       fdt        j                  «       fg«      }|j                  |k(  sJ ‚|j	                  «       g d¢g d¢dœk(  sJ ‚g d¢|_        t        j                  t        d	¬
«      5  | j                  ||¬«       d d d «       y # 1 sw Y   y xY w)Nrø   r‹   ©r  ©rû   rý   rþ   rŒ   ©rü   rÿ   r   )rŒ   r‹   ©Úxxr‹   Úyyz9Column 'xx' in include_columns does not exist in CSV filer˜   )r
   r½   rî   rö   r  r9   rÚ   r   rS   rT   ÚKeyError)rm   rl   r  rô   rÚ   s        r   Útest_include_columnsz%BaseCSVTableRead.test_include_columns   s$  € Ø.ˆä(Ó*ˆØ+/¨&ˆÔ'Ø—‘ °o�ÓFˆØ×Ñ˜  Ô'Ø�‰Ó ØÒ$ð%
ò 
ð 	
ð 
ð
 ,0°¨,ˆÔ'Ø—‘ °o�ÓFˆÜ—‘˜T¤2§9¡9£;Ð/Ø!¤2§9¡9£;Ð/ð1ó 2ˆà�|‰|˜vÒ%Ð%Ð%Ø�‰Ó Ú$Ú$ñ%
ò 
ð 	
ð 
ò +=ˆÔ'Ü�]‰]œ8ð">ö?ð �O‰O˜D°/ˆOÔB÷?÷ ?ñ ?ús   Ä DÄD&c                 ó   — d}t        «       }t        «       }g d¢|_        d|_        | j	                  |||¬«      }t        j                  dt        j                  «       fdt        j                  «       fdt        j                  «       fg«      }|j                  |k(  sJ ‚|j                  «       g d¢g d	¢g d¢dœk(  sJ ‚ddg|_
        dd
g|_        | j	                  |||¬«      }t        j                  dt        j                  «       fd
t        j                  «       fg«      }|j                  |k(  sJ ‚|j                  «       g d¢g d¢dœk(  sJ ‚t        j                  «       t        j                  «       dœ|_        | j	                  |||¬«      }t        j                  dt        j                  «       fd
t        j                  «       fg«      }|j                  |k(  sJ ‚|j                  «       g d¢g d¢dœk(  sJ ‚y )Nrø   rs  Tr  rt  r‹   ru  ©NNNrq  rŒ   ri  )NNNN)ru  rŒ   )s   cds   ghs   kls   op)r   r
   r½   r¾   rî   r9   rÚ   rÅ   r   r  rJ   rÛ   rÇ   rÓ   ©rm   rl   rú   r  rô   rÚ   s         r   Útest_include_missing_columnsz-BaseCSVTableRead.test_include_missing_columns½  sî  € Ø.ˆä"“}ˆÜ(Ó*ˆÚ*<ˆÔ'Ø26ˆÔ/Ø—‘ °<Ø0?ð  ó Aˆä—‘˜T¤2§7¡7£9Ð-Ø!¤2§9¡9£;Ð/Ø!¤2§7¡7£9Ð-ð/ó 0ˆð �|‰|˜vÒ%Ð%Ð%Ø�‰Ó Ú$Ú$Ú$ñ%
ò 
ð 	
ð 
ð &*¨4 LˆÔ!Ø+/°¨,ˆÔ'Ø—‘ °<Ø0?ð  ó Aˆä—‘˜T¤2§9¡9£;Ð/Ø!¤2§7¡7£9Ð-ð/ó 0ˆà�|‰|˜vÒ%Ð%Ð%Ø�‰Ó Ú*Ú*ñ%
ò 
ð 	
ð 
ô /1¯i©i«kÜ.0¯h©h«jñ(:ˆÔ$à—‘ °<Ø0?ð  ó Aˆä—‘˜T¤2§9¡9£;Ð/Ø!¤2§8¡8£:Ð.ð0ó 1ˆà�|‰|˜vÒ%Ð%Ð%Ø�‰Ó Ú.Ú*ñ%
ò 
ð 	
ñ 
rL   c                 ó2  — d}| j                  |«      }t        j                  dt        j                  «       fdt        j                  «       fdt        j                  «       fg«      }|j                  |k(  sJ ‚|j	                  «       ddgddgd	d
gdœk(  sJ ‚y )Ns   a,b,c
1,2,3
4,5,6
rœ   r�   rÃ   rN   r‚   r   r~   r�   rƒ   r:  )rî   r9   rÚ   r;   r  ©rm   rl   rô   rÚ   s       r   Útest_simple_intsz!BaseCSVTableRead.test_simple_intsê  s˜   € à'ˆØ—‘ Ó%ˆÜ—‘˜S¤"§(¡(£*Ð-Ø ¤"§(¡(£*Ð-Ø ¤"§(¡(£*Ð-ð/ó 0ˆð �|‰|˜vÒ%Ð%Ð%Ø�‰Ó Ø�Q�Ø�Q�Ø�Q�ñ%
ò 
ð 	
ñ 
rL   c                 ób  — d}| j                  |«      }t        j                  dt        j                  «       fdt        j                  «       fdt        j
                  «       fdt        j                  «       fg«      }|j                  |k(  sJ ‚|j                  «       ddgdd	gd
dgddgdœk(  sJ ‚y )Ns    a,b,c,d
1,2,3,0
4.0,-5,foo,True
rœ   r�   rÃ   r"  ç      ð?g      @r   éûÿÿÿÚ3ÚfooFTr!  )rî   r9   rÚ   Úfloat64r;   r   Úbool_r  r}  s       r   Útest_simple_variedz#BaseCSVTableRead.test_simple_variedø  s­   € à5ˆØ—‘ Ó%ˆÜ—‘˜S¤"§*¡*£,Ð/Ø ¤"§(¡(£*Ð-Ø ¤"§)¡)£+Ð.Ø ¤"§(¡(£*Ð-ð/ó 0ˆð �|‰|˜vÒ%Ð%Ð%Ø�‰Ó Ø�s�Ø�R�Ø�u�Ø˜�ñ	%
ò 
ð 	
ñ 
rL   c           
      óÂ  — d}| j                  |«      }t        j                  dt        j                  «       fdt        j                  «       fdt        j
                  «       fdt        j                  «       fdt        j                  «       fdt        j                  «       fg«      }|j                  |k(  sJ ‚|j                  «       g d¢g d	¢g d
¢g d¢g d¢g d¢dœk(  sJ ‚y )NsC   a,b,c,d,e,f
1,2,,,3,N/A
nan,-5,foo,,nan,TRUE
4.5,#N/A,nan,,ÿ,false
rœ   r�   rÃ   r"  r0  Úf)r€  Ng      @)r   r�  N)rÉ   rƒ  Únanry  )ó   3s   nanó   ÿ)NTF)rœ   r�   rÃ   r"  r0  rˆ  )
rî   r9   rÚ   r„  r;   r   rÅ   rÛ   r…  r  r}  s       r   Útest_simple_nullsz"BaseCSVTableRead.test_simple_nulls  sÃ   € ð.ˆð —‘ Ó%ˆÜ—‘˜S¤"§*¡*£,Ð/Ø ¤"§(¡(£*Ð-Ø ¤"§)¡)£+Ð.Ø ¤"§'¡'£)Ð,Ø ¤"§)¡)£+Ð.Ø ¤"§(¡(£*Ð-ð/ó 0ˆð �|‰|˜vÒ%Ð%Ð%Ø�‰Ó Ú!ÚÚ#Ú#Ú(Ú$ñ%
ò 
ð 	
ñ 
rL   c                 ó6  — t        d¬«      }d}| j                  ||¬«      }t        j                  dt        j                  «       fdt        j
                  «       fg«      }|j                  |k(  sJ ‚|j                  «       g d¢g d¢d	œk(  sJ ‚t        d
¬«      }| j                  |||¬«      }t        j                  dt        j
                  «       fdt        j                  «       fg«      }|j                  |k(  sJ ‚|j                  «       g d¢g d¢d	œk(  sJ ‚y )NÚ;©rª   s   a;b
1.25;2,5
NA;-3
-4;NAr/  rœ   r�   )g      ô?Ng      À)z2,5z-3ÚNAr›   r)   )r¼   )r  r  )z1.25r�  z-4)ç      @g      ÀN)r	   rî   r9   rÚ   r„  r   r  r
   )rm   r  rl   rô   rÚ   r  s         r   Útest_decimal_pointz#BaseCSVTableRead.test_decimal_point  s  € ä$¨sÔ3ˆØ-ˆà—‘ °M�ÓBˆÜ—‘˜S¤"§*¡*£,Ð/Ø ¤"§)¡)£+Ð.ð0ó 1ˆà�|‰|˜vÒ%Ð%Ð%Ø�‰Ó Ú#Ú$ñ%
ò 
ð 	
ð 
ô
 )°sÔ;ˆØ—‘ °MØ0?ð  ó Aˆä—‘˜S¤"§)¡)£+Ð.Ø ¤"§*¡*£,Ð/ð1ó 2ˆà�|‰|˜vÒ%Ð%Ð%Ø�‰Ó Ú%Ú"ñ%
ò 
ð 	
ñ 
rL   c                 ó   — d}| j                  |«      }t        j                  dt        j                  «       fdt        j                  d«      fdt        j                  d«      fg«      }|j                  |k(  sJ ‚|j                  «       ddgt        dd	d	«      t        dd
dd	«      gt        dd	d	dddd«      t        dd
dd	ddd«      gdœk(  sJ ‚y )Nsk   a,b,c
1970,1970-01-01 00:00:00,1970-01-01 00:00:00.123
1989,1989-07-14 01:00:00,1989-07-14 01:00:00.123456
rœ   r�   ÚsrÃ   Únsé²  iÅ  rN   r„   é   r   ixà é@â r:  )rî   r9   rÚ   r;   Ú	timestampr  r   r}  s       r   Útest_simple_timestampsz'BaseCSVTableRead.test_simple_timestamps8  sÞ   € ðIˆð —‘ Ó%ˆÜ—‘˜S¤"§(¡(£*Ð-Ø ¤"§,¡,¨sÓ"3Ð4Ø ¤"§,¡,¨tÓ"4Ð5ð7ó 8ˆð �|‰|˜vÒ%Ð%Ð%Ø�‰Ó Ø˜�Ü˜4  AÓ&¬°°q¸"¸aÓ(@ÐAÜ˜4  A q¨!¨Q°Ó7Ü˜4  B¨¨1¨a°Ó8ð:ñ%
ò 
ð 	
ñ 
rL   c                 óø  — d}t        «       }| j                  ||¬«      }t        j                  dt        j                  «       fdt        j
                  d«      fg«      }|j                  |k(  sJ ‚|j                  «       ddgt        dd	d	«      t        dd	d
«      gdœk(  sJ ‚dg|_        | j                  ||¬«      }t        j                  dt        j
                  d«      fdt        j                  «       fg«      }|j                  |k(  sJ ‚|j                  «       t        dd	d	«      t        dd	d
«      gddgdœk(  sJ ‚dt        g|_        | j                  ||¬«      }t        j                  dt        j
                  d«      fdt        j
                  d«      fg«      }|j                  |k(  sJ ‚|j                  «       t        dd	d	«      t        dd	d
«      gt        dd	d	«      t        dd	d
«      gdœk(  sJ ‚y )Ns6   a,b
1970/01/01,1980-01-01 00
1970/01/02,1980-01-02 00
rp  rœ   r�   r”  z
1970/01/01z
1970/01/02i¼  rN   r   r›   z%Y/%m/%dr–  z1980-01-01 00z1980-01-02 00)
r
   rî   r9   rÚ   r   r™  r  r   rÀ   r   )rm   rl   rY   rô   rÚ   s        r   Útest_timestamp_parsersz'BaseCSVTableRead.test_timestamp_parsersI  sþ  € àKˆÜÓˆà—‘ °d�Ó;ˆÜ—‘˜S¤"§)¡)£+Ð.Ø ¤"§,¡,¨sÓ"3Ð4ð6ó 7ˆà�|‰|˜vÒ%Ð%Ð%Ø�‰Ó Ø Ð-Ü˜4  AÓ&¬°°q¸!Ó(<Ð=ñ%
ò 
ð 	
ð 
ð
 #- ˆÔØ—‘ °d�Ó;ˆÜ—‘˜S¤"§,¡,¨sÓ"3Ð4Ø ¤"§)¡)£+Ð.ð0ó 1ˆà�|‰|˜vÒ%Ð%Ð%Ø�‰Ó Ü˜4  AÓ&¬°°q¸!Ó(<Ð=Ø! ?Ð3ñ%
ò 
ð 	
ð 
ð
 #-¬gÐ!6ˆÔØ—‘ °d�Ó;ˆÜ—‘˜S¤"§,¡,¨sÓ"3Ð4Ø ¤"§,¡,¨sÓ"3Ð4ð6ó 7ˆà�|‰|˜vÒ%Ð%Ð%Ø�‰Ó Ü˜4  AÓ&¬°°q¸!Ó(<Ð=Ü˜4  AÓ&¬°°q¸!Ó(<Ð=ñ%
ò 
ð 	
ñ 
rL   c                 óî  — d}| j                  |«      }t        j                  dt        j                  «       fdt        j                  «       fg«      }|j                  |k(  sJ ‚|j	                  «       t        ddd«      t        ddd«      gt        ddd«      t        ddd«      gdœk(  sJ ‚t        «       }t        j                  «       t        j                  «       dœ|_        | j                  ||¬	«      }t        j                  dt        j                  «       fdt        j                  «       fg«      }|j                  |k(  sJ ‚|j	                  «       t        ddd«      t        ddd«      gt        ddd«      t        ddd«      gdœk(  sJ ‚t        «       }t        j                  d
«      t        j                  d«      dœ|_        | j                  ||¬	«      }t        j                  dt        j                  d
«      fdt        j                  d«      fg«      }|j                  |k(  sJ ‚|j	                  «       t        ddd«      t        ddd«      gt        ddd«      t        ddd«      gdœk(  sJ ‚y )Ns0   a,b
1970-01-01,1970-01-02
1971-01-01,1971-01-02
rœ   r�   r–  rN   i³  r   r›   rp  r”  Úms)rî   r9   rÚ   Údate32r  r   r
   Údate64rÓ   r™  r   )rm   rl   rô   rÚ   rY   s        r   Ú
test_dateszBaseCSVTableRead.test_datesk  sA  € àEˆØ—‘ Ó%ˆÜ—‘˜S¤"§)¡)£+Ð.Ø ¤"§)¡)£+Ð.ð0ó 1ˆà�|‰|˜vÒ%Ð%Ð%Ø�‰Ó Ü�t˜Q Ó"¤D¨¨q°!Ó$4Ð5Ü�t˜Q Ó"¤D¨¨q°!Ó$4Ð5ñ%
ò 
ð 	
ð 
ô ÓˆÜ"$§)¡)£+´B·I±I³KÑ@ˆÔØ—‘ °d�Ó;ˆÜ—‘˜S¤"§)¡)£+Ð.Ø ¤"§)¡)£+Ð.ð0ó 1ˆà�|‰|˜vÒ%Ð%Ð%Ø�‰Ó Ü�t˜Q Ó"¤D¨¨q°!Ó$4Ð5Ü�t˜Q Ó"¤D¨¨q°!Ó$4Ð5ñ%
ò 
ð 	
ð 
ô ÓˆÜ"$§,¡,¨sÓ"3¼"¿,¹,ÀtÓ:LÑMˆÔØ—‘ °d�Ó;ˆÜ—‘˜S¤"§,¡,¨sÓ"3Ð4Ø ¤"§,¡,¨tÓ"4Ð5ð7ó 8ˆà�|‰|˜vÒ%Ð%Ð%Ø�‰Ó Ü˜4  AÓ&¬°°q¸!Ó(<Ð=Ü˜4  AÓ&¬°°q¸!Ó(<Ð=ñ%
ò 
ð 	
ñ 
rL   c           	      óê  — ddl m} d}| j                  |«      }t        j                  dt        j
                  d«      fdt        j                  «       fg«      }|j                  |k(  sJ ‚|j                  «        |ddd	«       |d
dd«      gddgdœk(  sJ ‚t        «       }t        j                  d«      t        j
                  d«      dœ|_
        | j                  ||¬«      }t        j                  dt        j                  d«      fdt        j
                  d«      fg«      }|j                  |k(  sJ ‚|j                  «        |ddd	«       |d
dd«      g |ddd	d«       |d
ddd«      gdœk(  sJ ‚y )Nr   )Útimes0   a,b
12:34:56,12:34:56.789
23:59:59,23:59:59.999
rœ   r”  r�   é   é"   ra  r$  é;   z12:34:56.789z23:59:59.999r›   Úusrž  rp  i
 iX> )r   r£  rî   r9   rÚ   Útime32r   r  r
   Útime64rÓ   )rm   r£  rl   rô   rÚ   rY   s         r   Ú
test_timeszBaseCSVTableRead.test_times�  sm  € å!àEˆØ—‘ Ó%ˆä—‘˜S¤"§)¡)¨C£.Ð1Ø ¤"§)¡)£+Ð.ð0ó 1ˆà�|‰|˜vÒ%Ð%Ð%Ø�‰Ó Ù�r˜2˜rÓ"¡D¨¨R°Ó$4Ð5Ø  .Ð1ñ%
ò 
ð 	
ð 
ô ÓˆÜ"$§)¡)¨D£/¼¿	¹	À$»ÑHˆÔØ—‘ °d�Ó;ˆÜ—‘˜S¤"§)¡)¨D£/Ð2Ø ¤"§)¡)¨D£/Ð2ð4ó 5ˆà�|‰|˜vÒ%Ð%Ð%Ø�‰Ó Ù�r˜2˜rÓ"¡D¨¨R°Ó$4Ð5Ù�r˜2˜r 6Ó*©D°°R¸¸VÓ,DÐEñ%
ò 
ð 	
ñ 
rL   c                 ó†  — t        d¬«      }dj                  «       }| j                  ||¬«      }t        j                  dt        j
                  t        j                  «       t        j                  «       «      fdt        j                  «       fg«      }g d¢g d¢d	œ}|j                  |k(  sJ ‚|j                  «       |k(  sJ ‚d
|_
        | j                  ||¬«      }|j                  |k(  sJ ‚|j                  «       |k(  sJ ‚d|_
        | j                  ||¬«      }|j                  t        j                  dt        j                  «       fdt        j                  «       fg«      k(  sJ ‚|j                  «       |k(  sJ ‚d|_
        d|_        d}| j                  ||d¬«      }|j                  |k(  sJ ‚|d   j                  d«      j
                  }t        |«      d
k(  sJ ‚|d   j                  «       dk(  sJ ‚|d   j                  «       dk(  sJ ‚d|_        | j                  ||¬«      }t        j                  dt        j
                  t        j                  «       t        j                   «       «      fdt        j                  «       fg«      }g d¢g d¢d	œ}|j                  |k(  sJ ‚|j                  «       |k(  sJ ‚y )NT)r¿   u   a,b
ab,1
cdÃ©,2
cdÃ©,3
ab,4rp  rœ   r�   )r‹   õ   cdÃ©r¬  r‹   )rN   r   r�   r‚   r›   r   rN   é2   Fs   a,b
ab,1
cdÿ,2
ab,3)r  rF  r   r‹   ó   cdÿ)ó   abr®  r¯  ©rN   r   r�   )r
   r8   rî   r9   rÚ   Ú
dictionaryrÇ   r   r;   r  r×   r¹   Úchunkró   Úas_pyÚ	as_bufferrÛ   )rm   rY   rl   rô   rÚ   rF   Údict_valuess          r   Útest_auto_dict_encodez&BaseCSVTableRead.test_auto_dict_encodeª  s�  € Ü¨tÔ4ˆØ0×7Ñ7Ó9ˆØ—‘ °d�Ó;ˆÜ—‘˜S¤"§-¡-´·±³
¼B¿I¹I»KÓ"HÐIØ ¤"§(¡(£*Ð-ð/ó 0ˆò .Úñ
ˆð �|‰|˜vÒ%Ð%Ð%Ø�‰Ó  HÒ,Ð,Ð,à)*ˆÔ&Ø—‘ °d�Ó;ˆØ�|‰|˜vÒ%Ð%Ð%Ø�‰Ó  HÒ,Ð,Ð,ð *+ˆÔ&Ø—‘ °d�Ó;ˆØ�|‰|œrŸy™y¨3´·	±	³Ð*<Ø+.´·±³
Ð*;ð*=ó  >ò >ð 	>ð >à�‰Ó  HÒ,Ð,Ð,ð *,ˆÔ&ØˆŒØ+ˆØ—‘ °dØ.3ð  ó 5ˆà�|‰|˜vÒ%Ð%Ð%Ø˜C‘j×&Ñ& qÓ)×4Ñ4ˆÜ�;Ó 1Ò$Ð$Ð$Ø˜1‰~×#Ñ#Ó%¨Ò-Ð-Ð-Ø˜1‰~×'Ñ'Ó)¨YÒ6Ð6Ð6ð ˆŒØ—‘ °d�Ó;ˆÜ—‘˜S¤"§-¡-´·±³
¼B¿I¹I»KÓ"HÐIØ ¤"§(¡(£*Ð-ð/ó 0ˆò +Úñ
ˆð �|‰|˜vÒ%Ð%Ð%Ø�‰Ó  HÒ,Ð,Ñ,rL   c                 ó˜  — t        ddg¬«      }d}| j                  ||¬«      }t        j                  dt        j                  «       fdt        j
                  «       fdt        j
                  «       fd	t        j                  «       fg«      }|j                  |k(  sJ ‚|j                  «       d d gdd
gddgdd gdœk(  sJ ‚t        ddgd¬«      }| j                  ||¬«      }|j                  «       d d gd d
gddgdd gdœk(  sJ ‚d|_        | j                  ||¬«      }|j                  «       d d gdd
gddgdd gdœk(  sJ ‚t        g ¬«      }d}| j                  ||¬«      }t        j                  dt        j
                  «       fdt        j
                  «       fg«      }|j                  |k(  sJ ‚|j                  «       d
gdgdœk(  sJ ‚y )NÚXxxÚZzz)rÔ   s$   a,b,c,d
Zzz,"Xxx",1,2
Xxx,#N/A,,Zzz
rp  rœ   r�   rÃ   r"  z#N/AÚ1rÉ   r   r!  T)rÔ   rº   Fs
   a,b
#N/A,
r›   )	r
   rî   r9   rÚ   rÅ   r   r;   r  r»   ©rm   rY   rl   rô   rÚ   s        r   Útest_custom_nullsz"BaseCSVTableRead.test_custom_nullsÛ  s  € ä¨5°%¨.Ô9ˆØ=ˆØ—‘ °d�Ó;ˆÜ—‘˜S¤"§'¡'£)Ð,Ø ¤"§)¡)£+Ð.Ø ¤"§)¡)£+Ð.Ø ¤"§(¡(£*Ð-ð/ó 0ˆð �|‰|˜vÒ%Ð%Ð%Ø�‰Ó Ø˜�Ø˜�Ø�r�Ø�T�ñ	%
ò 
ð 	
ð 
ô ¨5°%¨.Ø26ô8ˆà—‘ °d�Ó;ˆØ�‰Ó Ø˜�Ø˜�Ø�r�Ø�T�ñ	%
ò 
ð 	
ð 
ð +0ˆÔ'Ø—‘ °d�Ó;ˆØ�‰Ó Ø˜�Ø˜�Ø�r�Ø�T�ñ	%
ò 
ð 	
ð 
ô ¨"Ô-ˆØˆØ—‘ °d�Ó;ˆÜ—‘˜S¤"§)¡)£+Ð.Ø ¤"§)¡)£+Ð.ð0ó 1ˆà�|‰|˜vÒ%Ð%Ð%Ø�‰Ó Ø�Ø�ñ%
ò 
ð 	
ñ 
rL   c                 óX  — t        ddgddg¬«      }d}| j                  ||¬«      }t        j                  dt        j                  «       fd	t        j
                  «       fd
t        j                  «       fg«      }|j                  |k(  sJ ‚|j                  «       g d¢g d¢g d¢dœk(  sJ ‚y )NrÏ   ÚyesrÑ   Úno)rÕ   rÖ   s>   a,b,c
True,T,t
False,F,f
True,yes,yes
False,no,no
N/A,N/A,N/A
rp  rœ   r�   rÃ   )ÚTrueÚFalserÀ  rÁ  rÊ   )TFTFN)Útrˆ  r¾  r¿  rÊ   r:  )r
   rî   r9   rÚ   r   r…  r  r»  s        r   Útest_custom_boolsz"BaseCSVTableRead.test_custom_bools	  s«   € ä¨3°¨,Ø,/°¨;ô8ˆð!ˆð —‘ °d�Ó;ˆÜ—‘˜S¤"§)¡)£+Ð.Ø ¤"§(¡(£*Ð-Ø ¤"§)¡)£+Ð.ð0ó 1ˆð �|‰|˜vÒ%Ð%Ð%Ø�‰Ó Ú:Ú1Ú/ñ%
ò 
ð 	
ñ 
rL   c                 óp  — t        dddt        j                  dd«      ddœ¬«      }d	}| j                  ||¬
«      }t        j                  dt        j
                  «       fdt        j                  «       fdt        j                  «       fdt        j                  «       fdt        j                  dd«      fg«      }ddgddgddgddgt        d«      t        d«      gdœ}|j                  |k(  sJ ‚|j                  «       |k(  sJ ‚t        t        j                  dt        j                  «       fdt        j                  «       fdt        j                  «       fdt        j                  dd«      fdt        j                  «       fg«      ¬«      }| j                  ||¬
«      }|j                  |k(  sJ ‚|j                  «       |k(  sJ ‚d}t        j                  t        j                  «      5 }| j                  ||¬
«       d d d «       t        j                  «      }d|v sJ ‚d|v sJ ‚y # 1 sw Y   Œ+xY w)NrÙ   r   Úbooleanr€   r   rÅ   )r�   rÃ   r"  r0  Úzz©rÓ   s(   a,b,c,d,e
1,2,3,true,1.0
4,-5,6,false,0
rp  rœ   r�   rÃ   r"  r0  rN   r‚   ç       @g      Àr‚  Ú6TFú1.00z0.00)rœ   r�   rÃ   r"  r0  rÆ  s(   a,b,c,d,e
1,XXX,3,true,5
4,-5,6,false,7
zIn CSV column #1: z2CSV conversion error to float: invalid value 'XXX')r
   r9   Ú
decimal128rî   rÚ   r;   rÙ   r   r…  r   r  rS   rT   r    r6   r^   )rm   rY   rl   rô   rÚ   rF   ÚexcÚerrs           r   Útest_column_typesz"BaseCSVTableRead.test_column_types  sü  € ä°Ø19Ø1:Ü13·±¸rÀ1Ó1EØ28ñ	,:ô ;ˆð
 >ˆØ—‘ °d�Ó;ˆÜ—‘˜S¤"§(¡(£*Ð-Ø ¤"§*¡*£,Ð/Ø ¤"§)¡)£+Ð.Ø ¤"§(¡(£*Ð-Ø ¤"§-¡-°°AÓ"6Ð7ð	9ó :ˆð �Q�Ø�t�Ø�s�Ø˜�Ü˜&“/¤7¨6£?Ð3ñ
ˆð �|‰|˜vÒ%Ð%Ð%Ø�‰Ó  HÒ,Ð,Ð,äÜŸ™ S¬"¯*©*«,Ð$7Ø%(¬"¯)©)«+Ð$6Ø%(¬"¯(©(«*Ð$5Ø%(¬"¯-©-¸¸AÓ*>Ð$?Ø%)¬2¯8©8«:Ð$6ð	$8ó 9ô:ˆð —‘ °d�Ó;ˆØ�|‰|˜vÒ%Ð%Ð%Ø�‰Ó  HÒ,Ð,Ð,à=ˆÜ�]‰]œ2Ÿ?™?Ô+¨sØ�O‰O˜D°$ˆOÔ7÷ ,ä�#—)‘)‹nˆØ# sÑ*Ð*Ð*ØCÀsÑJÐJÑJ÷	 ,Ð+ús   Ç.H,È,H5c           
      ó.  — dt        j                  t        j                  «       t        j                  «       «      fdt        j                  t        j                  «       t        j                  «       «      fdt        j                  t        j                  «       t        j
                  dd«      «      fdt        j                  t        j                  «       t        j                  «       «      fg}t        t        |«      ¬«      }d}| j                  ||¬	«      }t        j                  |«      }g d
¢g d¢t        d«      t        d«      t        d«      gg d¢dœ}|j                  |k(  sJ ‚|j                  «       |k(  sJ ‚dt        j                  t        j                  «       t        j                  «       «      f|d<   t        t        |«      ¬«      }t        j                  t         «      5  | j                  ||¬	«      }d d d «       y # 1 sw Y   y xY w)Nrœ   r�   rÃ   r€   r   r"  rÇ  s<   a,b,c,d
abc,123456,1.0,zz
defg,123456,0.5,xx
abc,N/A,1.0,xx
rp  )r¸   Údefgr¸   )r˜  r˜  NrÊ  z0.50)rÆ  rt  rt  r!  r   )r9   r±  rÇ   r�   r;   rË  Ú
large_utf8r
   Údictrî   rÚ   r   r  Úint8rS   rT   rë   )rm   rÓ   rY   rl   rô   rÚ   rF   s          r   Útest_column_types_dictz'BaseCSVTableRead.test_column_types_dictG  sv  € ð ”"—-‘-¤§¡£
¬B¯G©G«IÓ6Ð7Ø”"—-‘-¤§¡£
¬B¯H©H«JÓ7Ð8Ø”"—-‘-¤§¡£
¬B¯M©M¸"¸aÓ,@ÓAÐBØ”"—-‘-¤§¡£
¬B¯M©M«OÓ<Ð=ð	?ˆô ¬4°Ó+=Ô>ˆð$ˆð —‘ °d�Ó;ˆä—‘˜<Ó(ˆâ'Ú'Ü˜&“/¤7¨6£?´G¸F³OÐDÚ#ñ	
ˆð �|‰|˜vÒ%Ð%Ð%Ø�‰Ó  HÒ,Ð,Ð,ð ¤§¡¬b¯g©g«i¼¿¹»Ó CÐDˆ�Q‰ä¬4°Ó+=Ô>ˆÜ�]‰]Ô.Õ/Ø—O‘O D¸$�OÓ?ˆE÷ 0×/Ñ/ús   Ç.HÈHc                 ód  — d}t        ddg¬«      }t        dt        j                  «       i¬«      }| j	                  |||¬«      }t        j
                  dt        j                  «       fdt        j                  «       fg«      }|j
                  |k(  sJ ‚|j                  «       g d¢g d¢d	œk(  sJ ‚y )
Ns   a,b
c,d
e,f
rˆ   r§   ©rJ   rÇ  r  )ó   aó   có   e)r�   r"  rˆ  rj  )r   r
   r9   rÛ   rî   rÚ   r   r  rz  s         r   Ú#test_column_types_with_column_namesz4BaseCSVTableRead.test_column_types_with_column_namesg  s«   € ð "ˆÜ"°°c°
Ô;ˆÜ(°s¼B¿I¹I»KÐ6HÔIˆØ—‘ °<Ø0?ð  ó Aˆä—‘˜S¤"§)¡)£+Ð.Ø ¤"§)¡)£+Ð.ð0ó 1ˆà�|‰|˜vÒ%Ð%Ð%Ø�‰Ó Ú#Ú ñ%
ò 
ð 	
ñ 
rL   c                 ó^  — d}t        t        j                  «       ¬«      }| j                  ||¬«      }t        j                  dt        j                  «       fdt        j                  «       fdt        j                  «       fdt        j                  «       fg«      }|j                  |k(  sJ ‚|j                  «       dd	gd
dgddgddgdœk(  sJ ‚t        t        j                  «       t        j                  «       dœt        j                  «       ¬«      }| j                  ||¬«      }t        j                  dt        j                  «       fdt        j                  «       fdt        j                  «       fdt        j                  «       fg«      }|j                  |k(  sJ ‚|j                  «       dd	gddgddgddgdœk(  sJ ‚t        dt        j                  «       i¬«      }| j                  ||¬«      }t        dt        j                  «       it        j                  «       ¬«      }| j                  ||¬«      }|j                  j                  d«      j                  t        j                  «       k(  sJ ‚|j                  j                  d«      j                  t        j                  «       k(  sJ ‚|j                  j                  d«      j                  t        j                  «       k(  sJ ‚|j                  j                  d«      j                  t        j                  «       k(  sJ ‚y )Ns.   a,b,c,d
001,2.5,hello,true
4,3.14,world,false
)rÁ   rp  rœ   r�   rÃ   r"  Ú001Ú4z2.5z3.14ÚhelloÚworldÚtrueÚfalser!  )r�   r"  )rÓ   rÁ   r‘  g…ëQ¸	@TFrÇ  )r
   r9   r   rî   rÚ   r  r„  r…  Úfieldr*   r;   )	rm   rl   rY   rô   rÚ   Úopts_no_defaultÚtable_no_defaultÚopts_with_defaultÚtable_with_defaults	            r   Útest_default_column_typez)BaseCSVTableRead.test_default_column_typew  s«  € ØCˆô ´"·)±)³+Ô>ˆØ—‘ °d�Ó;ˆÜ—‘˜S¤"§)¡)£+Ð.Ø ¤"§)¡)£+Ð.Ø ¤"§)¡)£+Ð.Ø ¤"§)¡)£+Ð.ð0ó 1ˆð �|‰|˜vÒ%Ð%Ð%Ø�‰Ó Ø˜�Ø˜�Ø˜7Ð#Ø˜'Ð"ñ	%
ò 
ð 	
ð 
ô Ü!Ÿz™z›|´"·(±(³*Ñ=Ü "§	¡	£ô
ˆð —‘ °d�Ó;ˆÜ—‘˜S¤"§)¡)£+Ð.Ø ¤"§*¡*£,Ð/Ø ¤"§)¡)£+Ð.Ø ¤"§(¡(£*Ð-ð/ó 0ˆð �|‰|˜vÒ%Ð%Ð%Ø�‰Ó Ø˜�Ø�t�Ø˜7Ð#Ø˜�ñ	%
ò 
ð 	
ð 
ô )°s¼B¿J¹J»LÐ6IÔJˆØŸ?™?¨4À˜?ÓQÐä*ØœrŸz™z›|Ð,Ü "§	¡	£ô
Ðð "Ÿ_™_¨TÐCT˜_ÓUÐð  ×&Ñ&×,Ñ,¨SÓ1×6Ñ6¼"¿(¹(»*ÒDÐDÐDØ!×(Ñ(×.Ñ.¨sÓ3×8Ñ8¼B¿I¹I»KÒGÐGÐGà×&Ñ&×,Ñ,¨SÓ1×6Ñ6¼"¿*¹*»,ÒFÐFÐFØ!×(Ñ(×.Ñ.¨sÓ3×8Ñ8¼B¿J¹J»LÒHÐHÑHrL   c                 óh   — d}| j                  |«      }|j                  «       ddgddgddgdœk(  sJ ‚y )	Nó   a,b,c
1,2,3
4,5,6rN   r‚   r   r~   r�   rƒ   r:  r[  rX  s      r   Útest_no_ending_newlinez'BaseCSVTableRead.test_no_ending_newline®  sH   € à%ˆØ—‘ Ó%ˆØ�‰Ó Ø�Q�Ø�Q�Ø�Q�ñ%
ò 
ð 	
ñ 
rL   c                 óX   — d}| j                  |«      }|j                  «       dg ik(  sJ ‚y )Ns   ,

rÉ   r[  rX  s      r   Útest_trivialzBaseCSVTableRead.test_trivial¸  s.   € àˆØ—‘ Ó%ˆØ�‰Ó  R¨ HÒ,Ð,Ñ,rL   c                 óP  — d}| j                  |«      }|j                  «       ddgddgdœk(  sJ ‚t        d¬«      }| j                  ||¬	«      }|j                  «       g d
¢g d¢dœk(  sJ ‚t        d¬«      }| j                  |||¬«      }|j                  «       d dgd dgdœk(  sJ ‚y )Ns   a,b
1,2

3,4
rN   r�   r   r‚   r›   F)r¯   r/  )NrN   Nr�   )Nr   Nr‚   )r‘   r<  )rº  Ú2)rî   r  r	   r   )rm   rl   rô   r  rú   s        r   Útest_empty_linesz!BaseCSVTableRead.test_empty_lines¾  sÕ   € Ø+ˆØ—‘ Ó%ˆØ�‰Ó Ø�Q�Ø�Q�ñ%
ò 
ð 	
ð 
ô %¸Ô>ˆØ—‘ °M�ÓBˆØ�‰Ó Ú#Ú#ñ%
ò 
ð 	
ð 
ô #¨QÔ/ˆØ—‘ °MØ-9ð  ó ;ˆà�‰Ó Ø˜�Ø˜�ñ%
ò 
ð 	
ñ 
rL   c                 óÜ  — d}t        j                  t        j                  d¬«      5  | j	                  |«       d d d «       d}t        j                  t        j                  d¬«      5  | j	                  |«       d d d «       dD ]A  }t        j                  t        j                  d¬«      5  | j	                  |«       d d d «       ŒC y # 1 sw Y   Œ‘xY w# 1 sw Y   Œ\xY w# 1 sw Y   ŒfxY w)Ns   a,b,c
1,2
4,5,6
rk  r˜   s   a,b,c
1,2,3
4zExpected 3 columns, got 1)rL   r^  r`  r_  s   

úEmpty CSV file)rS   rT   r9   r    rî   )rm   rl   s     r   Útest_invalid_csvz!BaseCSVTableRead.test_invalid_csvÓ  s¦   € à%ˆÜ�]‰]œ2Ÿ?™?Ð2MÖNØ�O‰O˜DÔ!÷ Oà!ˆÜ�]‰]œ2Ÿ?™?Ð2MÖNØ�O‰O˜DÔ!÷ Oã9ˆDÜ—‘œrŸ™Ð6FÖGØ—‘ Ô%÷ HÐGñ :÷ OÐNú÷ OÐNú÷ HÐGús#   ¨C
Á)CÂ-C"Ã
CÃCÃ"C+	c                 óÐ   — d}| j                  |«      }|j                  «       dgdgdœk(  sJ ‚t        d¬«      }| j                  ||¬«      }|j                  «       dgd	gd
œk(  sJ ‚y )Nó   a;b,c
de,fg;eh
Údeúfg;eh©úa;brÃ   rŽ  r�  r/  úde,fgÚeh©rœ   úb,c)rî   r  r	   )rm   rl   rô   rY   s       r   Útest_options_delimiterz'BaseCSVTableRead.test_options_delimiterß  sƒ   € Ø#ˆØ—‘ Ó%ˆØ�‰Ó Ø�6Ø�ñ%
ò 
ð 	
ð 
ô  cÔ*ˆØ—‘ °D�Ó9ˆØ�‰Ó Ø�Ø�6ñ%
ò 
ð 	
ñ 
rL   c                 óè   — t        dd¬«      \  }}| j                  |«      }|j                  |j                  k(  sJ ‚|j                  |«      sJ ‚|j	                  «       |j	                  «       k(  sJ ‚y ©Nr   r‡   r  )rG   rî   rÚ   Úequalsr  )rm   rB   rF   rô   s       r   Útest_small_random_csvz&BaseCSVTableRead.test_small_random_csví  sf   € Ü'°¸RÔ@‰ˆˆXØ—‘ Ó$ˆØ�|‰|˜xŸ™Ò.Ð.Ð.Ø�|‰|˜HÔ%Ð%Ð%Ø�‰Ó  H×$6Ñ$6Ó$8Ò8Ð8Ñ8rL   c                 óL  — t        dd¬«      \  }}g d¢}||j                  d«      g}|D ]x  }|D ]q  }t        |¬«      }| j                  ||¬«      }|j                  |j                  k(  sJ ‚|j                  |«      rŒO|j                  «       |j                  «       k(  rŒqJ ‚ Œz y )Nr   éô  r  )r€   r¤  é   é   r  éo   r`  r–   rù   )rG   Úrstripr   rî   rÚ   r   r  )	rm   Úcsv_baserF   Úblock_sizesÚcsvsrB   r—   rú   rô   s	            r   Útest_stress_block_sizesz(BaseCSVTableRead.test_stress_block_sizesô  s›   € ä,°aÀ#ÔFÑˆ�(Ú/ˆØ˜(Ÿ/™/¨'Ó2Ð3ˆÛˆCÛ)�
Ü*°jÔA�ØŸ™¨¸,˜ÓG�Ø—|‘| x§¡Ò6Ð6Ð6Ø—|‘| HÕ-à Ÿ?™?Ó,°×0BÑ0BÓ0DÓDÐDÐDñ *ñ rL   c                 óê  — 	 t         j                  }d}t        |«      D �cg c]  }d|› �‘Œ	 }}t	        |«      } |«       }t        |d d d…   D �ci c]  }|t        j                  «       “Œ c}¬«      }| j                  ||¬«      }	 |«       |z
  }
|
dk  sJ ‚|	j                  |k(  sJ ‚|	j                  dk(  sJ ‚|	j                  |k(  sJ ‚y # t        $ r t         j                   }Y ŒÕw xY wc c}w c c}w )Ni'  ÚKr   rÇ  rp  ç      $@r   )r£  Úthread_timerU   r   rK   r
   r9   r   rî   rò   r!   rJ   )rm   Úclockrò   r"   rC   rB   Út1Úkr  rô   Údts              r   Ú"test_stress_convert_options_blowupz3BaseCSVTableRead.test_stress_convert_options_blowup  s  € ð	Ü×$Ñ$ˆEð ˆÜ&+¨KÔ&8Ó9Ñ&8 �q˜˜’WÐ&8ˆ	Ð9Ü˜YÓ'ˆÙ‹WˆÜ(Ø2;¹C¸a¸C².ÓA±.¨Q˜!œRŸY™Y›[™.°.ÑAôCˆà—‘ °_�ÓEˆÙ‹W�r‰\ˆð �TŠzÐˆzà× Ñ  KÒ/Ð/Ð/Ø�~‰~ Ò"Ð"Ð"Ø×!Ñ! YÒ.Ð.Ñ.øô# ò 	Ü—I‘IŠEð	üò :ùò Bs   ‚C ¡C+ÁC0ÃC(Ã'C(c           	      óà  — t        j                  «       j                  t        j                  «       j                  k7  rt	        j
                  d«       d„ }d}d}d}|dk  rÀ|dk  r»t        d|«       d	d
|z  z   }d }	 t        j                  «       5 }	 t        j                  |¬«      }|j                  «        t        j                  «       }		 | j                  |«       t        j                  |gg |gd«       	 d d d «       |�|j                  �n|dz  }|dk  r|dk  rŒ»€t	        j                   d«       |dk  sJ ‚|j                  }
t#        |
t$        j&                  «      sJ ‚|
j(                  t*        j,                  k(  sJ ‚y # t        $ r#}
|
}t        j                  «       |	z
  }Y d }
~
ŒÏd }
~
ww xY w# t        j                  |gg |gd«       w xY w# 1 sw Y   ŒÜxY w# t        $ r Y Œêw xY w)Nz'test only works from main Python threadc                  ót   — t        j                  d«       t        j                  t        j                  «       y )Ngš™™™™™É?)r£  ÚsleepÚsignalÚraise_signalÚSIGINTrO   rL   r   Úsignal_from_threadz>BaseCSVTableRead.test_cancellation.<locals>.signal_from_thread   s   € ä�J‰J�sŒOÜ×Ñ¤§¡Õ.rL   g        i † r   g      @r‡   zworkload size:s   a,b,c
s   1,2,3
©Útargetr  r�   z0Failed to get an interruption during CSV readingrÈ  )Ú	threadingÚcurrent_threadÚidentÚmain_threadrS   r¦   Úprintr   Úsignal_wakeup_fdÚThreadÚstartr£  rî   ÚKeyboardInterruptÚselectÚ__context__Úfailrt   r9   ÚArrowCancelledÚsignumr  r  )rm   r  Úlast_durationÚworkload_sizeÚattemptsÚ	large_csvÚexc_infoÚsigfdrÂ  r  r0  s              r   Útest_cancellationz"BaseCSVTableRead.test_cancellation  sØ  € ä×$Ñ$Ó&×,Ñ,Ü×%Ñ%Ó'×-Ñ-ò.ä�K‰KÐAÔBò	/ð ˆØˆØˆà˜cÒ! h°¢mÜÐ" MÔ2Ø" Z°-Ñ%?Ñ?ˆIØˆHðô ×*Ñ*Ô,°ðBÜ%×,Ñ,Ð4FÔG˜ØŸ™œ	Ü!ŸY™Y›[˜ð=Ø ŸO™O¨IÔ6ô Ÿ™ u g¨r°E°7¸DÕA÷ -ð( Ð#ð ×'Ñ'Ð3àð *¨AÑ-ˆMðM ˜cÒ! h°£mðP ÐÜ�K‰KÐJÔKð  Ò#Ð#Ð#Ø× Ñ ˆÜ˜!œR×.Ñ.Ô/Ð/Ð/Ø�x‰xœ6Ÿ=™=Ò(Ð(Ñ(øô?  1ò =Ø'(˜HÜ,0¯I©I«K¸"Ñ,<�Mûð=ûô Ÿ™ u g¨r°E°7¸DÕAú÷ -Ð,ûô  %ò áðúsf   Á=G! ÂGÂ:F6ÃFÃGÃ:G! Æ	F3ÆF.Æ)F6Æ.F3Æ3F6Æ6GÇGÇGÇG! Ç!	G-Ç,G-c                 óx   ‡ — t        j                  ˆ fd„¬«      }|j                  «        |j                  «        y )Nc                  ó&   •— ‰ j                  d«      S )Ns   f64
0.1)rî   rð   s   €r   Ú<lambda>z=BaseCSVTableRead.test_cancellation_disabled.<locals>.<lambda>c  s   ø€ ˜4Ÿ?™?¨;Ô7rL   r  )r  r$  r%  r4   )rm   rÂ  s   ` r   Útest_cancellation_disabledz+BaseCSVTableRead.test_cancellation_disabled]  s*   ø€ ô
 ×ÑÛ7ô9ˆà	�‰Œ	Ø	�‰�rL   N))rz   r{   r|   r   rî   rU  rY  r\  rf  rl  rn  rw  r{  r~  r†  rŒ  r’  rš  rœ  r¡  rª  r¶  r¼  rÃ  rÎ  rÔ  rÚ  rç  rê  rì  rï  rò  rý  r  r  r  rS   rB  r  r2  r6  rO   rL   r   rE  rE    s÷   „ à15ô ò8ò	ò#ò2òò1
òf=ò2Cò:+
òZ
ò
ò 
ò.
ò2
ò" 
òD"
òH
ò6/-òb,
ò\
ò*'KòR@ò@
ò 5Iòn
ò-ò
ò*
&ò
ò9òEò/ð0 ‡[�[×Ññ@)ó ð@)ðD ‡[�[×Ññó ñrL   rE  c                   ó   — e Zd Zed„ «       Zy)ÚTestSerialCSVTableReadc                  ó   — y©NFrO   rð   s    r   r�   z"TestSerialCSVTableRead.use_threadsi  ó   € àrL   N©rz   r{   r|   r@  r�   rO   rL   r   r8  r8  h  ó   „ Øñó ñrL   r8  c                   ó   — e Zd Zed„ «       Zy)ÚTestThreadedCSVTableReadc                  ó   — y©NTrO   rð   s    r   r�   z$TestThreadedCSVTableRead.use_threadso  ó   € àrL   Nr<  rO   rL   r   r?  r?  n  s   „ Øñó ñrL   r?  c                   óÀ   ‡ — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zˆ fd„Zej,                  j.                  ˆ fd„«       Zˆ xZS )ÚBaseStreamingCSVReadc                 óv   — |j                  dt        «       «      }| j                  |_        t        |g|¢­i |¤ŽS )zò
        Reads the CSV file into memory using pyarrow's open_csv
        csv The CSV bytes
        args Positional arguments to be forwarded to pyarrow's open_csv
        kwargs Keyword arguments to be forwarded to pyarrow's open_csv
        rú   )rK  r   r�   r   )rm   rB   r  rí   rú   s        r   r   zBaseStreamingCSVRead.open_csvv  s;   € ð ×(Ñ(¨¼»ÓGˆØ#'×#3Ñ#3ˆÔ Ü˜Ð-˜dÒ- fÑ-Ð-rL   c                 óN   —  | j                   t        j                  |«      fi |¤ŽS r   )r   r9   rM  rì   s      r   Ú
open_byteszBaseStreamingCSVRead.open_bytes�  rN  rL   c                 ó  — |j                   |k(  sJ ‚t        |«      }t        |«      t        |«      k(  sJ ‚t        ||«      D ]=  \  }}|j	                  d¬«       |j                   |k(  sJ ‚|j                  «       |k(  rŒ=J ‚ y )NTrH  )rÚ   r0   ró   ÚziprŸ   r  )rm   ÚreaderÚexpected_schemarR  ÚbatchesÚbatchÚexpected_batchs          r   Úcheck_readerz!BaseStreamingCSVRead.check_reader„  s€   € Ø�}‰} Ò/Ð/Ð/Ü�v“,ˆÜ�7‹|œs =Ó1Ò1Ð1Ð1Ü%(¨°-Ö%@Ñ!ˆE�>Ø�N‰N ˆNÔ%Ø—<‘< ?Ò2Ð2Ð2Ø—?‘?Ó$¨Ó6Ð6Ð6ñ &ArL   c                 óD   —  | j                   |fi |¤Žj                  «       S r   )rG  Úread_allrì   s      r   rî   zBaseStreamingCSVRead.read_bytes�  s!   € Øˆt�‰˜qÑ+ FÑ+×4Ñ4Ó6Ð6rL   c                 ó  — d}ddgddgdœ}t        j                  |«      }| j                  |«      }t        j                  dt        j
                  «       fdt        j
                  «       fg«      }| j                  |||g«       y )	Ns   a,b
1,2
3,4
rN   r�   r   r‚   r›   rœ   r�   )r.   rP  r   r9   rÚ   r;   rO  )rm   rQ  rR  rS  rJ  rK  s         r   rU  z%BaseStreamingCSVRead.test_file_object�  sw   € Ø!ˆØ  !˜f¨A¨q¨6Ñ2ˆÜ�j‰j˜ÓˆØ—‘˜sÓ#ˆÜŸ)™) c¬2¯8©8«:Ð%6Ø&)¬2¯8©8«:Ð%6ð%8ó 9ˆà×Ñ˜& /°M°?ÕCrL   c                 óø   — d}| j                  |«      }t        j                  dt        j                  «       fdt        j                  «       fdt        j                  «       fg«      }| j	                  ||g «       y )NrW  r¸   r·   rü   )rG  r9   rÚ   rÅ   rO  ©rm   rl   rJ  rK  s       r   rY  z BaseStreamingCSVRead.test_header™  se   € ØˆØ—‘ Ó&ˆÜŸ)™) e¬R¯W©W«YÐ%7Ø&+¬R¯W©W«YÐ%7Ø&*¬B¯G©G«IÐ%6ð%8ó 9ˆð 	×Ñ˜& /°2Õ6rL   c                 ó¤  — d}t        j                  dt        j                  «       fdt        j                  «       fg«      }t	        «       }t        |«      |_        | j                  ||¬«      }| j                  ||g d¢g d¢dœg«       t        |«      dz
  |_        | j                  ||¬«      }| j                  ||d	d
gddgdœdgdgdœg«       y )Nó   a,b
123,456
abc,deÿ
gh,ij
rœ   r�   rù   )Ú123r¸   rü   )ó   456ó   deÿó   ijr›   rN   rW  r¸   rX  rY  rü   rZ  )	r9   rÚ   r   rÛ   r   ró   r—   rG  rO  )rm   rl   rK  rú   rJ  s        r   Útest_inferencez#BaseStreamingCSVRead.test_inference¡  sÜ   € à3ˆÜŸ)™) c¬2¯9©9«;Ð%7Ø&)¬2¯9©9«;Ð%7ð%9ó :ˆô #“}ˆÜ"% d£)ˆÔØ—‘ °L�ÓAˆØ×Ñ˜& /Ú!5Ú!;ñ=ð >ô	?ô #& d£)¨a¡-ˆÔØ—‘ °L�ÓAˆØ×Ñ˜& /Ø"'¨ Ø"(¨)Ð!4ñ6à"& Ø"' ñ*ð+õ	,rL   c                 óT  — d}t        «       }t        |«      dz
  |_        | j                  ||¬«      }t	        j
                  dt	        j                  «       fdt	        j                  «       fg«      }|j
                  |k(  sJ ‚|j                  «       j                  «       dgdgdœk(  sJ ‚t        j                  t        d	¬
«      5  |j                  «        d d d «       t        j                  t        «      5  |j                  «        d d d «       y # 1 sw Y   Œ<xY w# 1 sw Y   y xY w)NrV  r„   rù   rœ   r�   rÈ   iÈ  r›   zCSV conversion error to int64r˜   )r   ró   r—   rG  r9   rÚ   r;   Úread_next_batchr  rS   rT   rØ   ÚStopIteration©rm   rl   rú   rJ  rK  s        r   Útest_inference_failurez+BaseStreamingCSVRead.test_inference_failure¶  s   € à3ˆÜ"“}ˆÜ"% d£)¨a¡-ˆÔØ—‘ °L�ÓAˆÜŸ)™) c¬2¯8©8«:Ð%6Ø&)¬2¯8©8«:Ð%6ð%8ó 9ˆà�}‰} Ò/Ð/Ð/Ø×%Ñ%Ó'×1Ñ1Ó3Ø�˜c˜Uñ8
ò 
ð 	
ð 
ô �]‰]œ:Ø!@öBà×"Ñ"Ô$÷Bô �]‰]œ=Õ)Ø×"Ñ"Ô$÷ *Ð)÷	Bð Bú÷ *Ð)ús   ÃDÃ8DÄDÄD'c                 ó\  — d}t        «       }d|_        t        j                  t        j
                  d¬«      5  | j                  ||¬«      }d d d «       d}d|_        | j                  ||¬«      }|j                  «       j                  «       dgd	gd
œk(  sJ ‚t        j                  t        j
                  d¬«      5  |j                  «        d d d «       t        j                  t        «      5  |j                  «        d d d «       y # 1 sw Y   Œ¾xY w# 1 sw Y   ŒHxY w# 1 sw Y   y xY w)Ns   a,b
1,2,3
4,5
6,7
r‡   zExpected 2 columns, got 3r˜   rù   s   a,b
1,2
3,4,5
6,7
r…   rN   r   r›   )
r   r—   rS   rT   r9   r    rG  r]  r  r^  )rm   rl   rú   rJ  s       r   rò  z%BaseStreamingCSVRead.test_invalid_csvÊ  sù   € à(ˆÜ"“}ˆØ"$ˆÔÜ�]‰]œ2Ÿ?™?Ø!<ö>à—_‘_Ø <ð %ó 1ˆF÷>ð )ˆØ"#ˆÔØ—‘ °L�ÓAˆØ×%Ñ%Ó'×1Ñ1Ó3¸a¸SÈÀsÑ7KÒKÐKÐKÜ�]‰]œ2Ÿ?™?Ø!<ö>à×"Ñ"Ô$÷>ô �]‰]œ=Õ)Ø×"Ñ"Ô$÷ *Ð)÷>ð >ú÷>ð >ú÷ *Ð)ús#   ¹D
Â>DÃ0D"Ä
DÄDÄ"D+c                 óÈ  — d}| j                  |«      }t        j                  dt        j                  «       fdt        j                  «       fg«      }| j	                  ||dgdgdœg«       t        d¬«      }| j                  ||¬	«      }t        j                  d
t        j                  «       fdt        j                  «       fg«      }| j	                  ||dgdgdœg«       y )Nrô  rø  rÃ   rõ  rö  r÷  rŽ  r�  r/  rœ   rü  rù  rú  rû  )rG  r9   rÚ   r   rO  r	   )rm   rl   rJ  rK  rY   s        r   rý  z+BaseStreamingCSVRead.test_options_delimiterà  sÛ   € Ø#ˆØ—‘ Ó&ˆÜŸ)™) e¬R¯Y©Y«[Ð%9Ø&)¬2¯9©9«;Ð%7ð%9ó :ˆà×Ñ˜& /Ø$( 6Ø") ñ,ð -ô	.ô  cÔ*ˆØ—‘ °T�Ó:ˆÜŸ)™) c¬2¯9©9«;Ð%7Ø&+¬R¯Y©Y«[Ð%9ð%;ó <ˆà×Ñ˜& /Ø") Ø$( 6ñ+ð ,õ	-rL   c                 ó  — d}| j                  |«      }t        j                  dt        j                  «       fdt        j                  «       fdt        j                  «       fg«      }| j	                  ||ddgddgd	d
gdœg«       y )Nré  rœ   r�   rÃ   rN   r‚   r   r~   r�   rƒ   r:  )rG  r9   rÚ   r;   rO  rT  s       r   rê  z+BaseStreamingCSVRead.test_no_ending_newlineñ  s„   € à%ˆØ—‘ Ó&ˆÜŸ)™) c¬2¯8©8«:Ð%6Ø&)¬2¯8©8«:Ð%6Ø&)¬2¯8©8«:Ð%6ð%8ó 9ˆð 	×Ñ˜& /Ø"# Q Ø"# Q Ø"# Q ñ)ð *õ	+rL   c                 ó†   — t        j                  t        d¬«      5  | j                  d«       d d d «       y # 1 sw Y   y xY w)Nrñ  r˜   rL   )rS   rT   rØ   rG  rð   s    r   Útest_empty_filez$BaseStreamingCSVRead.test_empty_fileý  s)   € Ü�]‰]œ:Ð-=Ö>Ø�O‰O˜CÔ ÷ ?×>Ñ>ús	   œ7·A c                 ój  — d}t        «       }g d¢|_        | j                  ||¬«      }t        j                  dt        j
                  «       fdt        j
                  «       fdt        j
                  «       fg«      }| j                  ||ddgd	d
gddgdœg«       t        «       }ddg|_        | j                  |||¬«      }t        j                  dt        j
                  «       fdt        j
                  «       fg«      }| j                  ||d	d
gddgdœg«       dt        j                  «       i|_
        | j                  |||¬«      }t        j                  dt        j
                  «       fdt        j                  «       fg«      }| j                  ||ddgddgdœg«       g d¢|_        t        j                  t        d¬«      5  | j                  |||¬«      }d d d «       d|_        | j                  |||¬«      }t        j                  dt        j                  «       fdt        j
                  «       fdt        j                  «       fg«      }| j                  ||d d gddgddgdœg«       t        j                  «       t        j                   «       dœ|_
        | j                  |||¬«      }t        j                  dt        j                   «       fdt        j
                  «       fdt        j                  «       fg«      }| j                  ||d d gddgddgdœg«       y # 1 sw Y   �ŒLxY w)Ns   1,2,3
4,5,6)r"  r0  rˆ  rù   r"  r0  rˆ  rN   r‚   r   r~   r�   rƒ   r  )r0  rˆ  rî  Ú5)r8  rˆ  r0  z,Column 'g' in include_columns does not existr˜   Tr8  )r8  r0  rˆ  )r0  r8  )r   rJ   rG  r9   rÚ   r;   rO  r
   r½   r   rÓ   rS   rT   rv  r¾   rÅ   r„  )rm   rl   rú   rJ  rK  r  s         r   Útest_column_optionsz(BaseStreamingCSVRead.test_column_options  s.  € àˆÜ"“}ˆÚ$3ˆÔ!Ø—‘ °L�ÓAˆÜŸ)™) c¬2¯8©8«:Ð%6Ø&)¬2¯8©8«:Ð%6Ø&)¬2¯8©8«:Ð%6ð%8ó 9ˆð 	×Ñ˜& /Ø"# Q Ø"# Q Ø"# Q ñ)ð *ô	+ô )Ó*ˆØ+.°¨*ˆÔ'Ø—‘ °LØ1@ð !ó BˆäŸ)™) c¬2¯8©8«:Ð%6Ø&)¬2¯8©8«:Ð%6ð%8ó 9ˆà×Ñ˜& /Ø"# Q Ø"# Q ñ)ð *ô	+ð
 ),¬R¯Y©Y«[Ð'9ˆÔ$Ø—‘ °LØ1@ð !ó BˆäŸ)™) c¬2¯8©8«:Ð%6Ø&)¬2¯9©9«;Ð%7ð%9ó :ˆà×Ñ˜& /Ø"% s Ø"# Q ñ)ð *ô	+ò
 +:ˆÔ'Ü�]‰]ÜØDöFð —_‘_ T¸Ø5Dð %ó FˆF÷Fð 37ˆÔ/Ø—‘ °LØ1@ð !ó BˆäŸ)™) c¬2¯7©7«9Ð%5Ø&)¬2¯8©8«:Ð%6Ø&)¬2¯9©9«;Ð%7ð%9ó :ˆð 	×Ñ˜& /Ø"&¨ Ø"% s Ø"# Q ñ)ð *ô	+ô
 .0¯Y©Y«[¼r¿z¹z»|Ñ'LˆÔ$Ø—‘ °LØ1@ð !ó BˆäŸ)™) c¬2¯:©:«<Ð%8Ø&)¬2¯8©8«:Ð%6Ø&)¬2¯9©9«;Ð%7ð%9ó :ˆð 	×Ñ˜& /Ø"&¨ Ø"% s Ø"# Q ñ)ð *õ	+÷/Fñ Fús   Ç	L(Ì(L2c                 ó¾  — d}t        «       }| j                  ||¬«      }t        j                  dt        j                  «       fdt        j
                  «       fg«      }| j                  ||dgdgdœg«       d|_        | j                  ||¬«      }t        j                  dt        j                  «       fdt        j                  «       fg«      }| j                  ||dgd	gdœg«       d
}d|_        | j                  ||¬«      }t        j                  dt        j                  «       fdt        j                  «       fg«      }| j                  ||dgd	gdœg«       y )Ns   a,b
un,éléphantrù   rœ   r�   Úuns   éléphantr›   Úlatin1u
   Ã©lÃ©phants    ÿþa , b 
 u n , é l é p h a n t rŽ   )r   rG  r9   rÚ   r   rÛ   rO  r“   r_  s        r   Útest_encodingz"BaseStreamingCSVRead.test_encodingB  s[  € à(ˆÜ"“}ˆØ—‘ °L�ÓAˆÜŸ)™) c¬2¯9©9«;Ð%7Ø&)¬2¯9©9«;Ð%7ð%9ó :ˆà×Ñ˜& /Ø"& Ø"3Ð!4ñ6ð 7ô	8ð !)ˆÔØ—‘ °L�ÓAˆÜŸ)™) c¬2¯9©9«;Ð%7Ø&)¬2¯9©9«;Ð%7ð%9ó :ˆà×Ñ˜& /Ø"& Ø". ñ1ð 2ô	3ð
Fˆà 'ˆÔØ—‘ °L�ÓAˆÜŸ)™) c¬2¯9©9«;Ð%7Ø&)¬2¯9©9«;Ð%7ð%9ó :ˆà×Ñ˜& /Ø"& Ø". ñ1ð 2õ	3rL   c                 ó  — t        dd¬«      \  }}| j                  |«      }|j                  «       }|j                  |j                  k(  sJ ‚|j	                  |«      sJ ‚|j                  «       |j                  «       k(  sJ ‚y rÿ  )rG   rG  rQ  rÚ   r   r  )rm   rB   rF   rJ  rô   s        r   r  z*BaseStreamingCSVRead.test_small_random_csv`  sr   € Ü'°¸RÔ@‰ˆˆXØ—‘ Ó%ˆØ—‘Ó!ˆØ�|‰|˜xŸ™Ò.Ð.Ð.Ø�|‰|˜HÔ%Ð%Ð%Ø�‰Ó  H×$6Ñ$6Ó$8Ò8Ð8Ñ8rL   c                 óž  — t        dd¬«      \  }}g d¢}||j                  d«      g}|D ]¡  }|D ]š  }|d | j                  d«      dk\  sJ ‚t        |¬«      }| j	                  ||¬«      }|j                  «       }	|	j                  |j                  k(  sJ ‚|	j                  |«      rŒx|	j                  «       |j                  «       k(  rŒšJ ‚ Œ£ y )	Nr   r  r  )é   é   r$  r  r  r  r`  r^  r–   rù   )	rG   r  Úcountr   rG  rQ  rÚ   r   r  )
rm   r  rF   r	  r
  rB   r—   rú   rJ  rô   s
             r   r  z,BaseStreamingCSVRead.test_stress_block_sizesh  sÍ   € ä,°aÀ#ÔFÑˆ�(Ú/ˆØ˜(Ÿ/™/¨'Ó2Ð3ˆÛˆCÛ)�
à˜;˜JÐ'×-Ñ-¨eÓ4¸Ò9Ð9Ð9Ü*°jÔA�ØŸ™Ø lð )ó 4�àŸ™Ó)�Ø—|‘| x§¡Ò6Ð6Ð6Ø—|‘| HÕ-à Ÿ?™?Ó,°×0BÑ0BÓ0DÓDÐDÐDñ *ñ rL   c                 óÊ  — t        j                  «        t        j                  «       }d„ }d}t	        «       }ddg|_        d|_        | j                  ||¬«      } ||dgdgd	œ«       t        j                  «       } ||d
gdgd	œ«       t        j                  «       |k  sJ ‚ ||dgdgd	œ«       t        j                  «       |k  sJ ‚ ||dgdgd	œ«       t        j                  «       |k  sJ ‚t        j                  t        «      5  |j                  «        d d d «       t        j                  «       |k(  sJ ‚d }t        j                  «       |k(  sJ ‚y # 1 sw Y   Œ>xY w)Nc                 óN   — | j                  «       }|j                  «       |k(  sJ ‚y r   )r]  r  )rJ  rF   rM  s      r   Úcheck_one_batchzABaseStreamingCSVRead.test_batch_lifetime.<locals>.check_one_batch  s%   € Ø×*Ñ*Ó,ˆEØ—?‘?Ó$¨Ò0Ð0Ñ0rL   s   10,11
12,13
14,15
16,17
rœ   r�   rƒ   rù   r‡   r€   r›   r¤  r  r—  r;  é   r  )ÚgcÚcollectr9   Útotal_allocated_bytesr   rJ   r—   rG  rS   rT   r^  r]  )rm   Úold_allocatedrt  rl   rú   rJ  Úallocated_after_first_batchs          r   Útest_batch_lifetimez(BaseStreamingCSVRead.test_batch_lifetimez  sN  € Ü
�
‰
ŒÜ×0Ñ0Ó2ˆò	1ð /ˆÜ"“}ˆØ%(¨# JˆÔ!Ø"#ˆÔØ—‘ °L�ÓAˆÙ˜ r d°"°Ñ 6Ô7Ü&(×&>Ñ&>Ó&@Ð#Ù˜ r d°"°Ñ 6Ô7Ü×'Ñ'Ó)Ð-HÒHÐHÐHÙ˜ r d°"°Ñ 6Ô7Ü×'Ñ'Ó)Ð-HÒHÐHÐHÙ˜ r d°"°Ñ 6Ô7Ü×'Ñ'Ó)Ð-HÒHÐHÐHÜ�]‰]œ=Õ)Ø×"Ñ"Ô$÷ *ä×'Ñ'Ó)¨]Ò:Ð:Ð:ØˆÜ×'Ñ'Ó)¨]Ò:Ð:Ñ:÷	 *Ð)ús   ÄEÅE"c                 ó  •— t         ‰| �  «        d}t        «       }d|_        ddg|_        | j                  ||¬«      }t        j                  t        «      5  |j                  «       sJ ‚	 d d d «       y # 1 sw Y   y xY w)Nrø   r‚   r‹   rŒ   rù   )
Úsuperr  r   r‘   rJ   rG  rS   rT   r^  r]  ©rm   rl   rY   rJ  Ú	__class__s       €r   r  z*BaseStreamingCSVRead.test_header_skip_rows–  sk   ø€ Ü‰Ñ%Ô'à.ˆô ‹}ˆØˆŒØ! 4˜LˆÔØ—‘ °D�Ó9ˆÜ�]‰]œ=Õ)Ø×)Ñ)Ô+Ð+Ñ+÷ *×)Ñ)ús   ÁA5Á5A>c                 ó¦  •— t         ‰| �  «        d}t        «       }d|_        | j	                  ||¬«      }t        j                  t        «      5  |j                  «       sJ ‚	 d d d «       d|_        | j	                  ||¬«      }t        j                  t        «      5  |j                  «       sJ ‚	 d d d «       y # 1 sw Y   ŒYxY w# 1 sw Y   y xY w)Nrø   r�   rù   rÂ   )	r}  r  r   r”   rG  rS   rT   r^  r]  r~  s       €r   r  z/BaseStreamingCSVRead.test_skip_rows_after_names£  s­   ø€ ä‰Ñ*Ô,à.ˆô ‹}ˆØ%&ˆÔ"Ø—‘ °D�Ó9ˆÜ�]‰]œ=Õ)Ø×)Ñ)Ô+Ð+Ñ+÷ *ð &+ˆÔ"Ø—‘ °D�Ó9ˆÜ�]‰]œ=Õ)Ø×)Ñ)Ô+Ð+Ñ+÷ *Ð)÷ *Ð)ú÷ *Ð)ús   ÁB;ÂCÂ;CÃC)rz   r{   r|   r   rG  rO  rî   rU  rY  r[  r`  rò  rý  rê  re  rh  rl  r  r  r{  r  rS   rB  rC  r  Ú__classcell__©r  s   @r   rD  rD  t  s~   ø„ ò	.ò8ò7ò7òDò7ò,ò*%ò(%ò,-ò"
+ò!ò?+òB3ò<9òEò$;ô8,ð ‡[�[×Ñó,ó ô,rL   rD  c                   ó   — e Zd Zed„ «       Zy)ÚTestSerialStreamingCSVReadc                  ó   — yr:  rO   rð   s    r   r�   z&TestSerialStreamingCSVRead.use_threads¸  r;  rL   Nr<  rO   rL   r   r„  r„  ·  r=  rL   r„  c                   ó   — e Zd Zed„ «       Zy)ÚTestThreadedStreamingCSVReadc                  ó   — yrA  rO   rð   s    r   r�   z(TestThreadedStreamingCSVRead.use_threads¿  rB  rL   Nr<  rO   rL   r   r‡  r‡  ½  s   „ àñó ñrL   r‡  c                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)ÚBaseTestCompressedCSVReadc                 ó:   — t        j                  d¬«      | _        y )Nzarrow-csv-test-)Úprefix)ÚtempfileÚmkdtempÚtmpdirrð   s    r   ÚsetUpzBaseTestCompressedCSVRead.setUpÆ  s   € Ü×&Ñ&Ð.?Ô@ˆ�rL   c                 óB   — t        j                  | j                  «       y r   )ÚshutilÚrmtreer�  rð   s    r   ÚtearDownz"BaseTestCompressedCSVRead.tearDownÉ  s   € Ü�‰�d—k‘kÕ"rL   c                 ó–   — 	 t        |«      S # t        j                  $ r(}t        j                  t        |«      «       Y d }~y d }~ww xY wr   )r   r9   ÚArrowNotImplementedErrorrS   r¦   r6   )rm   Úcsv_pathr0  s      r   r   z"BaseTestCompressedCSVRead.read_csvÌ  s;   € ð	 Ü˜HÓ%Ð%øÜ×*Ñ*ò 	 Ü�K‰Kœ˜A›×Ñûð	 ús   ‚
 �A AÁAc                 ó˜  — t        dd¬«      \  }}t        j                  j                  | j                  | j
                  «      }| j                  ||«       | j                  |«      }|j                  d¬«       |j                  |j                  k(  sJ ‚|j                  |«      sJ ‚|j                  «       |j                  «       k(  sJ ‚y )Nr   r  r  TrH  )rG   ÚosÚpathr4   r�  Úcsv_filenameÚ
write_filer   rŸ   rÚ   r   r  )rm   rB   rF   r—  rô   s        r   Útest_random_csvz)BaseTestCompressedCSVRead.test_random_csvÒ  s    € Ü'°¸SÔA‰ˆˆXÜ—7‘7—<‘< §¡¨T×->Ñ->Ó?ˆØ�‰˜ #Ô&Ø—‘˜hÓ'ˆØ�‰˜DˆÔ!Ø�|‰|˜xŸ™Ò.Ð.Ð.Ø�|‰|˜HÔ%Ð%Ð%Ø�‰Ó  H×$6Ñ$6Ó$8Ò8Ð8Ñ8rL   N)rz   r{   r|   r�  r”  r   r�  rO   rL   r   rŠ  rŠ  Ä  s   „ òAò#ò ó9rL   rŠ  c                   ó   — e Zd ZdZd„ Zd„ Zy)ÚTestGZipCSVReadzcompressed.csv.gzc                 ó~   — t        j                  |dd«      5 }|j                  |«       d d d «       y # 1 sw Y   y xY w)NÚwbr�   )ÚgzipÚopenr3   ©rm   rš  Úcontentsrˆ  s       r   rœ  zTestGZipCSVRead.write_fileà  s,   € Ü�Y‰Y�t˜T 1Ô%¨Ø�G‰G�HÔ÷ &×%Ñ%ús   ˜3³<c                 óº  — t         j                  j                  | j                  | j                  «      }t        j                  |dd«      5 }|j                  d«       d d d «       t        j                  |dd«      5 }|j                  d«       d d d «       | j                  |«      }|j                  «       g d¢g d¢dœk(  sJ ‚y # 1 sw Y   ŒhxY w# 1 sw Y   ŒCxY w)	Nr¡  r�   s   ab,cd
ef,gh
r‹   s   ij,kl
mn,op
rq  rr  r  )
r™  rš  r4   r�  r›  r¢  r£  r3   r   r  )rm   r—  rˆ  rô   s       r   Útest_concatenatedz!TestGZipCSVRead.test_concatenatedä  sª   € ä—7‘7—<‘< §¡¨T×->Ñ->Ó?ˆÜ�Y‰Y�x  qÔ)¨QØ�G‰GÐ%Ô&÷ *ä�Y‰Y�x  qÔ)¨QØ�G‰GÐ%Ô&÷ *à—‘˜hÓ'ˆØ�‰Ó Ú$Ú$ñ%
ò 
ð 	
ñ 
÷ *Ð)úç)Ð)ús   ÁCÁ=CÃCÃCN)rz   r{   r|   r›  rœ  r§  rO   rL   r   rŸ  rŸ  Ý  s   „ Ø&€Lòó
rL   rŸ  c                   ó   — e Zd ZdZd„ Zy)ÚTestBZ2CSVReadzcompressed.csv.bz2c                 ó|   — t        j                  |d«      5 }|j                  |«       d d d «       y # 1 sw Y   y xY w)NrÆ   )Úbz2ÚBZ2Filer3   r¤  s       r   rœ  zTestBZ2CSVRead.write_fileõ  s*   € Ü�[‰[˜˜sÔ# qØ�G‰G�HÔ÷ $×#Ñ#ús   —2²;N)rz   r{   r|   r›  rœ  rO   rL   r   r©  r©  ò  s   „ Ø'€LórL   r©  c                  ó`   — t        j                  d«      } t        | «       | j                  rJ ‚y ©Nré  )r.   rP  r   Úclosed)Úbufs    r   Ú0test_read_csv_does_not_close_passed_file_handlesr±  ú  s&   € ä
�*‰*Ð+Ó
,€CÜˆS„MØ�zŠzÐˆ>ˆzrL   c            	      óú  — t         j                  j                  g d¢g d¢gddg«      } | j                  d¬«      d   }| |fD ]²  }t	        j
                  «       }t        ||t        d¬	«      «       |j                  d«       | t        |«      k(  sJ ‚t	        j
                  «       }t        ||t        d
¬	«      «       |j                  d«       t        | j                  ¬«      }| t        ||¬«      k(  rŒ²J ‚ d d t        d¬	«      ft        | j                  ¬«      d t        d
¬	«      fd t        d¬«      t        dd¬«      ft        | j                  ¬«      t        d¬«      t        d
d¬«      ffD ]ò  \  }}}t	        j
                  «       }t        || j                  |¬«      5 }|j                  | «       d d d «       |j                  d«       | t        |||¬«      k(  sJ ‚t	        j
                  «       }t        || j                  |¬«      5 }| j                  d¬«      D ]  }|j!                  |«       Œ 	 d d d «       |j                  d«       | t        |||¬«      k(  rŒòJ ‚ y # 1 sw Y   Œ²xY w# 1 sw Y   Œ<xY w)Nr°  r:  Úc1Úc2r‚   )Úmax_chunksizer   T)rã   FrÖ  rù   rß   r�  )rã   rª   r±   ©Úwrite_optionsr
  rN   )r9   r<   r=   rc  r.   rP  r   r   Úseekr   r   rJ   r	   r   rÚ   Úwrite_tableÚwrite_batch)	rÂ  Úrecord_batchrQ  r°  rú   r  r·  ÚwriterrM  s	            r   Útest_write_read_round_tripr½    s*  € Ü
�‰×ÑšiªÐ9¸DÀ$¸<ÓH€AØ—<‘<¨a�<Ó0°Ñ3€LØ�LÓ!ˆä�j‰j‹lˆÜ�$˜œ\¸Ô>Ô?Ø�‰�ŒØ”H˜S“MÒ!Ð!Ð!ô �j‰j‹lˆÜ�$˜œ\¸Ô?Ô@Ø�‰�Œä"°·±Ô?ˆØ”H˜S¨|Ô<Ó<Ð<Ð<ð "ð" 
ˆt”\°Ô6Ð7Ü	 !§.¡.Ô	1°4Ü	 UÔ	+ð	-à	Œ| cÔ*Ü	 T°SÔ	9ð	;ä	 !§.¡.Ô	1Ü	 Ô	%Ü	 U°dÔ	;ð	=ó	7Ñ2ˆ�m ]ô �j‰j‹lˆÜ�s˜AŸH™H°MÕBÀfØ×Ñ˜qÔ!÷ Cà�‰�ŒØ”H˜S¨|Ø+8ô:ò :ð 	:ð :ä�j‰j‹lˆÜ�s˜AŸH™H°MÕBÀfØŸ™°A˜Ö6�Ø×"Ñ" 5Õ)ñ 7÷ Cð 	�‰�ŒØ”H˜S¨|Ø+8ô:ó :ð 	:ð :ñ+	7÷ CÐBú÷ CÐBús   Æ"I%È)I1É%I.	É1I:	c                  ó²  — t         j                  j                  g d¢g d¢gddg«      } t        j                  «       }t        d¬«      dft        «       dft        d	¬«      d
ffD ]]  \  }}t        || j                  |¬«      5 }|j                  | «       d d d «       |j                  «       |k(  sJ ‚|j                  d«       Œ_ t         j                  j                  ddggdg«      } t        j                  «       }t        d¬«      dft        d¬«      t         j                  j                  ffD ]_  \  }}t        || j                  |¬«      5 }	 |j                  | «       	 d d d «       |j                  «       |k(  sJ ‚|j                  d«       Œa y # 1 sw Y   �ŒxY w# t        $ r!}t        ||«      sJ ‚Y d }~d d d «        y d }~ww xY w# 1 sw Y   ŒlxY w)N©rN   r   N©rœ   NrÃ   r³  r´  rá   )rä   s   "c1","c2"
1,a
2,
,c
ó   "c1","c2"
1,"a"
2,
,"c"
râ   s   "c1","c2"
"1","a"
"2",
,"c"
r¶  r   r)   r¨   rà   s   "c1"
","
""""
)r9   r<   r=   r.   rP  r   r   rÚ   r¹  r7   r¸  Úlibr    Ú	Exceptionrt   )rÂ  r°  r·  Úresr¼  r0  s         r   Útest_write_quoting_stylerÅ  -  s   € Ü
�‰×ÑšlÒ,<Ð=ÀÀd¸|ÓL€AÜ
�*‰*‹,€Cä	 FÔ	+Ð-HÐIÜ	‹Ð8Ð9Ü	 KÔ	0Ø	,ð	.óÑˆ�sô �s˜AŸH™H°MÕBÀfØ×Ñ˜qÔ!÷ Cà�|‰|‹~ Ò$Ð$Ð$Ø�‰��ðô 	�‰×Ñ˜s D˜k˜]¨T¨FÓ3€AÜ
�*‰*‹,€Cä	 HÔ	-Ð/CÐDÜ	 FÔ	+¬R¯V©V×-@Ñ-@ÐAóÑˆ�sô �s˜AŸH™H°MÕBÀfðØ×"Ñ" 1Õ%÷ Cð �|‰|‹~ Ò$Ð$Ð$Ø�‰��ñ÷ CÑBûô ò ô " ! SÔ)Ð)Ð)Û÷ CÑBûðú÷ CÐBús<   ÂFÅGÅF ÆF	Æ 	G
Æ)GÆ7GÇG
Ç
GÇG	c                  ó¢  — t         j                  j                  g d¢g d¢gddg«      } t        j                  «       }t        d¬«      dft        «       dft        d	¬«      dffD ]]  \  }}t        || j                  |¬
«      5 }|j                  | «       d d d «       |j                  «       |k(  sJ ‚|j                  d«       Œ_ y # 1 sw Y   Œ2xY w)Nr¿  rÀ  r³  r´  rá   )Úquoting_headers   c1,c2
1,"a"
2,
,"c"
rÁ  râ   r¶  r   )r9   r<   r=   r.   rP  r   r   rÚ   r¹  r7   r¸  )rÂ  r°  r·  rÄ  r¼  s        r   Útest_write_quoting_headerrÈ  N  s¸   € Ü
�‰×ÑšlÒ,<Ð=ÀÀd¸|ÓL€AÜ
�*‰*‹,€Cä	 VÔ	,Ð.IÐJÜ	‹Ð8Ð9Ü	 [Ô	1Ø	(ð	*óÑˆ�sô �s˜AŸH™H°MÕBÀfØ×Ñ˜qÔ!÷ Cà�|‰|‹~ Ò$Ð$Ð$Ø�‰��ñ÷ CÐBús   ÂCÃC	c                  ó~   — d„ } t        j                  «       5   | «       } |«       �J ‚	 d d d «       y # 1 sw Y   y xY w)Nc                  ól   — t        j                  d«      } t        | «      }t        j                  |«      S r®  )r.   rP  r   ÚweakrefÚref)r°  rô   s     r   Úinnerz,test_read_csv_reference_cycle.<locals>.inner_  s)   € Ü�j‰jÐ/Ó0ˆÜ˜“ˆÜ�{‰{˜5Ó!Ð!rL   )r   Údisabled_gc)rÍ  Úwrs     r   Útest_read_csv_reference_cyclerÐ  ]  s4   € ò"ô
 
×	Ñ	Õ	Ù‹WˆÙ‹tˆ|Ð‰|÷ 
×	Ñ	ús   ˜3³<Útype_factoryc                  ó.   — t        j                  dd«      S ©Né   rN   ©r9   rË  rO   rL   r   r5  r5  j  ó   € ŒB�M‰M˜"˜aÔ rL   c                  ó.   — t        j                  dd«      S )Né&   r;  rÕ  rO   rL   r   r5  r5  k  ó   € ŒB�M‰M˜"˜bÔ!rL   c                  ó.   — t        j                  dd«      S rÓ  ©r9   Ú
decimal256rO   rL   r   r5  r5  l  rÖ  rL   c                  ó.   — t        j                  dd«      S )NéL   r‡   rÛ  rO   rL   r   r5  r5  m  rÙ  rL   c                 ó*  —  |«       }t        j                  dt        j                  ddg«      j                  |«      i«      }t	        || dz  «       t        | dz  «      }|j                  d«      j                  |«      |j                  d«      k(  sJ ‚y )NÚcolrN   r   zout.csv)r9   rô   r:   Úcastr   r   Úcolumn)r�  rÑ  r*   rô   Úouts        r   Útest_write_csv_decimalrä  i  s   € ñ ‹>€DÜ�H‰H�eœRŸX™X q¨! fÓ-×2Ñ2°4Ó8Ð9Ó:€Eäˆe�V˜iÑ'Ô(Ü
�6˜IÑ%Ó
&€Cà�:‰:�eÓ×!Ñ! $Ó'¨5¯<©<¸Ó+>Ò>Ð>Ñ>rL   c                  óì   — d}  G d„ dt         j                  «      }t        d«      D ]?  }t        j                  t
        j                  «      5  t         || «      «       d d d «       ŒA y # 1 sw Y   ŒLxY w)Ns   a,b,cc                   ó(   ‡ — e Zd Zˆ fd„Zˆ fd„Zˆ xZS )ú-test_read_csv_gil_deadlock.<locals>.MyBytesIOc                 óF   •— t        j                  d«       t        ‰| �  |Ž S ©Ngü©ñÒMbP?)r£  r  r}  Úread©rm   r  r  s     €r   rê  z2test_read_csv_gil_deadlock.<locals>.MyBytesIO.read�  s   ø€ Ü�J‰J�uÔÜ‘7‘< Ð&Ð&rL   c                 óF   •— t        j                  d«       t        ‰| �  |Ž S ré  )r£  r  r}  Úreadintorë  s     €r   rí  z6test_read_csv_gil_deadlock.<locals>.MyBytesIO.readinto…  s   ø€ Ü�J‰J�uÔÜ‘7Ñ# TÐ*Ð*rL   )rz   r{   r|   rê  rí  r�  r‚  s   @r   Ú	MyBytesIOrç  €  s   ø„ ô	'÷	+ð 	+rL   rî  rÔ  )r.   rP  r   rS   rT   r9   r    r   )rQ  rî  r"   s      r   Útest_read_csv_gil_deadlockrï  y  sT   € ð
 €Dô+”B—J‘Jô +ô �2ŽYˆÜ�]‰]œ2Ÿ?™?Õ+Ü‘Y˜t“_Ô%÷ ,Ð+ñ ß+Ð+ús   ÁA*Á*A3	ztables,expectedc                  óü   — t        j                  dg i«      j                  t        j                  dt        j                  «       fg«      «      t        j                  ddgi«      t        j                  ddgi«      gS ©NÚcol1rœ   r�   ©r9   rô   rá  rÚ   r   rO   rL   r   r5  r5  ‘  s\   € ”—‘˜6 2˜,Ó'×,Ñ,¬R¯Y©Y¸ÄÇÁÃÐ8MÐ7NÓ-OÓPÜ—‘˜6 C 5˜/Ó*Ü—‘˜6 C 5˜/Ó*ñ,rL   s   "col1"
"a"
"b"
c                  óü   — t        j                  ddgi«      t        j                  dg i«      j                  t        j                  dt        j                  «       fg«      «      t        j                  ddgi«      gS rñ  ró  rO   rL   r   r5  r5  ˜  s\   € ”—‘˜6 C 5˜/Ó*Ü—‘˜6 2˜,Ó'×,Ñ,¬R¯Y©Y¸ÄÇÁÃÐ8MÐ7NÓ-OÓPÜ—‘˜6 C 5˜/Ó*ñ,rL   c            	      óü   — t        j                  ddgi«      t        j                  ddgi«      t        j                  dg i«      j                  t        j                  dt        j                  «       fg«      «      gS rñ  ró  rO   rL   r   r5  r5  Ÿ  s]   € ”—‘˜6 C 5˜/Ó*Ü—‘˜6 C 5˜/Ó*Ü—‘˜6 2˜,Ó'×,Ñ,¬R¯Y©Y¸ÄÇÁÃÐ8MÐ7NÓ-OÓPñRrL   c                 óÈ   — t        j                   | «       «      }t        j                  «       }t	        ||«       |j                  d«       |j                  «       }||k(  sJ ‚y r   )r9   Úconcat_tablesr.   rP  r   r¸  rê  )ÚtablesrF   Úcombinedr°  rk   s        r   Ú4test_write_csv_empty_batch_should_not_pollute_outputrú  Ž  sO   € ô0 ×Ñ¡£Ó)€Hä
�*‰*‹,€CÜˆh˜ÔØ‡H�HˆQ„KØ�X‰X‹Z€Fà�XÒÐÑrL   )r   r‡   z
T)Hr¸   r«  r   r   Údecimalr   rv  r¢  r.   r1   r™  r+   r'  r’  r  r   r�  r  r£  ÚunittestrË  rS   Úpyarrowr9   Úpyarrow.csvr   r   r   r	   r
   r   r   r   r   r   Úpyarrow.testsr   r   r#   r%   rG   rK   r_   rg   ri   r‰   r¤   r´   rÝ   ræ   ÚABCrè   rE  r8  r?  rD  r„  rB  r‡  rŠ  ÚTestCaserŸ  r©  r±  r½  rÅ  rÈ  rÐ  Úparametrizerä  rï  rú  rO   rL   r   Ú<module>r     s  ðó$ Û 
ß #Ý Û 	Û Û 	Û Û 	Û Û Û Û Û Û Û Û Û Û ã ã ÷4÷ 4÷ 4õ ò!ò"òóò$#ò,ò00÷-ñ -ò$ò&@>òFE?òPnAòb?ôBXK�#—'‘'ô XKôv
K�{ô Kô\Ð-ô ôÐ/ô ô@,˜;ô @,ôF
Ð!5ô ð ‡�×ÑôÐ#7ó ó ð÷9ñ 9ô2
Ð/°×1BÑ1Bô 
ô*Ð.°×0AÑ0Aô òò):òXòBò	ð ‡�×Ñ˜Ù Ù!Ù Ù!ð	*ó ñ?óð?ò&ð* ‡�×ÑÐ*ñ	,ð 	ð	ñ	,ð 	ð	ñ	Rð 	ð	ð!-ó ñ.ó/ñ.rL   