Ë
    ìéñi^: ã                   ó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      úX/var/www/pod-logistic/pod-ai/venv/lib/python3.12/site-packages/pyarrow/tests/test_csv.pyÚgenerate_col_namesr   /   sG   è ø€ ä×$Ñ$€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   s4   è ø€ ä�1�h Ñ)¨8Ó4ò "ˆØ�!�A˜‘LÐ!Ó!ñ"ù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 Aˆ3�;‰;�q˜$ÕÐ
D€CÐ
DÜ
�+‰+‹-€CÜ”Y×%Ñ%Ô&8Ó&:¸HÓEÓF€IÙØ�	‰	�#—(‘(˜9Ó%Ô&Ø�	‰	�'ÔÜ˜#˜x¨Ó2ò ˆØ�	‰	�#—(‘(œ3œs C›=Ó)Ô*Ø�	‰	�'Õðð �,‰,‹.×
Ñ
Ó
!€Cä'¨¨X°xÓ@öBØô �x‰x˜¤"§(¡(£*Ö-ð B€Gð 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à#×)Ñ)Ó+ò D‰ˆˆfÜ�t˜TÓ" f¨Q¡iÒ/ð 	2Ø*¨TÑ1ó	2Ð/àò 	DˆAÜ�D˜$ Ô"Ü˜4 Ó&¨!Ó+ÐCÐ-CÓCÐ+ñ	DðDô 
�‰”~Ó	&ñ %Ø $ˆÔ÷%ð 9D×8IÑ8IÓ8K×L©¨¨f�D˜& ™)‘OÐL€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   sk   € ÙÑ�Ñ€DØ�}‰}˜WŸ]™]¨4Ø4;×4LÑ4Lð +ó Nó O€Hà"×(Ñ(Ó*ò 0‰ˆˆeÜ�x Ó&¨%Ó/Ð/Ð/ñ0rL   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Ö
#�Š1Ð
#€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ˆØˆŒØ�‰Œ÷ð
 <€EÜ	�‰”r—‘¨eÔ	4ñ Ù‹uˆØˆŒØ�‰Œ÷ð
 H€EÜ	�‰”r—‘¨eÔ	4ñ Ù‹uˆØ%'ˆÔ"Ø�‰Œ÷ð
)€Eä	�‰”r—‘¨eÔ	4ñ Ù‹uˆØ)-ˆÔ&Ø&ˆÔØ�‰Œ÷	ðÐô �‹:Ð5Ð6IÐ5JÈ!ÐLÒLÐLÐLÜˆt‹9˜,Ð':Ð&;¸1Ð=Ò=Ð=Ñ=÷Gñ ú÷ð ú÷ð ú÷ð ú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´   å   si  € Ü
€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ˆØˆŒØ�‰Œ÷ô
 
�‰”r—‘¨eÔ	4ñ Ù‹uˆØˆŒØ�‰Œ÷ð
 @€EÜ	�‰”r—‘¨eÔ	4ñ Ù‹uˆØˆŒØ�‰Œ÷ô
 
�‰”r—‘¨eÔ	4ñ Ù‹uˆØˆŒØ�‰Œ÷ð
 A€EÜ	�‰”r—‘¨eÔ	4ñ Ù‹uˆØˆÔØ�‰Œ÷ô
 
�‰”r—‘¨eÔ	4ñ Ù‹uˆØˆÔØ�‰Œ÷ð
 Ðô �‹:Ð6Ð7JÐ6KÈ1ÐMÒMÐMÐMÜˆt‹9˜-Ð(;Ð'<¸AÐ>Ò>Ð>Ñ>÷Uñ ú÷
ñ ú÷ñ ú÷
ð ú÷ð ú÷
ð ú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        «      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 «       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'        |j.                  t*        «      sJ ‚ddg|_        |j.                  ddgk(  sJ ‚|j0                  g k(  sJ ‚t        g|_        |j0                  t        gk(  sJ ‚ |dt        j                  «       iddgddgdd gd!t        d"g¬#«      }|j                  dt        j                  «       ik(  sJ ‚|j(                  ddgk(  sJ ‚|j.                  dd gk(  sJ ‚|j,                  ddgk(  sJ ‚|j                  d!k(  sJ ‚|j0                  t        d"gk(  sJ ‚d$}t3        |«      d%|› d&�k(  sJ ‚t5        |«      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)(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À   z..r   éŸ† )r�   ÚcÚint16Únull)r\   Úwrœ   r�   r›   rˆ   zDataType expectedr˜   Ú úN/AÚxxxÚyyyÚNÚnnÚTÚttÚFÚffiç  z%Y-%m-%d)Úcolumn_typesÚnull_valuesÚtrue_valuesÚfalse_valuesÚauto_dict_max_cardinalityrÀ   a˜  
    check_utf8=True,
    column_types={'a': DataType(null)},
    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   rS   rT   Ú
ValueErrorr¼   rÔ   rÐ   r9   rÃ   Úfloat32rÄ   ÚschemaÚint32r   ÚbinaryÚ	TypeErrorrt   rÑ   r0   rÒ   rÓ   rÀ   r¡   r6   )r¢   rW   rY   r×   r£   s        r   Útest_convert_optionsrÛ   -  sm  € Ü
€CÙ‹5€DäØ˜˜u˜Ø" D˜MØ$(¨% =Ø˜C�jØ˜e U˜^Ð,Ø!&¨ Ø ˜Ø¤¨Ð1Ð2õ4ô !Ø�]ØØ Ø#(ØØ ˜Ø %ØÜ" GÐ,õ	.ô 
�‰”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Ó	!ñ ØˆÔ÷ô �d×&Ñ&¬Ô-Ð-Ð-Ø�×!Ñ!Ñ!Ð!Ð!Ø�D×$Ñ$Ñ$Ð$Ð$Ø˜u�~€DÔØ×Ñ  u˜~Ò-Ð-Ð-ä�d×&Ñ&¬Ô-Ð-Ð-Ø˜u�~€DÔØ×Ñ  u˜~Ò-Ð-Ð-ä�d×'Ñ'¬Ô.Ð.Ð.Ø ˜€DÔØ×Ñ ¨ Ò.Ð.Ð.à×!Ñ! RÒ'Ð'Ð'Ü%˜Y€DÔØ×!Ñ!¤g YÒ.Ð.Ð.á˜S¤"§'¡'£)Ð,Ø ˜;°S¸$°KØ  $˜KÀ3Ü")¨:Ð!6ô8€Dð ×Ñ ¤b§g¡g£iÐ 0Ò0Ð0Ð0Ø×Ñ  T˜{Ò*Ð*Ð*Ø×Ñ  d Ò+Ð+Ð+Ø×Ñ  T˜{Ò*Ð*Ð*Ø×)Ñ)¨SÒ0Ð0Ð0Ø×!Ñ!¤g¨zÐ%:Ò:Ð:Ð:ð1Ðô �‹:Ð8Ð9LÐ8MÈQÐOÒOÐOÐOÜˆt‹9˜/Ð*=Ð)>¸aÐ@Ò@Ð@Ñ@÷M"ñ "ú÷*(ñ (ú÷ñ ús$   Á0QÈ<
QÉ'Q+ÑQÑQ(Ñ+Q5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ˆØˆŒØ�‰Œ÷ð
Ðô �‹:Ð6Ð7JÐ6KÈ1ÐMÒMÐMÐMÜˆt‹9˜-Ð(;Ð'<¸AÐ>Ò>Ð>Ñ>÷ð ú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ò 	4‰LˆD�&Ø˜#˜$�< :¨dÑ#3Ó3Ð3Ð3ð	4ð —‘ °4Ø.8ð  ó :ˆà�|‰|˜xŸ™Ò.Ð.Ð.Ø�~‰~ Ò$Ð$Ð$Ø—_‘_Ó&ˆ
Ø$×.Ñ.Ó0×6Ñ6Ó8ò 	4‰LˆD�&Ø˜#˜$�< :¨dÑ#3Ó3Ð3Ð3ð	4ô )°!¸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Ñ$ó%ð &ð %ñ	&rL   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_msg`  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_errors]  sB  ø€ ô	6ô !  C°TÔ:‰ˆˆQä"“}ˆÜ"% c£(¨Q¡,ˆÔÜ(Ó*ˆØ(+¬R¯X©X«ZÐ'8ˆÔ$ð  
Ñ*ˆÙ$Ð%BÀCÓHˆÜ�]‰]œ2Ÿ?™?°/ÔBñ 	=Ø�O‰O˜OØ)5Ø,;ð ô =÷	=ð
 ˜^Ñ+ˆÙ"ð?à�óˆô �]‰]œ2Ÿ?™?°-Ô@ñ 	=Ø�O‰O˜LØ)5Ø,;ð ô =÷	=ð
 <ˆØ" X™~ÐÙ!Ð"GÈØ"*¨1¨R .×"7Ñ"7¸Ó"@óBˆä�]‰]œ2Ÿ?™?°,Ô?ñ 	=Ø�O‰OÐ0Ø)5Ø,;ð ô =÷	=ð .0ˆÔ*ä�]‰]œ2Ÿ?™?°/ÔBñ 	=Ø�O‰O˜OØ)5Ø,;ð ô =÷	=ô
 �]‰]œ2Ÿ?™?°-Ô@ñ 	=Ø�O‰O˜LØ)5Ø,;ð ô =÷	=ô
 �]‰]œ2Ÿ?™?°,Ô?ñ 	=Ø�O‰OÐ0Ø)5Ø,;ð ô =÷	=ð
 ./ˆÔ*ô !  C°UÔ;‰ˆˆQÚ$8ˆÔ!Ø 
Ñ*ˆÙ$Ð%BÀCÓHˆÜ�]‰]œ2Ÿ?™?°/ÔBñ 	=Ø�O‰O˜OØ)5Ø,;ð ô =÷	=ð
  # X™~ÐÙ!Ð"GÈØ"*¨1¨R .×"7Ñ"7¸Ó"@óBˆä�]‰]œ2Ÿ?™?°,Ô?ñ 	=Ø�O‰OÐ0Ø)5Ø,;ð ô =÷	=ð
 ˜^Ñ+ˆÙ"ð?àóˆð &×,Ñ,¬S°«XÓ6ˆÜ�]‰]œ2Ÿ?™?°-Ô@ñ 	=Ø�O‰O˜LØ)5Ø,;ð ô =÷	=ð "$ˆÔÜ�]‰]œ2Ÿ?™?°/ÔBñ 	=Ø�O‰O˜OØ)5Ø,;ð ô =÷	=ô
 �]‰]œ2Ÿ?™?°-Ô@ñ 	=Ø�O‰O˜LØ)5Ø,;ð ô =÷	=ð 	=÷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ò   r1  Úexpected_rowss   `      r   Útest_invalid_row_handlerz$BaseTestCSV.test_invalid_row_handlerÆ  sÇ  ø€ Ø+ˆÜ!“^ˆ
Ü�]‰]ÜØ4ô6ñ 	<ð �O‰O˜D°
ˆOÔ;÷	<ô *;¸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Ô;÷	<ô $ A q©'°!«*°cÓ:Ð;ˆØ×-Ñ-×2Ñ2°mÒCÐCÐCô *;¸6Ó)Bˆ
Ô&Ø"×(Ñ(¨×)<Ñ)<¸ZÓ)HÓIˆ
à—‘ °J�Ó?ˆØ�‰Ó Ø�s�Ø�s�ñ%
ò 
ð 	
ñ 
÷G	<ñ 	<ú÷.	<ð 	<ú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   Úgr.  Ú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›,ò 	KˆJÜ—‘œzØ%JôLñ Kà—‘Ø¤{¸jÔ'Ið  ô K÷Kð Kñ	K÷Kð Kús   ÂB0Â0B9	N)rz   r{   r|   Ú__doc__r¸   Úabstractmethodrì   Úpropertyr�   Ústaticmethodrô   r  r  rS   ÚmarkÚnumpyr+  r4  r;  rO   rL   r   ræ   ræ   °  s�   „ ÙNà×Ññ"ó ð"ð Ø×Ññ"ó ó ð"ð ñ+ó ð+ò+
òZg&ðR ‡[�[×Ññf=ó ðf=òP)
óVKrL   ræ   c                   óB  — 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"e#jH                  jJ                  d#„ «       Z&e#jH                  jJ                  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   rD  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_header*  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   rP  rò   s       r   Útest_bomzBaseCSVTableRead.test_bom1  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_endingrO  rò   s         r   Útest_one_chunkzBaseCSVTableRead.test_one_chunk7  s�   € ò 2ˆØ2ò 	ˆKØ # [Ð1ò �Ø"×'Ñ'¨Ó-°Ñ;�ØŸ™¨Ó-�Ü˜5×+Ñ+Ó-Ó.°!Ò3Ð3Ð3Ø—‘Ó(Ú#Ú#ñ-ó ð ð ñ	ñ	rL   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_namesE  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  rf  rg  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_namesx  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ð">ô?ñ 	Cð �O‰O˜D°/ˆOÔB÷	C÷ 	Cñ 	Cú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ö   rq  Tr  rr  r‹   rs  ©NNNro  rŒ   rg  )NNNN)rs  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ƒ   r8  )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   r.  Úf)r~  Ng      @)r   r  N)rÆ   r�  Únanrw  )ó   3s   nanó   ÿ)NTF)rœ   r�   rÂ   r   r.  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      @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à é@â r8  )rì   r9   r×   r;   Ú	timestampr   r   r{  s       r   Útest_simple_timestampsz'BaseCSVTableRead.test_simple_timestamps)  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
rn  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_parsers:  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›   rn  r‘  Úms)rì   r9   r×   Údate32r   r   r
   Údate64rÐ   r–  r   )rm   rl   rò   r×   rY   s        r   Ú
test_dateszBaseCSVTableRead.test_dates\  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�   é   é"   r_  r"  é;   z12:34:56.789z23:59:59.999r›   Úusr›  rn  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,4rn  rœ   r�   )r‹   õ   cdÃ©r©  r‹   )rN   r   r�   r‚   r›   r   rN   é2   Fs   a,b
ab,1
cdÿ,2
ab,3)r  rD  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
rn  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
rn  rœ   r�   rÂ   )ÚTrueÚFalser½  r¾  rÇ   )TFTFN)Útr†  r»  r¼  rÇ   r8  )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   r.  Úzz©rÐ   s(   a,b,c,d,e
1,2,3,true,1.0
4,-5,6,false,0
rn  rœ   r�   rÂ   r   r.  rN   r‚   ç       @g      Àr€  Ú6TFú1.00z0.00)rœ   r�   rÂ   r   r.  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Ÿ?™?Ó+ð 	8¨sØ�O‰O˜D°$ˆOÔ7÷	8ä�#—)‘)‹nˆØ# sÑ*Ð*Ð*ØCÀsÑJÐJÑJ÷		8ð 	8ú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
rn  )r¸   Údefgr¸   )r•  r•  NrÇ  z0.50)rÃ  rr  rr  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_dict8  sƒ  € ð ”"—-‘-¤§¡£
¬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÷	@÷ 	@ñ 	@ú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†  rh  )r   r
   r9   rÙ   rì   r×   r   r   rx  s         r   Ú#test_column_types_with_column_namesz4BaseCSVTableRead.test_column_types_with_column_namesX  s«   € ð "ˆÜ"°°c°
Ô;ˆÜ(°s¼B¿I¹I»KÐ6HÔIˆØ—‘ °<Ø0?ð  ó Aˆä—‘˜S¤"§)¡)£+Ð.Ø ¤"§)¡)£+Ð.ð0ó 1ˆà�|‰|˜vÒ%Ð%Ð%Ø�‰Ó Ú#Ú ñ%
ò 
ð 	
ñ 
rL   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ƒ   r8  rY  rV  s      r   Útest_no_ending_newlinez'BaseCSVTableRead.test_no_ending_newlineh  sH   € à%ˆØ—‘ Ó%ˆØ�‰Ó Ø�Q�Ø�Q�Ø�Q�ñ%
ò 
ð 	
ñ 
rL   c                 óX   — d}| j                  |«      }|j                  «       dg ik(  sJ ‚y )Ns   ,

rÆ   rY  rV  s      r   Útest_trivialzBaseCSVTableRead.test_trivialr  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_linesx  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
ri  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Ô!÷	"à!ˆÜ�]‰]œ2Ÿ?™?Ð2MÔNñ 	"Ø�O‰O˜DÔ!÷	"à9ò 	&ˆDÜ—‘œrŸ™Ð6FÔ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ˆØò 	EˆCØ)ò E�
Ü*°jÔA�ØŸ™¨¸,˜ÓG�Ø—|‘| x§¡Ò6Ð6Ð6Ø—|‘| HÕ-à Ÿ?™?Ó,°×0BÑ0BÓ0DÓDÐDÐDñEñ	E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Ä  rn  ç      $@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 �q˜˜’WÐ9ˆ	Ð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  r.  s              r   Útest_cancellationz"BaseCSVTableRead.test_cancellationÔ  sã  € ä×$Ñ$Ó&×,Ñ,Ü×%Ñ%Ó'×-Ñ-ò.ä�K‰KÐAÔBò	/ð ˆØˆØˆà˜cÒ! h°¢mÜÐ" MÔ2Ø" Z°-Ñ%?Ñ?ˆIØˆHðô ×*Ñ*Ó,ð B°ðBÜ%×,Ñ,Ð4FÔG˜ØŸ™œ	Ü!ŸY™Y›[˜ð=Ø ŸO™O¨IÔ6ô Ÿ™ u g¨r°E°7¸DÕA÷Bð( Ð#ð ×'Ñ'Ð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ú÷Bð Bûô  %ò áðú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>  s   ø€ ˜4Ÿ?™?¨;Ó7€ rL   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ì   rS  rW  rZ  rd  rj  rl  ru  ry  r|  r„  rŠ  r�  r—  r™  rž  r§  r³  r¹  rÀ  rË  rÑ  r×  rÚ  rÜ  rß  râ  rí  rñ  rû  r  rS   r@  r  r"  r&  rO   rL   r   rC  rC    sð   „ à15ô ò8ò	ò#ò2òò1
òf=ò2Cò:+
òZ
ò
ò 
ò.
ò2
ò" 
òD"
òH
ò6/-òb,
ò\
ò*'KòR@ò@
ò 
ò-ò
ò*
&ò
ò9òEò/ð0 ‡[�[×Ññ@)ó ð@)ðD ‡[�[×Ññó ñrL   rC  c                   ó   — e Zd Zed„ «       Zy)ÚTestSerialCSVTableReadc                  ó   — y©NFrO   rî   s    r   r�   z"TestSerialCSVTableRead.use_threads#  ó   € àrL   N©rz   r{   r|   r>  r�   rO   rL   r   r(  r(  "  ó   „ Øñó ñrL   r(  c                   ó   — e Zd Zed„ «       Zy)ÚTestThreadedCSVTableReadc                  ó   — y©NTrO   rî   s    r   r�   z$TestThreadedCSVTableRead.use_threads)  ó   € àrL   Nr,  rO   rL   r   r/  r/  (  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ø   )rI  r   r�   r   )rm   rB   r  rë   rø   s        r   r   zBaseStreamingCSVRead.open_csv0  s;   € ð ×(Ñ(¨¼»ÓGˆØ#'×#3Ñ#3ˆÔ Ü˜Ð-˜dÒ- fÑ-Ð-rL   c                 óN   —  | j                   t        j                  |«      fi |¤ŽS r   )r   r9   rK  rê   s      r   Ú
open_byteszBaseStreamingCSVRead.open_bytes;  rL  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 )NTrF  )r×   r0   rñ   ÚziprŸ   r   )rm   ÚreaderÚexpected_schemarP  ÚbatchesÚbatchÚexpected_batchs          r   Úcheck_readerz!BaseStreamingCSVRead.check_reader>  s„   € Ø�}‰} Ò/Ð/Ð/Ü�v“,ˆÜ�7‹|œs =Ó1Ò1Ð1Ð1Ü%(¨°-Ó%@ò 	7Ñ!ˆE�>Ø�N‰N ˆNÔ%Ø—<‘< ?Ò2Ð2Ð2Ø—?‘?Ó$¨Ó6Ð6Ð6ñ	7rL   c                 óD   —  | j                   |fi |¤Žj                  «       S r   )r7  Úread_allrê   s      r   rì   zBaseStreamingCSVRead.read_bytesG  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.   rN  r   r9   r×   r;   r?  )rm   rO  rP  rQ  r:  r;  s         r   rS  z%BaseStreamingCSVRead.test_file_objectJ  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 )NrU  r¸   r·   rú   )r7  r9   r×   rÄ   r?  ©rm   rl   r:  r;  s       r   rW  z BaseStreamingCSVRead.test_headerS  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   rG  r¸   rH  rI  rú   rJ  )	r9   r×   r   rÙ   r   rñ   r—   r7  r?  )rm   rl   r;  rø   r:  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)NrF  r„   r÷   rœ   r�   é{   iÈ  r›   zCSV conversion error to int64r˜   )r   rñ   r—   r7  r9   r×   r;   Úread_next_batchr   rS   rT   rÕ   ÚStopIteration©rm   rl   rø   r:  r;  s        r   Útest_inference_failurez+BaseStreamingCSVRead.test_inference_failurep  s  € à3ˆÜ"“}ˆÜ"% d£)¨a¡-ˆÔØ—‘ °L�ÓAˆÜŸ)™) c¬2¯8©8«:Ð%6Ø&)¬2¯8©8«:Ð%6ð%8ó 9ˆà�}‰} Ò/Ð/Ð/Ø×%Ñ%Ó'×1Ñ1Ó3Ø�˜c˜Uñ8
ò 
ð 	
ð 
ô �]‰]œ:Ø!@ô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    r7  rN  r   rO  )rm   rl   rø   r:  s       r   râ  z%BaseStreamingCSVRead.test_invalid_csv„  s  € à(ˆÜ"“}ˆØ"$ˆÔÜ�]‰]œ2Ÿ?™?Ø!<ô>ñ 	1à—_‘_Ø <ð %ó 1ˆF÷	1ð )ˆØ"#ˆÔØ—‘ °L�ÓAˆØ×%Ñ%Ó'×1Ñ1Ó3¸a¸SÈÀsÑ7KÒKÐKÐKÜ�]‰]œ2Ÿ?™?Ø!<ô>ñ 	%à×"Ñ"Ô$÷	%ô �]‰]œ=Ó)ñ 	%Ø×"Ñ"Ô$÷	%ð 	%÷	1ð 	1ú÷	%ð 	%ú÷	%ð 	%ú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ë  )r7  r9   r×   r   r?  r	   )rm   rl   r:  r;  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ƒ   r8  )r7  r9   r×   r;   r?  rD  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Õ   r7  rî   s    r   Útest_empty_filez$BaseStreamingCSVRead.test_empty_file·  s2   € Ü�]‰]œ:Ð-=Ô>ñ 	!Ø�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   r.  r†  r÷   r   r.  r†  rN   r‚   r   r~   r�   rƒ   r  )r.  r†  rÞ  Ú5)r6  r†  r.  z,Column 'g' in include_columns does not existr˜   Tr6  )r6  r.  r†  )r.  r6  )r   rJ   r7  r9   r×   r;   r?  r
   r½   r   rÐ   rS   rT   rt  r¾   rÄ   r‚  )rm   rl   rø   r:  r;  r  s         r   Útest_column_optionsz(BaseStreamingCSVRead.test_column_options»  s4  € àˆÜ"“}ˆÚ$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ñ 	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   r7  r9   r×   r   rÙ   r?  r“   rP  s        r   Útest_encodingz"BaseStreamingCSVRead.test_encodingü  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   r7  rA  r×   rð  r   )rm   rB   rF   r:  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   r7  rA  r×   rð  r   )
rm   rø  rF   rù  rú  rB   r—   rø   r:  rò   s
             r   rû  z,BaseStreamingCSVRead.test_stress_block_sizes"  sÛ   € ä,°aÀ#ÔFÑˆ�(Ú/ˆØ˜(Ÿ/™/¨'Ó2Ð3ˆØò 	EˆCØ)ò 
E�
à˜;˜JÐ'×-Ñ-¨eÓ4¸Ò9Ð9Ð9Ü*°jÔA�ØŸ™Ø lð )ó 4�àŸ™Ó)�Ø—|‘| x§¡Ò6Ð6Ð6Ø—|‘| HÕ-à Ÿ?™?Ó,°×0BÑ0BÓ0DÓDÐDÐDñ
Eñ	E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   )rN  r   )r:  rF   r=  s      r   Úcheck_one_batchzABaseStreamingCSVRead.test_batch_lifetime.<locals>.check_one_batch9  s%   € Ø×*Ñ*Ó,ˆEØ—?‘?Ó$¨Ò0Ð0Ñ0rL   s   10,11
12,13
14,15
16,17
rœ   r�   rƒ   r÷   r‡   r€   r›   r¡  rô  r”  r9  é   rõ  )ÚgcÚcollectr9   Útotal_allocated_bytesr   rJ   r—   r7  rS   rT   rO  rN  )rm   Úold_allocatedre  rl   rø   r:  Úallocated_after_first_batchs          r   Útest_batch_lifetimez(BaseStreamingCSVRead.test_batch_lifetime4  sU  € Ü
�
‰
ŒÜ×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   r7  rS   rT   rO  rN  ©rm   rl   rY   r:  Ú	__class__s       €r   r  z*BaseStreamingCSVRead.test_header_skip_rowsP  st   ø€ Ü‰Ñ%Ô'à.ˆô ‹}ˆØˆŒØ! 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Á   )	rn  r  r   r”   r7  rS   rT   rO  rN  ro  s       €r   r  z/BaseStreamingCSVRead.test_skip_rows_after_names]  s½   ø€ ä‰Ñ*Ô,à.ˆô ‹}ˆØ%&ˆÔ"Ø—‘ °D�Ó9ˆÜ�]‰]œ=Ó)ñ 	,Ø×)Ñ)Ô+Ð+Ñ+÷	,ð &+ˆÔ"Ø—‘ °D�Ó9ˆÜ�]‰]œ=Ó)ñ 	,Ø×)Ñ)Ô+Ð+Ñ+÷	,ð 	,÷	,ð 	,ú÷	,ð 	,ús   ÁB;ÂCÂ;CÃC)rz   r{   r|   r   r7  r?  rì   rS  rW  rK  rQ  râ  rí  rÚ  rV  rY  r]  rñ  rû  rl  r  rS   r@  rA  r  Ú__classcell__©rp  s   @r   r4  r4  .  s~   ø„ ò	.ò8ò7ò7òDò7ò,ò*%ò(%ò,-ò"
+ò!ò?+òB3ò<9òEò$;ô8,ð ‡[�[×Ñó,ó ô,rL   r4  c                   ó   — e Zd Zed„ «       Zy)ÚTestSerialStreamingCSVReadc                  ó   — yr*  rO   rî   s    r   r�   z&TestSerialStreamingCSVRead.use_threadsr  r+  rL   Nr,  rO   rL   r   ru  ru  q  r-  rL   ru  c                   ó   — e Zd Zed„ «       Zy)ÚTestThreadedStreamingCSVReadc                  ó   — yr1  rO   rî   s    r   r�   z(TestThreadedStreamingCSVRead.use_threadsy  r2  rL   Nr,  rO   rL   r   rx  rx  w  s   „ àñó ñrL   rx  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_pathr.  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  TrF  )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š  s5   € Ü�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
ro  rp  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¯  s3   € Ü�[‰[˜˜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.   rN  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­  r8  Úc1Úc2r‚   )Úmax_chunksizer   T)rá   FrÓ  r÷   rÝ   r�  )rá   rª   r±   ©Úwrite_optionsr  rN   )r9   r<   r=   ra  r.   rN  r   r   Úseekr   r   rJ   r	   r   r×   Úwrite_tableÚwrite_batch)	r¿  Úrecord_batchrO  r¡  rø   r	  r¨  Úwriterr=  s	            r   Útest_write_read_round_tripr®  »  sC  € Ü
�‰×Ñš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Ô!÷	"à�‰�ŒØ”H˜S¨|Ø+8ô:ò :ð 	:ð :ä�j‰j‹lˆÜ�s˜AŸH™H°MÔBð 	*ÀfØŸ™°A˜Ó6ò *�Ø×"Ñ" 5Õ)ñ*÷	*ð 	�‰�ŒØ”H˜S¨|Ø+8ô:ó :ð 	:ð :ñ+:÷	"ð 	"ú÷	*ð 	*ú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.   rN  r   r   r×   rª  r7   r©  Úlibr    Ú	Exceptionrt   )r¿  r¡  r¨  Úresr­  r.  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Ô!÷	"à�|‰|‹~ Ò$Ð$Ð$Ø�‰��ð	ô 	�‰×Ñ˜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Õ%÷	ð �|‰|‹~ Ò$Ð$Ð$Ø�‰��ñ÷	"ñ 	"ûô ò ô " ! SÔ)Ð)Ð)Û÷	ñ 	ûðú÷	ð 	ú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.   rN  r   r   r×   rª  r7   r©  )r¿  r¡  r¨  rµ  r­  s        r   Útest_write_quoting_headerr¹    sÂ   € Ü
�‰×ÑšlÒ,<Ð=ÀÀd¸|ÓL€AÜ
�*‰*‹,€Cä	 VÔ	,Ð.IÐJÜ	‹Ð8Ð9Ü	 [Ô	1Ø	(ð	*ðò 	Ñˆ�sô �s˜AŸH™H°MÔBð 	"ÀfØ×Ñ˜qÔ!÷	"à�|‰|‹~ Ò$Ð$Ð$Ø�‰��ñ	÷	"ð 	"ú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.   rN  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Á    s=   € ò"ô
 
×	Ñ	Ó	ñ Ù‹WˆÙ‹tˆ|Ð‰|÷÷ ñ ús   ˜3³<Útype_factoryc                  ó.   — t        j                  dd«      S ©Né   rN   ©r9   rÈ  rO   rL   r   r%  r%  $  ó   € ŒB�M‰M˜"˜aÓ € rL   c                  ó.   — t        j                  dd«      S )Né&   r9  rÆ  rO   rL   r   r%  r%  %  ó   € ŒB�M‰M˜"˜bÓ!€ rL   c                  ó.   — t        j                  dd«      S rÄ  ©r9   Ú
decimal256rO   rL   r   r%  r%  &  rÇ  rL   c                  ó.   — t        j                  dd«      S )NéL   r‡   rÌ  rO   rL   r   r%  r%  '  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Õ  #  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  rn  Úread©rm   r  rp  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  rn  ÚreadintorÜ  s     €r   rÞ  z6test_read_csv_gil_deadlock.<locals>.MyBytesIO.readinto?  s   ø€ Ü�J‰J�uÔÜ‘7Ñ# TÐ*Ð*rL   )rz   r{   r|   rÛ  rÞ  rr  rs  s   @r   Ú	MyBytesIOrØ  :  s   ø„ ô	'÷	+ð 	+rL   rß  rÅ  )r.   rN  r   rS   rT   r9   r    r   )rO  rß  r"   s      r   Útest_read_csv_gil_deadlockrà  3  sd   € ð
 €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   r%  r%  K  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   r%  r%  R  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   r%  r%  Y  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.   rN  r   r©  rÛ  )ÚtablesrF   Úcombinedr¡  rk   s        r   Ú4test_write_csv_empty_batch_should_not_pollute_outputrë  H  sO   € ô0 ×Ñ¡£Ó)€Hä
�*‰*‹,€CÜˆh˜ÔØ‡H�HˆQ„KØ�X‰X‹Z€Fà�XÒÐÑrL   )r   r‡   z
T)Hr¸   rœ  r   r   Údecimalr   rg  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æ   rC  r(  r/  r4  ru  r@  rx  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_AòD?ôBXK�#—'‘'ô XKôv
T�{ô TônÐ-ô ôÐ/ô ô@,˜;ô @,ôF
Ð!5ô ð ‡�×ÑôÐ#7ó ó ð÷9ñ 9ô2
Ð/°×1BÑ1Bô 
ô*Ð.°×0AÑ0Aô òò):òXòBò	ð ‡�×Ñ˜Ù Ù!Ù Ù!ð	*ó ñ?óð?ò&ð* ‡�×ÑÐ*ñ	,ð 	ð	ñ	,ð 	ð	ñ	Rð 	ð	ð!-ó ñ.ó/ñ.rL   