Ë
    ìmxiÛY  ã                   óð  — d dl Z d dl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mZmZmZmZ d„ Zdd„Zd„ Zd„ Zd	„ Z G d
„ de j4                  «      Z G d„ de«      Z G d„ de«      Z G d„ dee	j<                  «      Z G d„ dee	j<                  «      Z  G d„ dee	j<                  «      Z!ejD                  jF                   G d„ dee	j<                  «      «       Z$y# e$ r dZY ŒÊw xY w)é    N)ÚOrderedDict)ÚDecimal)Ú	read_jsonÚ	open_jsonÚReadOptionsÚParseOptionsc               #   ón   K  — t         j                  } | E d {  –—†  | D ]  }| D ]	  }||z   –— Œ Œ y 7 Œ­w©N)ÚstringÚascii_lowercase)ÚlettersÚfirstÚseconds      úN/home/htdocs/ttos/venv/lib/python3.12/site-packages/pyarrow/tests/test_json.pyÚgenerate_col_namesr   %   sG   è ø€ ä×$Ñ$€GØ×ÐØò !ˆØò 	!ˆFØ˜&‘.Ó ñ	!ñ!ð ús   ‚5˜3™5c                 ó’  — t         j                  j                  d«      j                  dd| |f¬«      }t	        t        j                  t        «       | «      «      }g }|j                  D ]Y  }t        t        ||«      D ��cg c]  \  }}|t        |«      f‘Œ c}}«      }	|j                  t        j                  |	«      «       Œ[ |j                  |«      j!                  «       }
|D �cg c]+  }t#        j$                  |t#        j&                  «       ¬«      ‘Œ- }}t"        j(                  j+                  ||«      }|
|fS c c}}w c c}w )Né*   r   éè  )Úsize)Útype)ÚnpÚrandomÚRandomStateÚrandintÚlistÚ	itertoolsÚislicer   ÚTr   ÚzipÚintÚappendÚjsonÚdumpsÚjoinÚencodeÚpaÚarrayÚint64ÚTableÚfrom_arrays)Únum_colsÚnum_rowsÚlinesepÚarrÚ	col_namesÚlinesÚrowÚkÚvÚjson_objÚdataÚcolÚcolumnsÚexpecteds                 r   Úmake_random_jsonr9   .   s  € Ü
�)‰)×
Ñ
 Ó
#×
+Ñ
+¨A¨t¸8ÀXÐ:NÐ
+Ó
O€CÜ”Y×%Ñ%Ô&8Ó&:¸HÓEÓF€IØ€EØ�u‰uò +ˆÜ¼#¸iÈÓ:M×N±°°A ¤C¨£F¢ÓNÓOˆØ�‰”T—Z‘Z Ó)Õ*ð+ð �<‰<˜Ó×%Ñ%Ó'€DØ9<Ö=°#Œr�x‰x˜¤"§(¡(£*Ö-Ð=€GÐ=Ü�x‰x×#Ñ# G¨YÓ7€HØ�ˆ>Ðùó  Oùò >s   Â D>Ã(0Ec                 ó¾   —  | di |¤Ž}|j                  |j                  ||j                  ¬«      «      }|j                  «       D ]  \  }}t	        ||«      |k(  rŒJ ‚ y )N)Úprotocol© )Úloadsr#   ÚHIGHEST_PROTOCOLÚitemsÚgetattr)ÚclsÚpicklerÚattr_valuesÚoptsÚnew_optsÚnameÚvalues          r   Úcheck_options_class_picklingrH   ;   sk   € ÙÑ�Ñ€DØ�}‰}˜WŸ]™]¨4Ø4;×4LÑ4Lð +ó Nó O€Hà"×(Ñ(Ó*ò 0‰ˆˆeÜ�x Ó&¨%Ó/Ð/Ð/ñ0ó    c                 ó2  — t         } |«       }|j                  dkD  sJ ‚d|_        |j                  dk(  sJ ‚|j                  du sJ ‚d|_        |j                  du sJ ‚ |dd¬«      }|j                  dk(  sJ ‚|j                  du sJ ‚t        || dd¬«       y )Nr   i90  TFiÒ  )Ú
block_sizeÚuse_threads)rB   rK   rL   )r   rK   rL   rH   )Úpickle_modulerA   rD   s      r   Útest_read_optionsrN   C   s­   € Ü
€CÙ‹5€Dà�?‰?˜QÒÐÐØ€D„OØ�?‰?˜eÒ#Ð#Ð#à×Ñ˜tÑ#Ð#Ð#Ø€DÔØ×Ñ˜uÑ$Ð$Ð$á˜$¨EÔ2€DØ�?‰?˜dÒ"Ð"Ð"Ø×Ñ˜uÑ$Ð$Ð$ä  ¨mØ,0Ø-2ö4rI   c                 ó  — t         } |«       }|j                  du sJ ‚|j                  �J ‚d|_        |j                  du sJ ‚t        j                  t        j
                  dt        j                  «       «      g«      }||_        |j                  |k(  sJ ‚|j                  dk(  sJ ‚dD ]  }||_        |j                  |k(  rŒJ ‚ t        j                  t        «      5  d|_        d d d «       t        || |dd¬«       y # 1 sw Y   ŒxY w)	NFTÚfooÚinfer)ÚignoreÚerrorrQ   zinvalid-valuerR   )rB   Úexplicit_schemaÚnewlines_in_valuesÚunexpected_field_behavior)r   rU   rT   r&   ÚschemaÚfieldÚint32rV   ÚpytestÚraisesÚ
ValueErrorrH   )rM   rA   rD   rW   rG   s        r   Útest_parse_optionsr]   X   s  € Ü
€CÙ‹5€DØ×"Ñ" eÑ+Ð+Ð+Ø×ÑÐ'Ð'Ð'à"€DÔØ×"Ñ" dÑ*Ð*Ð*ä�Y‰YœŸ™ ¬¯©«
Ó3Ð4Ó5€FØ!€DÔØ×Ñ 6Ò)Ð)Ð)à×)Ñ)¨WÒ4Ð4Ð4Ø-ò 7ˆØ).ˆÔ&Ø×-Ñ-°Ó6Ð6Ð6ð7ô 
�‰”zÓ	"ñ 9Ø)8ˆÔ&÷9ô ! ¨mØ17Ø49Ø;CöE÷9ð 9ús   Ã DÄD
c                   ó  — e Zd Zej                  d„ «       Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d„ Zd„ Zd	„ Zd
„ Zd„ Zej"                  j$                  d„ «       Zej"                  j$                  d„ «       Zej"                  j$                  d„ «       Zy)ÚBaseTestJSONc                 ó   — t         ‚)z›
        :param b: bytes to be parsed
        :param kwargs: arguments passed on to open the json file
        :return: b parsed as a single Table
        )ÚNotImplementedError©ÚselfÚbÚkwargss      r   Ú
read_byteszBaseTestJSON.read_bytest   s
   € ô "Ð!rI   c                 ó”   — |j                   t        |«      k(  sJ ‚|j                  D �cg c]  }|j                  ‘Œ c}|k(  sJ ‚y c c}w r
   )Únum_columnsÚlenr7   rF   )rc   ÚtableÚnamesÚcs       r   Úcheck_nameszBaseTestJSON.check_names}   s>   € Ø× Ñ ¤C¨£JÒ.Ð.Ð.Ø %§¡Ö.˜1�—“Ò.°%Ò7Ð7Ñ7ùÒ.s   ©Ac                 ó„  — d}t        «       }t        «       }||dz   fD ]”  }dD ]�  }||_        d|_        t	        j
                  t        d¬«      5  | j                  |||¬«       d d d «       t        dd	«      D ]6  }||_        | j                  |||¬«      }|j                  «       d
g d¢ik(  rŒ6J ‚ Œ� Œ– y # 1 sw Y   ŒSxY w)Ns   {"a": 1}
{"a": 2}
{"a": 3}ó   
©FTé   ztry to increase block size©Úmatch©Úread_optionsÚparse_optionsé	   é   Úa)é   é   é   )
r   r   rU   rK   rZ   r[   r\   rf   ÚrangeÚ	to_pydict)rc   Úrowsru   rv   r5   rU   rK   rj   s           r   Útest_block_sizeszBaseTestJSON.test_block_sizes�   së   € Ø.ˆÜ"“}ˆÜ$›ˆà˜4 %™<Ð(ò 	AˆDØ&3ò AÐ"Ø3E�Ô0Ø*+�Ô'Ü—]‘]¤:Ø)EôGñ Aà—O‘O D°|Ø2?ð $ô A÷Aô #(¨¨2£,ò A�JØ.8�LÔ+Ø ŸO™O¨D¸|Ø:Gð ,ó I�Eà Ÿ?™?Ó,°²iÐ0@Ó@Ð@Ð@ñ	AñAñ	A÷Að Aús   ÁB6Â6B?c                 óh   — d}| j                  |«      }|j                  «       ddgddgddgdœk(  sJ ‚y )	Ns/   {"a": 1,"b": 2, "c": 3}
{"a": 4,"b": 5, "c": 6}rz   rq   r{   é   r|   é   ©ry   rd   rl   )rf   r~   )rc   r   rj   s      r   Útest_no_newline_at_endz#BaseTestJSON.test_no_newline_at_end—   sH   € ØBˆØ—‘ Ó%ˆØ�‰Ó Ø�Q�Ø�Q�Ø�Q�ñ%
ò 
ð 	
ñ 
rI   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 )Ns0   {"a": 1,"b": 2, "c": 3}
{"a": 4,"b": 5, "c": 6}
ry   rd   rl   rz   rq   r{   r‚   r|   rƒ   r„   )rf   r&   rW   r(   r~   ©rc   r   rj   rW   s       r   Útest_simple_intszBaseTestJSON.test_simple_ints    s˜   € àDˆØ—‘ Ó%ˆÜ—‘˜S¤"§(¡(£*Ð-Ø ¤"§(¡(£*Ð-Ø ¤"§(¡(£*Ð-ð/ó 0ˆð �|‰|˜vÒ%Ð%Ð%Ø�‰Ó Ø�Q�Ø�Q�Ø�Q�ñ%
ò 
ð 	
ñ 
rI   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 )NsQ   {"a": 1,"b": 2, "c": "3", "d": false}
{"a": 4.0, "b": -5, "c": "foo", "d": true}
ry   rd   rl   Údç      ð?ç      @r{   éûÿÿÿÚ3rP   FT©ry   rd   rl   rŠ   )rf   r&   rW   Úfloat64r(   r   Úbool_r~   r‡   s       r   Útest_simple_variedzBaseTestJSON.test_simple_varied®   s°   € ð@ˆà—‘ Ó%ˆÜ—‘˜S¤"§*¡*£,Ð/Ø ¤"§(¡(£*Ð-Ø ¤"§)¡)£+Ð.Ø ¤"§(¡(£*Ð-ð/ó 0ˆð �|‰|˜vÒ%Ð%Ð%Ø�‰Ó Ø�s�Ø�R�Ø�u�Ø˜�ñ	%
ò 
ð 	
ñ 
rI   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g«      }|j                  |k(  sJ ‚|j                  «       g d¢g d¢g d	¢g d
¢g d¢dœk(  sJ ‚y )Ns¡   {"a": 1, "b": 2, "c": null, "d": null, "e": null}
{"a": null, "b": -5, "c": "foo", "d": null, "e": true}
{"a": 4.5, "b": null, "c": "nan", "d": null,"e": false}
ry   rd   rl   rŠ   Úe)r‹   Ng      @)r{   r�   N)NrP   Únan)NNN)NTF)ry   rd   rl   rŠ   r”   )	rf   r&   rW   r�   r(   r   Únullr‘   r~   r‡   s       r   Útest_simple_nullszBaseTestJSON.test_simple_nulls¿   s³   € ðMˆð —‘ Ó%ˆÜ—‘˜S¤"§*¡*£,Ð/Ø ¤"§(¡(£*Ð-Ø ¤"§)¡)£+Ð.Ø ¤"§'¡'£)Ð,Ø ¤"§(¡(£*Ð-ð	/ó 0ˆð
 �|‰|˜vÒ%Ð%Ð%Ø�‰Ó Ú!ÚÚ%Ú#Ú$ñ%
ò 
ð 	
ñ 
rI   c                 óö   — d}| j                  |«      }t        j                  dt        j                  t        j                  «       «      fg«      }|j                  |k(  sJ ‚|j                  «       dg gik(  sJ ‚y )Nó	   {"a": []}ry   )rf   r&   rW   Úlist_r–   r~   r‡   s       r   Útest_empty_listszBaseTestJSON.test_empty_listsÓ   sg   € àˆØ—‘ Ó%ˆÜ—‘˜S¤"§(¡(¬2¯7©7«9Ó"5Ð6Ð7Ó8ˆØ�|‰|˜vÒ%Ð%Ð%Ø�‰Ó  S¨2¨$ KÒ/Ð/Ñ/rI   c                 óº   — d}| j                  |«      }t        j                  g «      }|j                  |k(  sJ ‚|j                  dk(  sJ ‚|j                  dk(  sJ ‚y )Ns   {}
{}
r   r{   )rf   r&   rW   rh   r,   r‡   s       r   Útest_empty_rowszBaseTestJSON.test_empty_rowsÛ   sZ   € ØˆØ—‘ Ó%ˆÜ—‘˜2“ˆØ�|‰|˜vÒ%Ð%Ð%Ø× Ñ  AÒ%Ð%Ð%Ø�~‰~ Ò"Ð"Ñ"rI   c                 ó   — d}dt        d«      t        d«      t        d«      d gi}t        j                  t        j                  t        j                  t        j
                  f}|D ]f  }t        j                  d |dd«      fg«      }t        |¬«      }| j                  ||¬	«      }|j                  |k(  sJ ‚|j                  «       |k(  rŒfJ ‚ y )
Ns'   {"a": 1}
{"a": 1.45}
{"a": -23.456}
{}
ry   Ú1z1.45z-23.456rw   rq   ©rT   ©rv   )
r   r&   Ú	decimal32Ú	decimal64Ú
decimal128Ú
decimal256rW   r   rf   r~   )rc   r   r8   Údecimal_typesÚtype_factoryrW   rD   rj   s           r   Útest_explicit_schema_decimalz)BaseTestJSON.test_explicit_schema_decimalã   s¼   € ðˆð
 ”'˜#“,¤¨£´¸Ó1CÀTÐJð
ˆô Ÿ™¤r§|¡|´R·]±]ÄBÇMÁMÐRˆØ)ò 	1ˆLÜ—Y‘Y ¡l°1°aÓ&8Ð 9Ð:Ó;ˆFÜ°Ô7ˆDØ—O‘O D¸�OÓ=ˆEØ—<‘< 6Ò)Ð)Ð)Ø—?‘?Ó$¨Ó0Ð0Ð0ñ	1rI   c                 ó  — d}t        j                  dt        j                  «       fg«      }t        |¬«      }| j	                  ||¬«      }|j                  t        j                  dt        j                  «       fdt        j
                  «       fg«      k(  sJ ‚|j                  «       ddgdd	gd
œk(  sJ ‚t        |d¬«      }| j	                  ||¬«      }|j                  t        j                  dt        j                  «       fg«      k(  sJ ‚|j                  «       dddgik(  sJ ‚t        |d¬«      }t        j                  t         j                  d¬«      5  | j	                  ||¬«       d d d «       y # 1 sw Y   y xY w)Ns2   {"foo": "bar", "num": 0}
{"foo": "baz", "num": 1}
rP   r    r¡   Únums   bars   bazr   rz   )rP   rª   rR   )rT   rV   rS   ú"JSON parse error: unexpected fieldrr   )
r&   rW   Úbinaryr   rf   r(   r~   rZ   r[   ÚArrowInvalid)rc   r   rW   rD   rj   s        r   Ú.test_explicit_schema_with_unexpected_behaviourz;BaseTestJSON.test_explicit_schema_with_unexpected_behaviourô   s‡  € ð.ˆä—‘Ø”B—I‘I“KÐ ð
ó ˆô ¨FÔ3ˆØ—‘ °D�Ó9ˆØ�|‰|œrŸy™yØ”B—I‘I“KÐ Ø”B—H‘H“JÐð*
ó  ò ð 	ð ð �‰Ó Ø˜FÐ#Ø�q�6ñ%
ò 
ð 	
ð 
ô ¨FØ6>ô@ˆà—‘ °D�Ó9ˆØ�|‰|œrŸy™yØ”B—I‘I“KÐ ð*
ó  ò ð 	ð ð �‰Ó Ø�F˜FÐ#ð%
ò 
ð 	
ð 
ô
 ¨FØ6=ô?ˆä�]‰]œ2Ÿ?™?Ø!EôGñ 	6à�O‰O˜D°ˆOÔ5÷	6÷ 	6ñ 	6ús   ÅE7Å7F c                 óè   — t        dd¬«      \  }}| j                  |«      }|j                  |j                  k(  sJ ‚|j                  |«      sJ ‚|j	                  «       |j	                  «       k(  sJ ‚y )Nr{   é
   ©r+   r,   )r9   rf   rW   Úequalsr~   )rc   r5   r8   rj   s       r   Útest_small_random_jsonz#BaseTestJSON.test_small_random_json  sf   € ä)°1¸rÔB‰ˆˆhØ—‘ Ó%ˆØ�|‰|˜xŸ™Ò.Ð.Ð.Ø�|‰|˜HÔ%Ð%Ð%Ø�‰Ó  H×$6Ñ$6Ó$8Ò8Ð8Ñ8rI   c                 ó¦   — t        dd¬«      \  }}t        d¬«      }| j                  ||¬«      }|j                  dk(  sJ ‚|j                  dk(  sJ ‚y )Nr{   i‡ r±   i    ©rK   ©ru   )r9   r   rf   r,   )rc   r5   r8   ru   rj   s        r   Útest_load_large_jsonz!BaseTestJSON.test_load_large_json!  sT   € ä)°1¸vÔF‰ˆˆhä"¨lÔ;ˆØ—‘ °<�Ó@ˆØ�~‰~ Ò'Ð'Ð'Ø× Ñ  FÒ*Ð*Ñ*rI   c                 ó|  — t        dd¬«      \  }}t        «       }t        «       }||j                  d«      fD ]‚  }dD ]{  }||_        dD ]m  }||_        | j                  |||¬«      }|j                  |j                  k(  sJ ‚|j                  |«      rŒK|j                  «       |j                  «       k(  rŒmJ ‚ Œ} Œ„ y )Nr{   éd   r±   s   
rp   )é   é   é%   rt   )
r9   r   r   ÚrstriprU   rK   rf   rW   r²   r~   )	rc   Ú	data_baser8   ru   rv   r5   rU   rK   rj   s	            r   Útest_stress_block_sizesz$BaseTestJSON.test_stress_block_sizes*  sÒ   € ô /¸ÀCÔHÑˆ	�8Ü"“}ˆÜ$›ˆà 	× 0Ñ 0°Ó 9Ð:ò 
	IˆDØ&3ò 	IÐ"Ø3E�Ô0Ø".ò I�JØ.8�LÔ+Ø ŸO™O¨D¸|Ø:Gð ,ó I�Eà Ÿ<™<¨8¯?©?Ò:Ð:Ð:Ø Ÿ<™<¨Õ1à$Ÿ™Ó0°H×4FÑ4FÓ4HÓHÐHÐHñIñ	Iñ
	IrI   N)Ú__name__Ú
__module__Ú__qualname__ÚabcÚabstractmethodrf   rm   r€   r…   rˆ   r’   r—   r›   r�   r¨   r®   rZ   ÚmarkÚnumpyr³   r·   r¿   r<   rI   r   r_   r_   s   sª   „ Ø×Ññ"ó ð"ò8òAò,
ò
ò
ò"
ò(0ò#ò1ò"#6ðJ ‡[�[×Ññ9ó ð9ð ‡[�[×Ññ+ó ð+ð ‡[�[×ÑñIó ñIrI   r_   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚBaseTestJSONReadc                 óN   —  | j                   t        j                  |«      fi |¤ŽS r
   )r   r&   Ú	py_bufferrb   s      r   rf   zBaseTestJSONRead.read_bytes@  ó    € Øˆt�~‰~œbŸl™l¨1›oÑ8°Ñ8Ð8rI   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)Nó   {"a": 1, "b": 2}
rz   r{   ©ry   rd   )	ÚioÚBytesIOr   r~   ÚStringIOÚdecoderZ   r[   Ú	TypeError)rc   r5   Úexpected_dataÚbiorj   Úsios         r   Útest_file_objectz!BaseTestJSONRead.test_file_objectC  s‡   € Ø$ˆØ ˜c¨¨Ñ,ˆÜ�j‰j˜ÓˆØ—‘˜sÓ#ˆØ�‰Ó  MÒ1Ð1Ð1ä�k‰k˜$Ÿ+™+›-Ó(ˆÜ�]‰]œ9Ó%ñ 	 Ø�N‰N˜3Ô÷	 ÷ 	 ñ 	 ús   ÂBÂB%c           
      ó*  — d}t        t        |«      ¬«      }dd dgfdd g gfdd g dgggfdd i gfd	d d
d id
ddiigffD ]T  \  }}| j                  ||z   |¬«      }d|i}|j                  «       |k(  sJ ‚|j	                  d«      j
                  dkD  rŒTJ ‚ y )Ns"   {                               }
rµ   s   {"a": 0}r   r™   s   {"a": []}
{"a": [[1]]}rz   s	   {"a": {}}s    {"a": {}}
{"a": {"b": {"c": 1}}}rd   rl   r¶   ry   )r   ri   rf   r~   ÚcolumnÚ
num_chunks)rc   Ú	first_rowru   Ú	next_rowsÚexpected_pylistrj   r8   s          r   Útest_reconcile_across_blocksz-BaseTestJSONRead.test_reconcile_across_blocksN  sÛ   € à:ˆ	Ü"¬c°)«nÔ=ˆà˜4 ˜)Ð$Ø˜D "˜:Ð&Ø'¨$°°a°S°EÐ):Ð;Ø˜D "˜:Ð&Ø1Ø�S˜$�K #¨¨Q x Ð1ð3ð+
ò 	4Ñ&ˆI�ð —O‘O I°	Ñ$9Ø1=ð $ó ?ˆEà˜_Ð-ˆHØ—?‘?Ó$¨Ò0Ð0Ð0à—<‘< Ó$×/Ñ/°!Ó3Ð3Ð3ñ	4rI   N)rÀ   rÁ   rÂ   rf   r×   rÞ   r<   rI   r   rÈ   rÈ   >  s   „ ò9ò	 ó4rI   rÈ   c                   óf   — 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y)ÚBaseTestStreamingJSONReadc                 óv   — |j                  dt        «       «      }| j                  |_        t        |g|¢­i |¤ŽS )zø
        Reads the JSON file into memory using pyarrow's open_json
        json The JSON bytes
        args Positional arguments to be forwarded to pyarrow's open_json
        kwargs Keyword arguments to be forwarded to pyarrow's open_json
        ru   )Ú
setdefaultr   rL   r   )rc   r"   Úargsre   ru   s        r   r   z#BaseTestStreamingJSONRead.open_jsonc  s;   € ð ×(Ñ(¨¼»ÓGˆØ#'×#3Ñ#3ˆÔ Ü˜Ð/ Ò/¨Ñ/Ð/rI   c                 óN   —  | j                   t        j                  |«      fi |¤ŽS r
   )r   r&   rÊ   rb   s      r   Ú
open_bytesz$BaseTestStreamingJSONRead.open_bytesn  rË   rI   c                 ó  — |j                   |k(  sJ ‚t        |«      }t        |«      t        |«      k(  sJ ‚t        ||«      D ]=  \  }}|j	                  d¬«       |j                   |k(  sJ ‚|j                  «       |k(  rŒ=J ‚ y )NT©Úfull)rW   r   ri   r   Úvalidater~   )rc   ÚreaderÚexpected_schemarÔ   ÚbatchesÚbatchÚexpected_batchs          r   Úcheck_readerz&BaseTestStreamingJSONRead.check_readerq  s„   € Ø�}‰} Ò/Ð/Ð/Ü�v“,ˆÜ�7‹|œs =Ó1Ò1Ð1Ð1Ü%(¨°-Ó%@ò 	7Ñ!ˆE�>Ø�N‰N ˆNÔ%Ø—<‘< ?Ò2Ð2Ð2Ø—?‘?Ó$¨Ó6Ð6Ð6ñ	7rI   c                 óD   —  | j                   |fi |¤Žj                  «       S r
   )rå   Úread_allrb   s      r   rf   z$BaseTestStreamingJSONRead.read_bytesz  s!   € Øˆt�‰˜qÑ+ FÑ+×4Ñ4Ó6Ð6rI   c                 ó  — d}dgdgdœ}t        j                  |«      }| j                  |«      }t        j                  dt        j
                  «       fdt        j
                  «       fg«      }| j                  |||g«       y )NrÍ   rz   r{   rÎ   ry   rd   )rÏ   rÐ   r   r&   rW   r(   rï   )rc   r5   rÔ   rÕ   rê   rë   s         r   r×   z*BaseTestStreamingJSONRead.test_file_object}  ss   € Ø$ˆØ ˜c¨¨Ñ,ˆÜ�j‰j˜ÓˆØ—‘ Ó$ˆÜŸ)™) c¬2¯8©8«:Ð%6Ø&)¬2¯8©8«:Ð%6ð%8ó 9ˆà×Ñ˜& /°M°?ÕCrI   c                 óÄ   — d}t        «       }d|_        t        j                  t        j
                  d¬«      5  | j                  ||¬«       d d d «       y # 1 sw Y   y xY w)Ns   {"i": 0            }
{"i": 1}r|   ú1straddling object straddles two block boundaries*rr   r¶   ©r   rK   rZ   r[   r&   r­   rå   )rc   Úbad_first_chunkru   s      r   Útest_bad_first_chunkz.BaseTestStreamingJSONRead.test_bad_first_chunk†  sW   € Ø;ˆÜ"“}ˆØ"#ˆÔÜ�]‰]Ü�O‰OØEô
ñ 	Hð �O‰O˜O¸,ˆOÔG÷		H÷ 	Hñ 	Húó   ¹AÁAc                 ó"  — d}t        «       }d|_        t        j                  dt        j                  «       fg«      }| j                  ||¬«      }|j                  |k(  sJ ‚|j                  «       j                  «       ddgi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   y xY w)Ns   {"i": 0}
{"i":     1}
{"i": 2}r°   Úir¶   r   rô   rr   ©r   rK   r&   rW   r(   rå   Úread_next_batchr~   rZ   r[   r­   ÚStopIteration©rc   Úbad_middle_chunkru   rë   rê   s        r   Útest_bad_middle_chunkz/BaseTestStreamingJSONRead.test_bad_middle_chunk�  s÷   € Ø>ÐÜ"“}ˆØ"$ˆÔÜŸ)™) c¬2¯8©8«:Ð%6Ð$7Ó8ˆà—‘Ð!1À�ÓMˆØ�}‰} Ò/Ð/Ð/Ø×%Ñ%Ó'×1Ñ1Ó3Ø�!�ð8
ò 
ð 	
ð 
ô �]‰]Ü�O‰OØEô
ñ 	%ð ×"Ñ"Ô$÷		%ô �]‰]œ=Ó)ñ 	%Ø×"Ñ"Ô$÷	%ð 	%÷	%ð 	%ú÷	%ð 	%úó   Â-C9ÃDÃ9DÄDc                 óÄ   — d}t        «       }d|_        t        j                  t        j
                  d¬«      5  | j                  ||¬«       d d d «       y # 1 sw Y   y xY w)Ns   {"n": }
{"n": 10000}é   ú!JSON parse error: Invalid value.*rr   r¶   rõ   ©rc   Úbad_first_blockru   s      r   Útest_bad_first_parsez.BaseTestStreamingJSONRead.test_bad_first_parse¤  sU   € Ø2ˆÜ"“}ˆØ"$ˆÔÜ�]‰]œ2Ÿ?™?Ø!DôFñ 	Hà�O‰O˜O¸,ˆOÔG÷	H÷ 	Hñ 	Húrø   c                 óÄ   — d}t        «       }d|_        t        j                  t        j
                  d¬«      5  | j                  ||¬«       d d d «       y # 1 sw Y   y xY w)Ns"   {            }{"n": }
{"n": 10000}r  r  rr   r¶   rõ   r  s      r   Ú!test_bad_middle_parse_after_emptyz;BaseTestStreamingJSONRead.test_bad_middle_parse_after_empty¬  sU   € Ø@ˆÜ"“}ˆØ"$ˆÔÜ�]‰]œ2Ÿ?™?Ø!DôFñ 	Hà�O‰O˜O¸,ˆOÔG÷	H÷ 	Hñ 	Húrø   c                 ó"  — d}t        «       }d|_        t        j                  dt        j                  «       fg«      }| j                  ||¬«      }|j                  |k(  sJ ‚|j                  «       j                  «       ddgi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   y xY w)Ns%   {"n": 1000}
{"n": 200 00}
{"n": 3000}r°   Únr¶   r   z@JSON parse error: Missing a comma or '}' after an object member*rr   rû   rþ   s        r   Útest_bad_middle_parsez/BaseTestStreamingJSONRead.test_bad_middle_parse´  sù   € ØEÐÜ"“}ˆØ"$ˆÔÜŸ)™) c¬2¯8©8«:Ð%6Ð$7Ó8ˆà—‘Ð!1À�ÓMˆØ�}‰} Ò/Ð/Ð/Ø×%Ñ%Ó'×1Ñ1Ó3Ø�$�ð8
ò 
ð 	
ð 
ô �]‰]Ü�O‰Oð1ô
ñ 	%ð
 ×"Ñ"Ô$÷	%ô �]‰]œ=Ó)ñ 	%Ø×"Ñ"Ô$÷	%ð 	%÷	%ð 	%ú÷	%ð 	%úr  c                 ó2  — d}t        d¬«      }t        d¬«      }t        j                  dt        j                  «       fg«      }| j                  |||¬«      }|j                  |k(  sJ ‚|j                  «       j                  «       ddgi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   y xY w©Ns   {"n": 0}{1}
{"n": 2}r°   rµ   T©rU   r  rt   r   úJSON parse error *rr   ©r   r   r&   rW   r(   rå   rü   r~   rZ   r[   r­   rý   ©rc   rÿ   ru   rv   rë   rê   s         r   Ú%test_non_linewise_chunker_first_blockz?BaseTestStreamingJSONRead.test_non_linewise_chunker_first_blockÉ  ó  € Ø3ÐÜ"¨bÔ1ˆÜ$¸Ô=ˆÜŸ)™) c¬2¯8©8«:Ð%6Ð$7Ó8ˆà—‘ØØ%Ø'ð !ó )ˆð �}‰} Ò/Ð/Ð/Ø×%Ñ%Ó'×1Ñ1Ó3Ø�!�ð8
ò 
ð 	
ð 
ô �]‰]œ2Ÿ?™?Ø!5ô7ñ 	%à×"Ñ"Ô$÷	%ô �]‰]œ=Ó)ñ 	%Ø×"Ñ"Ô$÷	%ð 	%÷		%ð 	%ú÷	%ð 	%úó   Â5DÃ'DÄD
ÄDc                 ó2  — d}t        d¬«      }t        d¬«      }t        j                  dt        j                  «       fg«      }| j                  |||¬«      }|j                  |k(  sJ ‚|j                  «       j                  «       ddgi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   y xY wr  r  r  s         r   Ú)test_non_linewise_chunker_bad_first_blockzCBaseTestStreamingJSONRead.test_non_linewise_chunker_bad_first_blockÞ  r  r  c                 ó~  — d}t        d¬«      }t        d¬«      }t        j                  dt        j                  «       fg«      }| j                  |||¬«      }|j                  |k(  sJ ‚|j                  «       j                  «       ddgik(  sJ ‚|j                  «       j                  «       dd	gi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   y xY w)Ns&   {"n": 0}
{"n":    1}
{}"n":2}
{"n": 3}r°   rµ   Tr  r  rt   r   rz   r  rr   r  r  s         r   Ú*test_non_linewise_chunker_bad_middle_blockzDBaseTestStreamingJSONRead.test_non_linewise_chunker_bad_middle_blockó  s6  € ØGÐÜ"¨bÔ1ˆÜ$¸Ô=ˆÜŸ)™) c¬2¯8©8«:Ð%6Ð$7Ó8ˆà—‘ØØ%Ø'ð !ó )ˆð �}‰} Ò/Ð/Ð/Ø×%Ñ%Ó'×1Ñ1Ó3Ø�!�ð8
ò 
ð 	
ð 
ð ×%Ñ%Ó'×1Ñ1Ó3Ø�!�ð8
ò 
ð 	
ð 
ô �]‰]œ2Ÿ?™?Ø!5ô7ñ 	%à×"Ñ"Ô$÷	%ô �]‰]œ=Ó)ñ 	%Ø×"Ñ"Ô$÷	%ð 	%÷		%ð 	%ú÷	%ð 	%ús   ÃD'ÄD3Ä'D0Ä3D<c                 ó  — d}t        j                  dt        j                  «       fdt        j                  «       fg«      }t	        d¬«      }t        |¬«      }dgdgd	œ}| j                  |||¬
«      }| j                  |||g«       y )Ns       
{"b": true, "s": "foo"}rd   Úsé   rµ   r    TrP   )rd   r  rt   )r&   rW   r‘   Úutf8r   r   rå   rï   )rc   Úleading_empty_chunkrT   ru   rv   rÔ   rê   s          r   Ú test_ignore_leading_empty_blocksz:BaseTestStreamingJSONRead.test_ignore_leading_empty_blocks  s‘   € Ø>ÐÜŸ)™)Ø”"—(‘(“*ÐØ”"—'‘'“)Ðð%
ó ˆô #¨bÔ1ˆÜ$°_ÔEˆà�˜u˜gñ
ˆð —‘ØØ%Ø'ð !ó )ˆð 	×Ñ˜& /°M°?ÕCrI   c                 ó~  — d}t        j                  dt        j                  «       fdt        j                  «       fg«      }dgdgdœ}t	        d¬«      }t        d	¬
«      }| j                  |||¬«      }|j                  |k(  sJ ‚|j                  «       j                  «       |k(  sJ ‚t        j                  t         j                  d¬«      5  |j                  «        d d d «       t        j                  dt        j                  «       fdt        j                  «       fdt        j                  «       fg«      }ddgdd gd dgdœ}t	        d¬«      }| j                  |||¬«      }|j                  |k(  sJ ‚|j                  «       j                  «       |k(  sJ ‚t        j                  t         j                  d¬«      5  |j                  «        d d d «       t        j                  dt        j                  «       fdt        j                  «       fdt        j                  «       fdt        j                  «       fg«      }g d¢g d¢g d¢g d¢dœ}t	        d¬«      }| j                  |||¬«      }|j                  |k(  sJ ‚|j                  «       j                  «       |k(  sJ ‚y # 1 sw Y   �ŒÉxY w# 1 sw Y   ŒãxY w)NsI   {"a": 0, "b": "foo"    }
        {"a": 1, "c": true  }
{"a": 2, "d": 4.0}ry   rd   r   rP   rÎ   é    rµ   rQ   )rV   rt   r«   rr   rl   rz   Tr„   é@   rŠ   )r   rz   r{   )rP   NN)NTN)NNrŒ   r�   é`   )r&   rW   r(   r  r   r   rå   rü   r~   rZ   r[   r­   r‘   r�   )rc   r   rë   rÔ   ru   rv   rê   s          r   Útest_inferencez(BaseTestStreamingJSONRead.test_inference  s‚  € ð3ˆäŸ)™)Ø”"—(‘(“*ÐØ”"—'‘'“)Ðð%
ó ˆð  !˜c¨¨Ñ0ˆä"¨bÔ1ˆÜ$¸wÔGˆØ—‘ØØ%Ø'ð !ó )ˆð �}‰} Ò/Ð/Ð/Ø×%Ñ%Ó'×1Ñ1Ó3°}ÒDÐDÐDÜ�]‰]œ2Ÿ?™?Ø!EôGñ 	%à×"Ñ"Ô$÷	%ô Ÿ)™)Ø”"—(‘(“*ÐØ”"—'‘'“)ÐØ”"—(‘(“*Ðð%
ó ˆð
  ! !˜f¨E°4¨=ÀÀd¸|ÑLˆÜ"¨bÔ1ˆØ—‘ °LØ/<ð !ó >ˆà�}‰} Ò/Ð/Ð/Ø×%Ñ%Ó'×1Ñ1Ó3°}ÒDÐDÐDÜ�]‰]œ2Ÿ?™?Ø!EôGñ 	%à×"Ñ"Ô$÷	%ô Ÿ)™)Ø”"—(‘(“*ÐØ”"—'‘'“)ÐØ”"—(‘(“*ÐØ”"—*‘*“,Ðð	%
ó ˆò (Ò.AÚ0Ò7HñJˆä"¨bÔ1ˆØ—‘ °LØ/<ð !ó >ˆà�}‰} Ò/Ð/Ð/Ø×%Ñ%Ó'×1Ñ1Ó3°}ÒDÐDÑD÷?	%ñ 	%ú÷	%ð 	%ús   ÃJ&Ç J3Ê&J0Ê3J<N)rÀ   rÁ   rÂ   r   rå   rï   rf   r×   r÷   r   r  r	  r  r  r  r  r  r$  r<   rI   r   rà   rà   b  sS   „ ò	0ò9ò7ò7òDòHò%ò(HòHò%ò*%ò*%ò*%ò2Dó$0ErI   rà   c                   ó   — e Zd Zd„ Zy)ÚTestSerialJSONReadc                 ó‚   — |j                  dt        «       «      }d|_        t        |i |¤Ž}|j	                  d¬«       |S )Nru   FTrç   ©râ   r   rL   r   ré   ©rc   rã   re   ru   rj   s        r   r   zTestSerialJSONRead.read_jsonS  s@   € Ø×(Ñ(¨¼»ÓGˆØ#(ˆÔ Ü˜4Ð* 6Ñ*ˆØ�‰˜DˆÔ!ØˆrI   N©rÀ   rÁ   rÂ   r   r<   rI   r   r&  r&  Q  ó   „ órI   r&  c                   ó   — e Zd Zd„ Zy)ÚTestParallelJSONReadc                 ó‚   — |j                  dt        «       «      }d|_        t        |i |¤Ž}|j	                  d¬«       |S )Nru   Trç   r(  r)  s        r   r   zTestParallelJSONRead.read_json]  s@   € Ø×(Ñ(¨¼»ÓGˆØ#'ˆÔ Ü˜4Ð* 6Ñ*ˆØ�‰˜DˆÔ!ØˆrI   Nr*  r<   rI   r   r-  r-  [  r+  rI   r-  c                   ó   — e Zd ZdZy)ÚTestSerialStreamingJSONReadFN©rÀ   rÁ   rÂ   rL   r<   rI   r   r0  r0  e  s   „ à�KrI   r0  c                   ó   — e Zd ZdZy)ÚTestThreadedStreamingJSONReadTNr1  r<   rI   r   r3  r3  j  s	   „ ð �KrI   r3  )r{   r°   z
)%rÃ   Úcollectionsr   Údecimalr   rÏ   r   r"   r   ÚunittestrÆ   r   ÚImportErrorrZ   Úpyarrowr&   Úpyarrow.jsonr   r   r   r   r   r9   rH   rN   r]   ÚABCr_   rÈ   rà   ÚTestCaser&  r-  r0  rÅ   Ú	threadingr3  r<   rI   r   ú<module>r=     s  ðó$ Ý #Ý Û 	Û Û Û Û ðÛó ã ß HÓ Hò!ó
ò0ò4ò*Eô6HI�3—7‘7ô HIôV!4�|ô !4ôHlE ô lEô^Ð)¨8×+<Ñ+<ô ôÐ+¨X×->Ñ->ô ôÐ";¸X×=NÑ=Nô ð
 ‡�×ÑôÐ$=¸x×?PÑ?Pó ó ñøð] ò Ø	‚Bðús   ¦C+ Ã+C5Ã4C5