Ë
    ìéñiÃ[  ã                   óð  — 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      úY/var/www/pod-logistic/pod-ai/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                 ó†  — 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()rB   rK   rL   )r   rK   rL   ÚreprÚstrrH   )Úpickle_modulerA   rD   Úexpected_repr_inners       r   Útest_read_optionsrR   C   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ö4rI   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>(rM   zParseOptions(ÚfooÚinfer)ÚignoreÚerrorrU   zinvalid-valuerV   )rB   Úexplicit_schemaÚnewlines_in_valuesÚunexpected_field_behavior)r   rY   rX   rN   rO   r&   ÚschemaÚfieldÚint32rZ   ÚpytestÚraisesÚ
ValueErrorrH   )rP   rA   rD   rQ   r[   rG   s         r   Útest_parse_optionsra   _   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
   € ô "Ð!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   )rg   Ú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   rY   rK   r^   r_   r`   rj   ÚrangeÚ	to_pydict)rg   Úrowsry   rz   r5   rY   rK   rn   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}r~   ru   r   é   r€   é   ©r}   rh   rp   )rj   r‚   )rg   rƒ   rn   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}
r}   rh   rp   r~   ru   r   r†   r€   r‡   rˆ   )rj   r&   r[   r(   r‚   ©rg   rƒ   rn   r[   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}
r}   rh   rp   Údç      ð?ç      @r   éûÿÿÿÚ3rT   FT©r}   rh   rp   rŽ   )rj   r&   r[   Ú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}
r}   rh   rp   rŽ   Úe)r�   Ng      @)r   r‘   N)NrT   Únan)NNN)NTF)r}   rh   rp   rŽ   r˜   )	rj   r&   r[   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": []}r}   )rj   r&   r[   Ú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   )rj   r&   r[   rl   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}
{}
r}   Ú1z1.45z-23.456r{   ru   ©rX   ©rz   )
r   r&   Ú	decimal32Ú	decimal64Ú
decimal128Ú
decimal256r[   r   rj   r‚   )rg   rƒ   r8   Údecimal_typesÚtype_factoryr[   rD   rn   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}
rT   r¤   r¥   Únums   bars   bazr   r~   )rT   r®   rV   )rX   rZ   rW   ú"JSON parse error: unexpected fieldrv   )
r&   r[   Úbinaryr   rj   r(   r‚   r^   r_   ÚArrowInvalid)rg   rƒ   r[   rD   rn   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   rj   r[   Úequalsr‚   )rg   r5   r8   rn   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   ©ry   )r9   r   rj   r,   )rg   r5   r8   ry   rn   s        r   Útest_load_large_jsonz!BaseTestJSON.test_load_large_json0  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   
rt   )é   é   é%   rx   )
r9   r   r   ÚrstriprY   rK   rj   r[   r¶   r‚   )	rg   Ú	data_baser8   ry   rz   r5   rY   rK   rn   s	            r   Útest_stress_block_sizesz$BaseTestJSON.test_stress_block_sizes9  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Úabstractmethodrj   rq   r„   r‰   rŒ   r–   r›   rŸ   r¡   r¬   r²   r^   ÚmarkÚnumpyr·   r»   rÃ   r<   rI   r   rc   rc   ‚   sª   „ Ø×Ññ"ó ð"ò8òAò,
ò
ò
ò"
ò(0ò#ò1ò"#6ðJ ‡[�[×Ññ9ó ð9ð ‡[�[×Ññ+ó ð+ð ‡[�[×ÑñIó ñIrI   rc   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚBaseTestJSONReadc                 óN   —  | j                   t        j                  |«      fi |¤ŽS r
   )r   r&   Ú	py_bufferrf   s      r   rj   zBaseTestJSONRead.read_bytesO  ó    € Øˆ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}
r~   r   ©r}   rh   )	ÚioÚBytesIOr   r‚   ÚStringIOÚdecoder^   r_   Ú	TypeError)rg   r5   Úexpected_dataÚbiorn   Úsios         r   Útest_file_objectz!BaseTestJSONRead.test_file_objectR  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}}}rh   rp   rº   r}   )r   rm   rj   r‚   ÚcolumnÚ
num_chunks)rg   Ú	first_rowry   Ú	next_rowsÚexpected_pylistrn   r8   s          r   Útest_reconcile_across_blocksz-BaseTestJSONRead.test_reconcile_across_blocks]  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Æ   rj   rÛ   râ   r<   rI   r   rÌ   rÌ   M  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
        ry   )Ú
setdefaultr   rL   r   )rg   r"   Úargsri   ry   s        r   r   z#BaseTestStreamingJSONRead.open_jsonr  s;   € ð ×(Ñ(¨¼»ÓGˆØ#'×#3Ñ#3ˆÔ Ü˜Ð/ Ò/¨Ñ/Ð/rI   c                 óN   —  | j                   t        j                  |«      fi |¤ŽS r
   )r   r&   rÎ   rf   s      r   Ú
open_bytesz$BaseTestStreamingJSONRead.open_bytes}  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)r[   r   rm   r   Úvalidater‚   )rg   Ú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ñ	7rI   c                 óD   —  | j                   |fi |¤Žj                  «       S r
   )ré   Úread_allrf   s      r   rj   z$BaseTestStreamingJSONRead.read_bytes‰  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Ñ   r~   r   rÒ   r}   rh   )rÓ   rÔ   r   r&   r[   r(   ró   )rg   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*rv   rº   ©r   rK   r^   r_   r&   r±   ré   )rg   Úbad_first_chunkry   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ø   rv   ©r   rK   r&   r[   r(   ré   Úread_next_batchr‚   r^   r_   r±   ÚStopIteration©rg   Úbad_middle_chunkry   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.*rv   rº   rù   ©rg   Úbad_first_blockry   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  rv   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*rv   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©rY   r  rx   r   úJSON parse error *rv   ©r   r   r&   r[   r(   ré   r   r‚   r^   r_   r±   r  ©rg   r  ry   rz   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  rx   r   r~   r  rv   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"}rh   Úsé   r¹   r¤   TrT   )rh   r  rx   )r&   r[   r•   Úutf8r   r   ré   ró   )rg   Úleading_empty_chunkrX   ry   rz   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}r}   rh   r   rT   rÒ   é    r¹   rU   )rZ   rx   r¯   rv   rp   r~   Trˆ   é@   rŽ   )r   r~   r   )rT   NN)NTN)NNr�   r“   é`   )r&   r[   r(   r!  r   r   ré   r   r‚   r^   r_   r±   r•   r”   )rg   rƒ   rï   rØ   ry   rz   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ó   rj   rÛ   rû   r  r  r  r  r  r  r  r#  r(  r<   rI   r   rä   rä   q  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 )Nry   FTrë   ©ræ   r   rL   r   rí   ©rg   rç   ri   ry   rn   s        r   r   zTestSerialJSONRead.read_jsonb  s@   € Ø×(Ñ(¨¼»ÓGˆØ#(ˆÔ Ü˜4Ð* 6Ñ*ˆØ�‰˜DˆÔ!ØˆrI   N©rÄ   rÅ   rÆ   r   r<   rI   r   r*  r*  `  ó   „ órI   r*  c                   ó   — e Zd Zd„ Zy)ÚTestParallelJSONReadc                 ó‚   — |j                  dt        «       «      }d|_        t        |i |¤Ž}|j	                  d¬«       |S )Nry   Trë   r,  r-  s        r   r   zTestParallelJSONRead.read_jsonl  s@   € Ø×(Ñ(¨¼»ÓGˆØ#'ˆÔ Ü˜4Ð* 6Ñ*ˆØ�‰˜DˆÔ!ØˆrI   Nr.  r<   rI   r   r1  r1  j  r/  rI   r1  c                   ó   — e Zd ZdZy)ÚTestSerialStreamingJSONReadFN©rÄ   rÅ   rÆ   rL   r<   rI   r   r4  r4  t  s   „ à�KrI   r4  c                   ó   — e Zd ZdZy)ÚTestThreadedStreamingJSONReadTNr5  r<   rI   r   r7  r7  y  s	   „ ð �KrI   r7  )r   r´   z
)%rÇ   Úcollectionsr   Údecimalr   rÓ   r   r"   r   ÚunittestrÊ   r   ÚImportErrorr^   Úpyarrowr&   Úpyarrow.jsonr   r   r   r   r   r9   rH   rR   ra   ÚABCrc   rÌ   rä   ÚTestCaser*  r1  r4  rÉ   Ú	threadingr7  r<   rI   r   ú<module>rA     s  ðó$ Ý #Ý Û 	Û Û Û Û ðÛó ã ß HÓ Hò!ó
ò0ò4ò8 EôFH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