Ë
    _QêjG_  ã                   óö  — 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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      ú\/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/pyarrow/tests/test_json.pyÚgenerate_col_namesr   %   sG   è ø€ ä×$Ñ$€GØ×ÐØò !ˆØò 	!ˆFØ˜&‘.Ó ñ	!ñ!ð ús   ‚5˜3™5F)Úextra_whitespacec                óþ  — t         j                  j                  d«      }|j                  dd| |f¬«      }t	        t        j                  t        «       | «      «      }g }d}|j                  D ]Š  }	t        t        ||	«      D �
�cg c]  \  }
}|
t        |«      f‘Œ c}}
«      }t        j                  |«      }|r|d|j                  dd«      z  z  }|j                  |«       t        |t!        |«      «      }ŒŒ |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ÚjsonÚdumpsÚappendÚmaxÚlenÚjoinÚencodeÚpaÚarrayÚint64ÚTableÚfrom_arrays)Únum_colsÚnum_rowsÚlinesepr   ÚrndÚarrÚ	col_namesÚlinesÚmax_line_lenÚrowÚkÚvÚjson_objÚlineÚdataÚcolÚcolumnsÚexpecteds                     r   Úmake_random_jsonrA   .   sA  € ä
�)‰)×
Ñ
 Ó
#€CØ
�+‰+�a˜ X¨xÐ$8ˆ+Ó
9€CÜ”Y×%Ñ%Ô&8Ó&:¸HÓEÓF€IØ€EØ€LØ�u‰uò 4ˆÜ¼#¸iÈÓ:M×N±°°A ¤C¨£F¢ÓNÓOˆÜ�z‰z˜(Ó#ˆÙØ�C˜#Ÿ+™+ a¨Ó+Ñ+Ñ+ˆDØ�‰�TÔÜ˜<¬¨T«Ó3‰ð4ð �<‰<˜Ó×%Ñ%Ó'€DØ9<Ö=°#Œr�x‰x˜¤"§(¡(£*Ö-Ð=€GÐ=Ü�x‰x×#Ñ# G¨YÓ7€HØ�˜xÐ'Ð'ùó  Oùò >s   ÂE4Ä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_picklingrP   B   sk   € ÙÑ�Ñ€DØ�}‰}˜WŸ]™]¨4Ø4;×4LÑ4Lð +ó Nó O€Hà"×(Ñ(Ó*ò 0‰ˆˆeÜ�x Ó&¨%Ó/Ð/Ð/ñ0ó    c                 ó†  — 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 ‚d}t        |«      d|› d	�k(  sJ ‚t	        |«      d
|› d	�k(  sJ ‚t        || dd¬«       y )Nr   i90  TFiÒ  )Ú
block_sizeÚuse_threadsz+
    use_threads=False,
    block_size=1234z<pyarrow.json.ReadOptions>(ú)zReadOptions()rJ   rS   rT   )r   rS   rT   ÚreprÚstrrP   )Úpickle_modulerI   rL   Úexpected_repr_inners       r   Útest_read_optionsrZ   J   sò   € Ü
€CÙ‹5€Dà�?‰?˜QÒÐÐØ€D„OØ�?‰?˜eÒ#Ð#Ð#à×Ñ˜tÑ#Ð#Ð#Ø€DÔØ×Ñ˜uÑ$Ð$Ð$á˜$¨EÔ2€DØ�?‰?˜dÒ"Ð"Ð"Ø×Ñ˜uÑ$Ð$Ð$ðÐô �‹:Ð6Ð7JÐ6KÈ1ÐMÒMÐMÐMÜˆt‹9˜,Ð':Ð&;¸1Ð=Ò=Ð=Ð=ä  ¨mØ,0Ø-2ö4rQ   c                 ón  — t         } |«       }|j                  du sJ ‚|j                  �J ‚d|_        |j                  du sJ ‚d}t        |«      d|› d�k(  sJ ‚t	        |«      d|› d�k(  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)NFTz]
    explicit_schema=None,
    newlines_in_values=True,
    unexpected_field_behavior='infer'z<pyarrow.json.ParseOptions>(rU   zParseOptions(ÚfooÚinfer)ÚignoreÚerrorr]   zinvalid-valuer^   )rJ   Úexplicit_schemaÚnewlines_in_valuesÚunexpected_field_behavior)r   ra   r`   rV   rW   r+   ÚschemaÚfieldÚint32rb   ÚpytestÚraisesÚ
ValueErrorrP   )rX   rI   rL   rY   rc   rO   s         r   Útest_parse_optionsri   f   sU  € Ü
€CÙ‹5€DØ×"Ñ" eÑ+Ð+Ð+Ø×ÑÐ'Ð'Ð'à"€DÔØ×"Ñ" dÑ*Ð*Ð*ð)Ðô
 �‹:Ð7Ð8KÐ7LÈAÐNÒNÐNÐNÜˆt‹9˜-Ð(;Ð'<¸AÐ>Ò>Ð>Ð>ä�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+Ä+D4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_bytesŠ   s
   € ô "Ð!rQ   c                 ó”   — |j                   t        |«      k(  sJ ‚|j                  D �cg c]  }|j                  ‘Œ c}|k(  sJ ‚y c c}w r
   )Únum_columnsr(   r?   rN   )ro   Ú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   ra   rS   rf   rg   rh   rr   ÚrangeÚ	to_pydict)ro   Úrowsr€   r�   r=   ra   rS   ru   s           r   Útest_block_sizeszBaseTestJSON.test_block_sizes—   sè   € Ø.ˆÜ"“}ˆÜ$›ˆà˜4 %™<Ð(ò 	AˆDØ&3ò AÐ"Ø3E�Ô0Ø*+�Ô'Ü—]‘]¤:Ð5QÔRñ 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}r…   r|   r†   r   r‡   é   ©r„   rp   rw   )rr   r‰   )ro   rŠ   ru   s      r   Útest_no_newline_at_endz#BaseTestJSON.test_no_newline_at_end¬   sH   € ØBˆØ—‘ Ó%ˆØ�‰Ó Ø�Q�Ø�Q�Ø�Q�ñ%
ò 
ð 	
ñ 
rQ   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}
r„   rp   rw   r…   r|   r†   r   r‡   r�   rŽ   )rr   r+   rc   r-   r‰   ©ro   rŠ   ru   rc   s       r   Útest_simple_intszBaseTestJSON.test_simple_intsµ   s˜   € àDˆØ—‘ Ó%ˆÜ—‘˜S¤"§(¡(£*Ð-Ø ¤"§(¡(£*Ð-Ø ¤"§(¡(£*Ð-ð/ó 0ˆð �|‰|˜vÒ%Ð%Ð%Ø�‰Ó Ø�Q�Ø�Q�Ø�Q�ñ%
ò 
ð 	
ñ 
rQ   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}
r„   rp   rw   Údç      ð?ç      @r†   éûÿÿÿÚ3r\   FT©r„   rp   rw   r”   )rr   r+   rc   Úfloat64r-   r   Úbool_r‰   r‘   s       r   Útest_simple_variedzBaseTestJSON.test_simple_variedÃ   s°   € ð@ˆà—‘ Ó%ˆÜ—‘˜S¤"§*¡*£,Ð/Ø ¤"§(¡(£*Ð-Ø ¤"§)¡)£+Ð.Ø ¤"§(¡(£*Ð-ð/ó 0ˆð �|‰|˜vÒ%Ð%Ð%Ø�‰Ó Ø�s�Ø�R�Ø�u�Ø˜�ñ	%
ò 
ð 	
ñ 
rQ   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}
r„   rp   rw   r”   Úe)r•   Ng      @)r†   r—   N)Nr\   Únan)NNN)NTF)r„   rp   rw   r”   rž   )	rr   r+   rc   rš   r-   r   Únullr›   r‰   r‘   s       r   Útest_simple_nullszBaseTestJSON.test_simple_nullsÔ   s³   € ðMˆð —‘ Ó%ˆÜ—‘˜S¤"§*¡*£,Ð/Ø ¤"§(¡(£*Ð-Ø ¤"§)¡)£+Ð.Ø ¤"§'¡'£)Ð,Ø ¤"§(¡(£*Ð-ð	/ó 0ˆð
 �|‰|˜vÒ%Ð%Ð%Ø�‰Ó Ú!ÚÚ%Ú#Ú$ñ%
ò 
ð 	
ñ 
rQ   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": []}r„   )rr   r+   rc   Ú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Ò/Ð/Ñ/rQ   c                 óº   — d}| j                  |«      }t        j                  g «      }|j                  |k(  sJ ‚|j                  dk(  sJ ‚|j                  dk(  sJ ‚y )Ns   {}
{}
r   r†   )rr   r+   rc   rt   r1   r‘   s       r   Útest_empty_rowszBaseTestJSON.test_empty_rowsð   sZ   € ØˆØ—‘ Ó%ˆÜ—‘˜2“ˆØ�|‰|˜vÒ%Ð%Ð%Ø× Ñ  AÒ%Ð%Ð%Ø�~‰~ Ò"Ð"Ñ"rQ   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}
{}
r„   Ú1z1.45z-23.456r‚   r|   ©r`   ©r�   )
r   r+   Ú	decimal32Ú	decimal64Ú
decimal128Ú
decimal256rc   r   rr   r‰   )ro   rŠ   r@   Údecimal_typesÚtype_factoryrc   rL   ru   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ñ	1rQ   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}
r\   rª   r«   Únums   bars   bazr   r…   )r\   r´   r^   )r`   rb   r_   ú"JSON parse error: unexpected fieldr}   )
r+   rc   Úbinaryr   rr   r-   r‰   rf   rg   ÚArrowInvalid)ro   rŠ   rc   rL   ru   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                 óú   — dD ]v  }t        dd|¬«      \  }}}| j                  |«      }|j                  |j                  k(  sJ ‚|j                  |«      sJ ‚|j	                  «       |j	                  «       k(  rŒvJ ‚ y )Nr{   r†   é
   ©r0   r1   r   )rA   rr   rc   Úequalsr‰   )ro   r   r=   Ú_r@   ru   s         r   Útest_small_random_jsonz#BaseTestJSON.test_small_random_json.  s   € à -ò 	=ÐÜ 0¸!ÀbØBRô!TÑˆD�!�Xà—O‘O DÓ)ˆEØ—<‘< 8§?¡?Ò2Ð2Ð2Ø—<‘< Ô)Ð)Ð)Ø—?‘?Ó$¨×(:Ñ(:Ó(<Ó<Ð<Ð<ñ	=rQ   c                 ó¸   — dD ]U  }t        dd|¬«      \  }}}t        d¬«      }| j                  ||¬«      }|j                  dk(  sJ ‚|j                  dk(  rŒUJ ‚ y )Nr{   r†   i‡ r»   i    ©rS   ©r€   )rA   r   rr   r1   )ro   r   r=   r½   r@   r€   ru   s          r   Útest_load_large_jsonz!BaseTestJSON.test_load_large_json8  so   € à -ò 	/ÐÜ 0¸!ÀfØBRô!TÑˆD�!�Xô '°,Ô?ˆLØ—O‘O D°|�OÓDˆEØ—>‘> VÒ+Ð+Ð+Ø×$Ñ$¨Ó.Ð.Ð.ñ	/rQ   c           	      ó¤  — dD ]Ë  }t        dd|¬«      \  }}}||dz   |dz   g}t        «       }t        «       }||j                  d«      fD ]‚  }dD ]{  }	|	|_        |D ]m  }
|
|_        | j                  |||¬«      }|j                  |j                  k(  sJ ‚|j                  |«      rŒK|j                  «       |j                  «       k(  rŒmJ ‚ Œ} Œ„ ŒÍ y )	Nr{   r†   éd   r»   r|   é   s   
r   )
rA   r   r   Úrstripra   rS   rr   rc   r¼   r‰   )ro   r   Ú	data_baser7   r@   Úblock_sizesr€   r�   r=   ra   rS   ru   s               r   Útest_stress_block_sizesz$BaseTestJSON.test_stress_block_sizesC  s  € ð !.ò 	MÐÜ0@Ø SØ!1ô13Ñ-ˆI�| Xð (¨¸Ñ)9¸<È"Ñ;LÐMˆKä&›=ˆLÜ(›NˆMà" I×$4Ñ$4°WÓ$=Ð>ò 
M�Ø*7ò 	MÐ&Ø7I�MÔ4Ø&1ò M˜
Ø2<˜Ô/Ø $§¡°À<Ø>Kð !0ó !M˜à$Ÿ|™|¨x¯©Ò>Ð>Ð>Ø$Ÿ|™|¨HÕ5à#(§?¡?Ó#4¸×8JÑ8JÓ8LÓ#LÐLÐ#LñMñ	Mñ
Mñ	MrQ   N)Ú__name__Ú
__module__Ú__qualname__ÚabcÚabstractmethodrr   rx   r‹   r�   r’   rœ   r¡   r¥   r§   r²   r¸   rf   ÚmarkÚnumpyr¾   rÂ   rÉ   rD   rQ   r   rk   rk   ‰   sª   „ Ø×Ññ"ó ð"ò8òAò*
ò
ò
ò"
ò(0ò#ò1ò"#6ðJ ‡[�[×Ññ=ó ð=ð ‡[�[×Ññ/ó ð/ð ‡[�[×ÑñMó ñMrQ   rk   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚBaseTestJSONReadc                 óN   —  | j                   t        j                  |«      fi |¤ŽS r
   )r   r+   Ú	py_bufferrn   s      r   rr   zBaseTestJSONRead.read_bytes^  ó    € Øˆt�~‰~œbŸl™l¨1›oÑ8°Ñ8Ð8rQ   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}
r…   r†   ©r„   rp   )	ÚioÚBytesIOr   r‰   ÚStringIOÚdecoderf   rg   Ú	TypeError)ro   r=   Úexpected_dataÚbioru   Úsios         r   Útest_file_objectz!BaseTestJSONRead.test_file_objecta  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]]}r…   s	   {"a": {}}s    {"a": {}}
{"a": {"b": {"c": 1}}}rp   rw   rÁ   r„   )r   r(   rr   r‰   ÚcolumnÚ
num_chunks)ro   Ú	first_rowr€   Ú	next_rowsÚexpected_pylistru   r@   s          r   Útest_reconcile_across_blocksz-BaseTestJSONRead.test_reconcile_across_blocksl  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ñ	4rQ   N)rÊ   rË   rÌ   rr   rá   rè   rD   rQ   r   rÒ   rÒ   \  s   „ ò9ò	 ó4rQ   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
        r€   )Ú
setdefaultr   rT   r   )ro   r$   Úargsrq   r€   s        r   r   z#BaseTestStreamingJSONRead.open_json�  s;   € ð ×(Ñ(¨¼»ÓGˆØ#'×#3Ñ#3ˆÔ Ü˜Ð/ Ò/¨Ñ/Ð/rQ   c                 óN   —  | j                   t        j                  |«      fi |¤ŽS r
   )r   r+   rÔ   rn   s      r   Ú
open_bytesz$BaseTestStreamingJSONRead.open_bytesŒ  rÕ   rQ   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)rc   r   r(   r"   Úvalidater‰   )ro   ÚreaderÚexpected_schemarÞ   ÚbatchesÚbatchÚexpected_batchs          r   Úcheck_readerz&BaseTestStreamingJSONRead.check_reader�  s„   € Ø�}‰} Ò/Ð/Ð/Ü�v“,ˆÜ�7‹|œs =Ó1Ò1Ð1Ð1Ü%(¨°-Ó%@ò 	7Ñ!ˆE�>Ø�N‰N ˆNÔ%Ø—<‘< ?Ò2Ð2Ð2Ø—?‘?Ó$¨Ó6Ð6Ð6ñ	7rQ   c                 óD   —  | j                   |fi |¤Žj                  «       S r
   )rï   Úread_allrn   s      r   rr   z$BaseTestStreamingJSONRead.read_bytes˜  s!   € Øˆt�‰˜qÑ+ FÑ+×4Ñ4Ó6Ð6rQ   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×   r…   r†   rØ   r„   rp   )rÙ   rÚ   r   r+   rc   r-   rù   )ro   r=   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°?ÕCrQ   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*r}   rÁ   ©r   rS   rf   rg   r+   r·   rï   )ro   Úbad_first_chunkr€   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þ   r}   ©r   rS   r+   rc   r-   rï   Úread_next_batchr‰   rf   rg   r·   ÚStopIteration©ro   Úbad_middle_chunkr€   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.*r}   rÁ   rÿ   ©ro   Úbad_first_blockr€   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  r}   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*r}   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©ra   r  r   r   zJSON parse error *r}   ©r   r   r+   rc   r-   rï   r  r‰   rf   rg   r·   r  ©ro   r	  r€   r�   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                  «       j                  «       dd gik(  sJ ‚|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  r   r   r…   zJSON parse errorr}   r  r  s         r   Ú*test_non_linewise_chunker_bad_middle_blockzDBaseTestStreamingJSONRead.test_non_linewise_chunker_bad_middle_block  sZ  € ØGÐÜ"¨bÔ1ˆÜ$¸Ô=ˆÜŸ)™) c¬2¯8©8«:Ð%6Ð$7Ó8ˆà—‘ØØ%Ø'ð !ó )ˆð �}‰} Ò/Ð/Ð/Ø×%Ñ%Ó'×1Ñ1Ó3Ø�!�ð8
ò 
ð 	
ð 
ð ×%Ñ%Ó'×1Ñ1Ó3Ø�!�ð8
ò 
ð 	
ð 
ô
 �]‰]œ2Ÿ?™?Ð2DÔEñ 	%Ø×)Ñ)Ó+×5Ñ5Ó7¸CÀ$À¸=ÒHÐHÐHØ×"Ñ"Ô$÷	%ô �]‰]œ=Ó)ñ 	%Ø×"Ñ"Ô$÷	%ð 	%÷		%ð 	%ú÷	%ð 	%ús   Ã7EÄ3EÅEÅE"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"}rp   Úsé   rÀ   rª   Tr\   )rp   r$  r   )r+   rc   r›   Úutf8r   r   rï   rù   )ro   Úleading_empty_chunkr`   r€   r�   rÞ   rô   s          r   Ú test_ignore_leading_empty_blocksz:BaseTestStreamingJSONRead.test_ignore_leading_empty_blocks+  s‘   € Ø>ÐÜŸ)™)Ø”"—(‘(“*ÐØ”"—'‘'“)Ðð%
ó ˆô #¨bÔ1ˆÜ$°_ÔEˆà�˜u˜gñ
ˆð —‘ØØ%Ø'ð !ó )ˆð 	×Ñ˜& /°M°?ÕCrQ   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}r„   rp   r   r\   rØ   é    rÀ   r]   )rb   r   rµ   r}   rw   r…   TrŽ   é@   r”   )r   r…   r†   )r\   NN)NTN)NNr–   r™   é`   )r+   rc   r-   r&  r   r   rï   r  r‰   rf   rg   r·   r›   rš   )ro   rŠ   rõ   rÞ   r€   r�   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ù   rr   rá   r  r
  r  r  r  r  r   r"  r(  r-  rD   rQ   r   rê   rê   €  sS   „ ò	0ò9ò7ò7òDòHò%ò(HòHò%ò*%ò*%ò*%ò4Dó$0ErQ   rê   c                   ó   — e Zd Zd„ Zy)ÚTestSerialJSONReadc                 ó‚   — |j                  dt        «       «      }d|_        t        |i |¤Ž}|j	                  d¬«       |S )Nr€   FTrñ   ©rì   r   rT   r   ró   ©ro   rí   rq   r€   ru   s        r   r   zTestSerialJSONRead.read_jsonr  s@   € Ø×(Ñ(¨¼»ÓGˆØ#(ˆÔ Ü˜4Ð* 6Ñ*ˆØ�‰˜DˆÔ!ØˆrQ   N©rÊ   rË   rÌ   r   rD   rQ   r   r/  r/  p  ó   „ órQ   r/  c                   ó   — e Zd Zd„ Zy)ÚTestParallelJSONReadc                 ó‚   — |j                  dt        «       «      }d|_        t        |i |¤Ž}|j	                  d¬«       |S )Nr€   Trñ   r1  r2  s        r   r   zTestParallelJSONRead.read_json|  s@   € Ø×(Ñ(¨¼»ÓGˆØ#'ˆÔ Ü˜4Ð* 6Ñ*ˆØ�‰˜DˆÔ!ØˆrQ   Nr3  rD   rQ   r   r6  r6  z  r4  rQ   r6  c                   ó   — e Zd ZdZy)ÚTestSerialStreamingJSONReadFN©rÊ   rË   rÌ   rT   rD   rQ   r   r9  r9  „  s   „ à�KrQ   r9  c                   ó   — e Zd ZdZy)ÚTestThreadedStreamingJSONReadTNr:  rD   rQ   r   r<  r<  ‰  s	   „ ð �KrQ   r<  )r†   rº   z
)%rÍ   Úcollectionsr   Údecimalr   rÙ   r   r$   r   ÚunittestrÐ   r   ÚImportErrorrf   Úpyarrowr+   Úpyarrow.jsonr   r   r   r   r   rA   rP   rZ   ri   ÚABCrk   rÒ   rê   ÚTestCaser/  r6  r9  rÏ   Ú	threadingr<  rD   rQ   r   ú<module>rF     s  ðó$ Ý #Ý Û 	Û Û Û Û ðÛó ã ß HÓ Hò!ð(Ø).ô(ò(0ò4ò8 EôFPM�3—7‘7ô PMôf!4�|ô !4ôHmE ô mEô`Ð)¨8×+<Ñ+<ô ôÐ+¨X×->Ñ->ô ôÐ";¸X×=NÑ=Nô ð
 ‡�×ÑôÐ$=¸x×?PÑ?Pó ó ñøð[ ò Ø	‚Bðús   ¦C. Ã.C8Ã7C8