a
    é´«jHŽ  ã                   @   s  d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z
d dlZd dlZd dlm  mZ d dlmZ d dlmZmZmZmZmZmZmZmZmZ d dlmZ dd„ Zej g d¢d�dd	„ ƒZ!G d
d„ dƒZ"G dd„ dƒZ#G dd„ dƒZ$dS )é    N)ÚIS64)	Ú	DataFrameÚDatetimeIndexÚIndexÚNaTÚPeriodIndexÚSeriesÚ	TimedeltaÚ	TimestampÚ
date_rangec                 C   s   dd„ |   ¡ D ƒS )zÉ
    Sanitize dictionary for JSON by converting all keys to strings.

    Parameters
    ----------
    d : dict
        The dictionary to convert.

    Returns
    -------
    cleaned_dict : dict
    c                 S   s   i | ]\}}t |ƒ|“qS © )Ústr)Ú.0ÚkÚvr   r   ú^/var/www/html/laksyashrimp/venv/lib/python3.9/site-packages/pandas/tests/io/json/test_ujson.pyÚ
<dictcomp>-   ó    z_clean_dict.<locals>.<dictcomp>)Úitems©Údr   r   r   Ú_clean_dict    s    r   )NÚsplitÚrecordsÚvaluesÚindex)Úparamsc                 C   s   | j S ©N)Úparam)Úrequestr   r   r   Úorient0   s    r    c                   @   s|  e Zd Zejje dd�dd„ ƒZej dddg¡dd	„ ƒZ	ej d
g d¢¡dd„ ƒZ
dd„ Zdd„ Zdd„ Zej dddg¡dd„ ƒZej dejej g¡dd„ ƒZdd„ Zdd„ Zd d!„ Zd"d#„ Zej d$g d%¢¡d&d'„ ƒZd(d)„ Zej d*d+d,g¡d-d.„ ƒZd/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Zd7d8„ Zd9d:„ Zej d;g d<¢¡d=d>„ ƒZd?d@„ Z dAdB„ Z!ej dCg dD¢¡dEdF„ ƒZ"dGdH„ Z#dIdJ„ Z$ej dKe% &¡ e% &dLdMdN¡e% &dOdPdQdR¡g¡dSdT„ ƒZ'dUdV„ Z(dWdX„ Z)ej dYe*e+ ,dZ¡e+j-e+j.e+j. g¡d[d\„ ƒZ/d]d^„ Z0d_d`„ Z1dadb„ Z2dcdd„ Z3dedf„ Z4ej dgg dh¢¡didj„ ƒZ5ej dkdldmg¡dndo„ ƒZ6ej dpg dq¢¡drds„ ƒZ7ej dtg du¢¡dvdw„ ƒZ8ej dxg dy¢¡dzd{„ ƒZ9ej d|d}d~g¡dd€„ ƒZ:d�d‚„ Z;dƒd„„ Z<d…d†„ Z=ej d‡dˆd‰g¡dŠd‹„ ƒZ>ej dŒd�dŽg¡d�d�„ ƒZ?ej d‘g d’¢¡d“d”„ ƒZ@d•d–„ ZAej d—g d˜¢¡d™dš„ ƒZBd›dœ„ ZCd�dž„ ZDdŸd „ ZEd¡d¢„ ZFd£d¤„ ZGd¥d¦„ ZHd§S )¨ÚTestUltraJSONTestsz$not compliant on 32-bit, xref #15865)Úreasonc                 C   sØ  t  d¡}tj|dd�}t |¡}|dks.J ‚t  d¡}tj|dd�}|dksRJ ‚t |¡}|dkshJ ‚t  d	¡}tj|dd�}|d
ksŒJ ‚t |¡}|dks¢J ‚t  d¡}tj|dd�}|dksÆJ ‚t |¡}|dksÜJ ‚t  d¡}tj|dd�}|dk�sJ ‚t |¡}|dk�sJ ‚t  d¡}tj|dd�}|dk�s@J ‚t |¡}|dk�sXJ ‚t  d¡}tj|dd�}|dk�s~J ‚t |¡}|dk�s–J ‚t  d¡}tj|dd�}|dk�s¼J ‚t |¡}|dk�sÔJ ‚d S )Nz	1337.1337é   ©Údouble_precisiongç§èˆä”@z0.95é   ú1.0ç      ð?z0.94z0.9gÍÌÌÌÌÌì?z1.95z2.0g       @z-1.95z-2.0g       Àz0.995é   z0.9995é   z0.99999999999999944)ÚdecimalÚDecimalÚujsonÚujson_dumpsÚujson_loads©ÚselfÚsutÚencodedÚdecodedr   r   r   Útest_encode_decimal8   sN    















z&TestUltraJSONTests.test_encode_decimalÚensure_asciiTFc                    s>   d‰d}d}‡ ‡fdd„}||ƒ ||dd� ||dd� d S )	Nz"A string \ /   
  	 </script> &z,"A string \\ \/ \b \f \n \r \t <\/script> &"z;"A string \\ \/ \b \f \n \r \t \u003c\/script\u003e \u0026"c                    sJ   t jˆfdˆ i|¤Ž}|| ks"J ‚ˆt |¡ks4J ‚ˆt  |¡ksFJ ‚d S )Nr6   ©r-   r.   ÚjsonÚloadsr/   )Zexpected_outputÚencode_kwargsÚoutput©r6   Ústring_inputr   r   Úhelperx   s    ÿÿÿz@TestUltraJSONTests.test_encode_string_conversion.<locals>.helperF)Zencode_html_charsTr   )r1   r6   Znot_html_encodedZhtml_encodedr>   r   r<   r   Útest_encode_string_conversionp   s    ÿ
z0TestUltraJSONTests.test_encode_string_conversionÚlong_number)lüÿÿÿZ:�`¡7{ g#å_œçt¦ÂgÔŸpAª‚¿Ác                 C   s0   d|i}t j|dd�}t  |¡}||ks,J ‚d S )NÚar#   r$   ©r-   r.   r/   )r1   r@   r2   r3   r4   r   r   r   Útest_double_long_numbersŠ   s    
z+TestUltraJSONTests.test_double_long_numbersc              	   C   s~   t j}dD ]n}t ||¡r
t ||¡�> t t d¡¡dks@J ‚tjddd�dksVJ ‚W d   ƒ n1 sj0    Y   qzq
d S )N)zit_IT.UTF-8ZItalian_Italygòì‘ÄûË‡Lz4.78T©Zprecise_floatg…ëQ¸@)ÚlocaleÚ
LC_NUMERICÚtmZcan_set_localeZ
set_localer-   r/   r.   )r1   Zlc_categoryZ
new_localer   r   r   Útest_encode_non_c_locale”   s    4z+TestUltraJSONTests.test_encode_non_c_localec                 C   s0   ddi}t  |¡}t j|dd�}||ks,J ‚d S )NrA   g=
×£p=@TrD   rB   r0   r   r   r   Ú test_decimal_decode_test_preciseŸ   s    
z3TestUltraJSONTests.test_decimal_decode_test_precisec                 C   sx   d}|t  t  |¡¡ksJ ‚d}|t  t  |¡¡ks8J ‚d}|t  t  |¡¡ksTJ ‚d}t |t  t  |¡¡¡stJ ‚d S )NgœWw'&l¡7g0Žä.ÿ++g¹j7­Ö–¶gó¡?>¬úÓ¡)r-   r/   r.   ÚnpZallclose)r1   Únumr   r   r   Ú#test_encode_double_tiny_exponential¥   s    z6TestUltraJSONTests.test_encode_double_tiny_exponentialÚunicode_keyÚkey1u   Ø¨Ù†c                 C   s$   |di}|t  t  |¡¡ks J ‚d S )NZvalue1©r-   r/   r.   )r1   rM   Zunicode_dictr   r   r   Ú"test_encode_dict_with_unicode_keys¯   s    z5TestUltraJSONTests.test_encode_dict_with_unicode_keysÚdouble_inputc                 C   sJ   t  |¡}t|dƒtt |¡dƒks(J ‚t|dƒtt  |¡dƒksFJ ‚d S ©Né   )r-   r.   Úroundr8   r9   r/   )r1   rQ   r;   r   r   r   Útest_encode_double_conversion´   s    
z0TestUltraJSONTests.test_encode_double_conversionc                 C   s   d}t  |¡}|dksJ ‚d S )Nr(   r'   ©r-   r.   )r1   Zdecimal_inputr;   r   r   r   Útest_encode_with_decimal¼   s    
z+TestUltraJSONTests.test_encode_with_decimalc                 C   s@   g gggd }t  |¡}|t |¡ks*J ‚|t  |¡ks<J ‚d S )Né   r7   )r1   Znested_inputr;   r   r   r   Ú"test_encode_array_of_nested_arraysÂ   s    
z5TestUltraJSONTests.test_encode_array_of_nested_arraysc                 C   s>   g d¢d }t  |¡}|t |¡ks(J ‚|t  |¡ks:J ‚d S )N)çcATšÞ@rZ   rZ   rZ   é
   r7   )r1   Zdoubles_inputr;   r   r   r   Útest_encode_array_of_doublesÉ   s    
z/TestUltraJSONTests.test_encode_array_of_doublesc                 C   s€   d}t j|dd�}|t |¡ks$J ‚|t  |¡ks6J ‚dD ]@}t j||d�}t||ƒ}|t |¡kshJ ‚|t  |¡ks:J ‚q:d S )Ng² )>@r#   r$   )r*   é	   )r-   r.   r8   r9   r/   rT   )r1   rQ   r;   r%   Zrounded_inputr   r   r   Útest_double_precisionÐ   s    
z(TestUltraJSONTests.test_double_precisionÚinvalid_val)rX   éÿÿÿÿÚ9Nc                 C   sZ   d}t |tƒrtnt}d}tj||d�� tj||d� W d   ƒ n1 sL0    Y  d S )NgöF7Ýš>@z‹Invalid value '.*' for option 'double_precision', max is '15'|an integer is required \(got type |object cannot be interpreted as an integer©Úmatchr$   )Ú
isinstanceÚintÚ
ValueErrorÚ	TypeErrorÚpytestÚraisesr-   r.   )r1   r_   rQ   Úexpected_exceptionÚmsgr   r   r   Útest_invalid_double_precisionÞ   s    
ÿz0TestUltraJSONTests.test_invalid_double_precisionc                 C   sB   d}t  |¡}|t |¡ks J ‚|t  |¡ks2J ‚|dks>J ‚d S )NzA string \ /   
  	z"A string \\ \/ \b \f \n \r \t"r7   )r1   r=   r;   r   r   r   Útest_encode_string_conversion2ò   s
    
z1TestUltraJSONTests.test_encode_string_conversion2Úunicode_inputu@   RÃ¤ksmÃ¶rgÃ¥s Ø§Ø³Ø§Ù…Ø© Ø¨Ù† Ù…Ø­Ù…Ø¯ Ø¨Ù† Ø¹ÙˆØ¶ Ø¨Ù† Ù„Ø§Ø¯Ù†õ
   Ã¦Â—Â¥Ã‘Âˆc                 C   s<   t  |¡}t  |¡}|t |¡ks&J ‚|t |¡ks8J ‚d S r   ©r-   r.   r/   r8   Údumpsr9   )r1   rn   ÚencÚdecr   r   r   Útest_encode_unicode_conversionú   s    

z1TestUltraJSONTests.test_encode_unicode_conversionc                 C   s:   d}t  |¡}t  |¡}||ks$J ‚|t |¡ks6J ‚d S )Nú)r-   r.   r/   r8   rq   )r1   Zescaped_inputrr   rs   r   r   r   Útest_encode_control_escaping  s
    

z/TestUltraJSONTests.test_encode_control_escapingc                 C   s@   d}t  |¡}t  |¡}|t |¡ks*J ‚|t |¡ks<J ‚d S )Nu   Ã°Â�Â�Â†rp   )r1   Zsurrogate_inputrr   rs   r   r   r   Ú"test_encode_unicode_surrogate_pair  s
    

z5TestUltraJSONTests.test_encode_unicode_surrogate_pairc                 C   s@   d}t  |¡}t  |¡}|t |¡ks*J ‚|t |¡ks<J ‚d S )Nu   Ã°Â‘Â€Â°TRAILINGNORMALrp   ©r1   Zfour_bytes_inputrr   rs   r   r   r   Útest_encode_unicode_4bytes_utf8  s
    

z2TestUltraJSONTests.test_encode_unicode_4bytes_utf8c                 C   s@   d}t  |¡}t  |¡}|t |¡ks*J ‚|t |¡ks<J ‚d S )Nu   Ã³Â¿Â¿Â¿TRAILINGNORMALrp   rx   r   r   r   Ú&test_encode_unicode_4bytes_utf8highest  s
    

z9TestUltraJSONTests.test_encode_unicode_4bytes_utf8highestc                 C   sF   d}d}t jt|d�� t |g¡ W d   ƒ n1 s80    Y  d S )Nu   'í«€'zT'utf-8' codec can't encode character '\\udac0' in position 1: surrogates not allowedrb   )rh   ri   ÚUnicodeEncodeErrorr-   r.   )r1   Ústringrk   r   r   r   Útest_encode_unicode_error&  s
    ÿz,TestUltraJSONTests.test_encode_unicode_errorc                 C   sN   g ggg}t  |¡}|t |¡ks&J ‚|t |¡ks8J ‚|t  |¡ksJJ ‚d S r   ©r-   r.   r8   r9   rq   r/   )r1   Zarr_in_arr_inputr;   r   r   r   Útest_encode_array_in_array/  s
    

z-TestUltraJSONTests.test_encode_array_in_arrayÚ	num_input)éiz  i—…ÿÿìûÿÿÿ         c                 C   sD   t  |¡}|t |¡ksJ ‚|t |¡ks.J ‚|t  |¡ks@J ‚d S r   r~   )r1   r€   r;   r   r   r   Útest_encode_num_conversion7  s    	
z-TestUltraJSONTests.test_encode_num_conversionc                 C   s:   g d¢}t  |¡}|t |¡ks$J ‚|t  |¡ks6J ‚d S )N)r&   r)   r*   é   r7   )r1   Z
list_inputr;   r   r   r   Útest_encode_list_conversionE  s    
z.TestUltraJSONTests.test_encode_list_conversionc                 C   s@   dddddœ}t  |¡}|t |¡ks*J ‚|t  |¡ks<J ‚d S )Nr&   r)   r*   r„   )Zk1Zk2Zk3Zk4r7   )r1   Z
dict_inputr;   r   r   r   Útest_encode_dict_conversionL  s    
z.TestUltraJSONTests.test_encode_dict_conversionÚbuiltin_value)NTFc                 C   sD   t  |¡}|t |¡ksJ ‚|t |¡ks.J ‚|t  |¡ks@J ‚d S r   r~   )r1   r‡   r;   r   r   r   Ú%test_encode_builtin_values_conversionS  s    
z8TestUltraJSONTests.test_encode_builtin_values_conversionc                 C   s\   t j  t ¡ ¡}tj|dd�}t | ¡ ¡}t|ƒt	 
|¡ksBJ ‚t|ƒt |¡ksXJ ‚d S )NÚs©Ú	date_unit)ÚdatetimeÚfromtimestampÚtimer-   r.   ÚcalendarÚtimegmÚutctimetuplere   r8   r9   r/   )r1   Zdatetime_inputr;   Úexpectedr   r   r   Útest_encode_datetime_conversionZ  s
    z2TestUltraJSONTests.test_encode_datetime_conversionc                 C   sn   t j t ¡ ¡}tj|dd�}|j|j|jdddf}t	 
|¡}t|ƒt |¡ksTJ ‚t|ƒt |¡ksjJ ‚d S )Nr‰   rŠ   r   )rŒ   Údater�   rŽ   r-   r.   ÚyearÚmonthÚdayr�   r�   re   r8   r9   r/   )r1   Z
date_inputr;   Útupr’   r   r   r   Útest_encode_date_conversionb  s    
z.TestUltraJSONTests.test_encode_date_conversionÚtestr&   r)   r*   r[   é   r#   éË< c                 C   s*   t  |¡}d| ¡ › d�}||ks&J ‚d S )Nú"©r-   r.   Ú	isoformat©r1   rš   r;   r’   r   r   r   Ú!test_encode_time_conversion_basicl  s    
z4TestUltraJSONTests.test_encode_time_conversion_basicc                 C   s>   t  ddddtj¡}t |¡}d| ¡ › d�}||ks:J ‚d S ©Nr[   r›   r#   rœ   r�   )rŒ   rŽ   ÚpytzÚutcr-   r.   rŸ   r    r   r   r   Ú test_encode_time_conversion_pytzu  s    
z3TestUltraJSONTests.test_encode_time_conversion_pytzc                 C   sB   t  ddddtj ¡ ¡}t |¡}d| ¡ › d�}||ks>J ‚d S r¢   )rŒ   rŽ   ÚdateutilÚtzZtzutcr-   r.   rŸ   r    r   r   r   Ú$test_encode_time_conversion_dateutil|  s    
z7TestUltraJSONTests.test_encode_time_conversion_dateutilÚdecoded_inputr   c                 C   s   t  |¡dksJ dƒ‚d S )NÚnullzExpected nullrV   )r1   r©   r   r   r   Útest_encode_as_nullƒ  s    z&TestUltraJSONTests.test_encode_as_nullc              	   C   sü   t   ddddddd¡}t|ƒ d¡}t tj|dd	�¡}||jd
 ksJJ ‚t tj|dd	�¡}||jd kspJ ‚t tj|dd	�¡}||jd ks–J ‚t tj|dd	�¡}||jks¸J ‚d}tjt	|d�� tj|dd	� W d   ƒ n1 sî0    Y  d S )NéÝ  é   é   é   r›   iÐI Únsr‰   rŠ   i Êš;Úmsi@B Úuséè  z*Invalid value 'foo' for option 'date_unit'rb   Úfoo)
rŒ   r
   Zas_unitr-   r/   r.   Ú_valuerh   ri   rf   )r1   ÚvalZstampZ	roundtriprk   r   r   r   Útest_datetime_units‰  s    z&TestUltraJSONTests.test_datetime_unitsc                 C   sH   d}t j|dd�}t  |¡}|tj|dd�ks2J ‚|t |¡ksDJ ‚d S )Nro   F)r6   rp   )r1   Ú	unencodedrr   rs   r   r   r   Útest_encode_to_utf8�  s
    
z&TestUltraJSONTests.test_encode_to_utf8c                 C   s,   d}t  |¡}t  t|ƒ¡}||ks(J ‚d S )Nz{"obj": 31337}©r-   r/   r   )r1   rn   Zdec1Zdec2r   r   r   Útest_decode_from_unicode¦  s    
z+TestUltraJSONTests.test_decode_from_unicodec                 C   sn   G dd„ dƒ}G dd„ dƒ}|ƒ }|ƒ |_ ||j _ tjtdd�� t |¡ W d   ƒ n1 s`0    Y  d S )Nc                   @   s   e Zd ZdZdS )z8TestUltraJSONTests.test_encode_recursion_max.<locals>.O2r   N©Ú__name__Ú
__module__Ú__qualname__Úmemberr   r   r   r   ÚO2±  s   rÁ   c                   @   s   e Zd ZdZdS )z8TestUltraJSONTests.test_encode_recursion_max.<locals>.O1r   Nr¼   r   r   r   r   ÚO1´  s   rÂ   úMaximum recursion level reachedrb   )rÀ   rh   ri   ÚOverflowErrorr-   r.   )r1   rÁ   rÂ   r©   r   r   r   Útest_encode_recursion_max®  s    z,TestUltraJSONTests.test_encode_recursion_maxc                 C   sD   d}d}t jt|d�� t |¡ W d   ƒ n1 s60    Y  d S )Nzfdsa sda v9sa fdsaz0Unexpected character found when decoding 'false'rb   ©rh   ri   rf   r-   r/   )r1   Z	jibberishrk   r   r   r   Útest_decode_jibberish¾  s    z(TestUltraJSONTests.test_decode_jibberishÚbroken_json)ú[Ú{ú]Ú}c                 C   s@   d}t jt|d�� t |¡ W d   ƒ n1 s20    Y  d S )NzExpected object or valuerb   rÆ   )r1   rÈ   rk   r   r   r   Útest_decode_broken_jsonÄ  s    
z*TestUltraJSONTests.test_decode_broken_jsonÚtoo_big_charrÉ   rÊ   c                 C   s@   t jtdd�� t |d ¡ W d   ƒ n1 s20    Y  d S )Nz#Reached object decoding depth limitrb   i   rÆ   )r1   rÎ   r   r   r   Útest_decode_depth_too_bigÒ  s    z,TestUltraJSONTests.test_decode_depth_too_bigÚ
bad_string)z"TESTINGz
"TESTING\"ZtruÚfaÚnc                 C   s@   d}t jt|d�� t |¡ W d   ƒ n1 s20    Y  d S )NzSUnexpected character found when decoding|Unmatched ''"' when when decoding 'string'rb   rÆ   )r1   rÐ   rk   r   r   r   Útest_decode_bad_string×  s    ÿz)TestUltraJSONTests.test_decode_bad_stringzbroken_json, err_msg))z{{1337:""}}z:Key name of object must be 'string' when decoding 'object')z
{{"key":"}z*Unmatched ''"' when when decoding 'string')z[[[truez8Unexpected character found when decoding array value (2)c              	   C   sP   t dƒD ]B}tjtt |¡d�� t |¡ W d   ƒ q1 s@0    Y  qd S )Nr³   rb   )Úrangerh   ri   rf   ÚreÚescaper-   r/   )r1   rÈ   Úerr_msgÚ_r   r   r   Útest_decode_broken_json_leaké  s    z/TestUltraJSONTests.test_decode_broken_json_leakÚinvalid_dict)z{{{{31337}}}}z{{{{"key":}}}}z{{{{"key"}}}}c                 C   s@   d}t jt|d�� t |¡ W d   ƒ n1 s20    Y  d S )Nz{Key name of object must be 'string' when decoding 'object'|No ':' found when decoding object value|Expected object or valuerb   rÆ   )r1   rÚ   rk   r   r   r   Útest_decode_invalid_dictù  s    
ÿz+TestUltraJSONTests.test_decode_invalid_dictÚnumeric_int_as_strZ31337z-31337c                 C   s   t |ƒt |¡ksJ ‚d S r   )re   r-   r/   )r1   rÜ   r   r   r   Útest_decode_numeric_int
  s    z*TestUltraJSONTests.test_decode_numeric_intc                 C   sž   d}t  |¡}|t |¡ks J ‚|t |¡ks2J ‚|t  |¡ksDJ ‚d}t  |¡}|t |¡ksdJ ‚|t |¡ksvJ ‚|t  |¡ksˆJ ‚dt  d¡ksšJ ‚d S )Nz31337   1337ú z"  \u0000\r\n "z   
 r~   )r1   Úwrapped_inputr;   Zalone_inputr   r   r   Útest_encode_null_character  s    

z-TestUltraJSONTests.test_encode_null_characterc                 C   s    d}t  |¡t |¡ksJ ‚d S )Nz"31337 \u0000 31337"©r-   r/   r8   r9   )r1   rß   r   r   r   Útest_decode_null_character   s    z-TestUltraJSONTests.test_decode_null_characterc                 C   s:   g d¢}t  |¡}|t |¡ks$J ‚|t  |¡ks6J ‚d S )N)ì   ÿÿÿÿ rã   rã   rã   rã   rã   r7   ©r1   Ú
long_inputr;   r   r   r   Ú test_encode_list_long_conversion$  s    
z3TestUltraJSONTests.test_encode_list_long_conversionrå   rã   l   ÿÿÿÿ c                 C   sD   t  |¡}|t |¡ksJ ‚|t |¡ks.J ‚|t  |¡ks@J ‚d S r   r~   rä   r   r   r   Útest_encode_long_conversion2  s    
z.TestUltraJSONTests.test_encode_long_conversionÚbigNumì            ìûÿÿÿ        c                 C   s^   t  |¡}t|ƒ|ksJ ‚tjtdd��" t  |¡|ks<J ‚W d   ƒ n1 sP0    Y  d S ©Nz#Value is too big|Value is too smallrb   )r-   r.   r   rh   ri   rf   r/   )r1   rè   Úencodingr   r   r   Ú#test_dumps_ints_larger_than_maxsize:  s    
þz6TestUltraJSONTests.test_dumps_ints_larger_than_maxsizeÚint_exp)Z1337E40z1.337E40z1337E+9z	1.337e+40z1.337E-4c                 C   s   t  |¡t |¡ksJ ‚d S r   rá   )r1   rî   r   r   r   Útest_decode_numeric_int_expE  s    z.TestUltraJSONTests.test_decode_numeric_int_expc                 C   s@   d}t jt|d�� t d ¡ W d   ƒ n1 s20    Y  d S )Nz/a bytes-like object is required, not 'NoneType'rb   )rh   ri   rg   r-   r/   ©r1   rk   r   r   r   Útest_loads_non_str_bytes_raisesK  s    z2TestUltraJSONTests.test_loads_non_str_bytes_raisesr¶   )l   £Mö+ l        l        l   ÿÿ c                 C   s&   d|› d�}t  |¡d |ks"J ‚d S )Nz{"id": rÌ   Úid©r-   r/   )r1   r¶   Údocr   r   r   Ú&test_decode_number_with_32bit_sign_bitP  s    z9TestUltraJSONTests.test_decode_number_with_32bit_sign_bitc                 C   s4   t dƒD ]&}d ¡ }|d d d }t |¡ qd S )Nr[   õ   Ã¥é   r)   )rÔ   Úencoder-   r.   )r1   rØ   ÚbaseÚescape_inputr   r   r   Útest_encode_big_escapeW  s    z)TestUltraJSONTests.test_encode_big_escapec                 C   s@   t dƒD ]2}d ¡ }d}||d d d  | }t |¡ qd S )Nr[   rö   ó   "r÷   r)   )rÔ   rø   r-   r/   )r1   rØ   rù   Úquoterú   r   r   r   Útest_decode_big_escape^  s
    z)TestUltraJSONTests.test_decode_big_escapec                    sD   ddi‰ G ‡ fdd„dƒ}|ƒ }t  |¡}t  |¡}|ˆ ks@J ‚d S )NÚkeyr�   c                       s   e Zd Z‡ fdd„ZdS )z1TestUltraJSONTests.test_to_dict.<locals>.DictTestc                    s   ˆ S r   r   ©r1   r   r   r   ÚtoDictk  s    z8TestUltraJSONTests.test_to_dict.<locals>.DictTest.toDictN)r½   r¾   r¿   r  r   r   r   r   ÚDictTestj  s   r  rB   )r1   r  Úor;   rs   r   r   r   Útest_to_dictg  s    

zTestUltraJSONTests.test_to_dictc              	      s€  G ‡ fdd„dƒ‰ d}t jt|d�� t ˆ dƒ¡ W d   ƒ n1 sH0    Y  dtjˆ dƒtd�kslJ ‚dd	„ }d
tjˆ dƒ|d�ksŽJ ‚dd„ }t jtdd��" tjˆ dƒ|d� W d   ƒ n1 sÌ0    Y  dd„ }t tjˆ dƒ|d�¡dksþJ ‚dd„ }t t t ddd¡¡¡t tjˆ dƒ|d�¡k�s>J ‚ˆ dƒˆ dƒg}t	 
t	j|td�¡t tj|td�¡k�s|J ‚d S )Nc                       s8   e Zd Zddœdd„Ze‡ fdd„ƒZedœdd„ZdS )	z<TestUltraJSONTests.test_default_handler.<locals>._TestObjectN©Úreturnc                 S   s
   || _ d S r   )r¶   )r1   r¶   r   r   r   Ú__init__v  s    zETestUltraJSONTests.test_default_handler.<locals>._TestObject.__init__c                    s   ˆ dƒS )NÚrecursive_attrr   r   ©Ú_TestObjectr   r   r  y  s    zKTestUltraJSONTests.test_default_handler.<locals>._TestObject.recursive_attrc                 S   s
   t | jƒS r   )r   r¶   r   r   r   r   Ú__str__}  s    zDTestUltraJSONTests.test_default_handler.<locals>._TestObject.__str__)r½   r¾   r¿   r  Úpropertyr  r   r  r   r	  r   r   r
  u  s   r
  rÃ   rb   r´   z"foo")Zdefault_handlerc                 S   s   dS )NZfoobarr   ©rØ   r   r   r   Ú
my_handler…  s    z;TestUltraJSONTests.test_default_handler.<locals>.my_handlerz"foobar"c                 S   s   t dƒ‚d S )NúI raise for anything)rg   r  r   r   r   Úmy_handler_raisesŒ  s    zBTestUltraJSONTests.test_default_handler.<locals>.my_handler_raisesr  c                 S   s   dS )Né*   r   r  r   r   r   Úmy_int_handler’  s    z?TestUltraJSONTests.test_default_handler.<locals>.my_int_handlerr  c                 S   s   t   ddd¡S )Nr¬   r)   r*   )rŒ   r  r   r   r   Úmy_obj_handlerœ  s    z?TestUltraJSONTests.test_default_handler.<locals>.my_obj_handlerr¬   r)   r*   Úbar)Údefault)rh   ri   rÄ   r-   r.   r   rg   r/   rŒ   r8   r9   rq   )r1   rk   r  r  r  r  Zobj_listr   r	  r   Útest_default_handlert  s>    ,ÿ0ÿýÿÿÿþ
ÿz'TestUltraJSONTests.test_default_handlerc                 C   sB   G dd„ dƒ}|ddddd�}t  t  |¡¡ddddœks>J ‚d S )	Nc                   @   s"   e Zd Zddœdd„Zdd„ ZdS )z:TestUltraJSONTests.test_encode_object.<locals>._TestObjectNr  c                 S   s   || _ || _|| _|| _d S r   ©rA   ÚbÚ_cr   )r1   rA   r  r  r   r   r   r   r  ¬  s    zCTestUltraJSONTests.test_encode_object.<locals>._TestObject.__init__c                 S   s   dS rR   r   r   r   r   r   Úe²  s    z<TestUltraJSONTests.test_encode_object.<locals>._TestObject.e)r½   r¾   r¿   r  r  r   r   r   r   r
  «  s   r
  r&   r)   r*   r„   r  )rA   r  r   rO   )r1   r
  Ztest_objectr   r   r   Útest_encode_objectª  s    ýz%TestUltraJSONTests.test_encode_objectc                 C   s   t jdksJ ‚d S )Nzpandas._libs.json)r-   r½   r   r   r   r   Útest_ujson__name__½  s    z%TestUltraJSONTests.test_ujson__name__N)Ir½   r¾   r¿   rh   ÚmarkZskipifr   r5   Úparametrizer?   rC   rH   rI   rL   rP   ÚmathÚpirU   rW   rY   r\   r^   rl   rm   rt   rv   rw   ry   rz   r}   r   rƒ   r…   r†   rˆ   r“   r™   rŒ   rŽ   r¡   r¥   r¨   r   rJ   Z
datetime64ÚnanÚinfr«   r·   r¹   r»   rÅ   rÇ   rÍ   rÏ   rÓ   rÙ   rÛ   rÝ   rà   râ   ræ   rç   rí   rï   rñ   rõ   rû   rþ   r  r  r  r  r   r   r   r   r!   7   sÞ   
7
ÿ


ÿ
þ	
þ
		þ


"þ
ÿ
	þ	

þ

þ
þ
	ÿ



ÿ

	6r!   c                   @   s    e Zd Zej dddg¡dd„ ƒZdd„ Zdd	„ Zd
d„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zej dg d¢¡dd„ ƒZdd„ Zdd„ Zdd„ Zd d!„ Zd"S )#ÚTestNumpyJSONTestsÚ
bool_inputTFc                 C   s$   t |ƒ}t t |¡¡|ks J ‚d S r   )Úboolr-   r/   r.   )r1   r$  r  r   r   r   Ú	test_boolÃ  s    zTestNumpyJSONTests.test_boolc                 C   s<   t jg d¢td�}t jt t |¡¡td�}t ||¡ d S )N)TFTTFTFF©Údtype)rJ   Úarrayr%  r-   r/   r.   rG   Úassert_numpy_array_equal)r1   Z
bool_arrayr;   r   r   r   Útest_bool_arrayÈ  s
    ÿz"TestNumpyJSONTests.test_bool_arrayc                 C   s4   t  |¡j}|dƒ}|t t |¡¡ƒ|ks0J ‚d S )Nr&   ©rJ   r(  Útyper-   r/   r.   ©r1   Úany_int_numpy_dtypeÚklassrK   r   r   r   Útest_intÏ  s    zTestNumpyJSONTests.test_intc                 C   sB   t jdtd�}| |¡}t jt t |¡¡|d�}t 	||¡ d S )Néd   r'  )
rJ   Úarangere   Úastyper)  r-   r/   r.   rG   r*  )r1   r/  ÚarrZ	arr_inputZ
arr_outputr   r   r   Útest_int_arrayÕ  s    
ÿz!TestNumpyJSONTests.test_int_arrayc                 C   sd   |dv rt st d¡ t |¡j}|dkr8t d¡j}nt |¡j}|t 	t 
|¡¡ƒ|ks`J ‚d S )N)Úint64Úuint64z-Cannot test 64-bit integer on 32-bit platformr8  r7  )r   rh   ÚskiprJ   r(  r-  ZiinfoÚmaxr-   r/   r.   r.  r   r   r   Útest_int_maxÞ  s    
zTestNumpyJSONTests.test_int_maxc                 C   s4   t  |¡j}|dƒ}|t t |¡¡ƒ|ks0J ‚d S )NgõJY†8p@r,  ©r1   Úfloat_numpy_dtyper0  rK   r   r   r   Ú
test_floatí  s    zTestNumpyJSONTests.test_floatc                 C   sJ   t jdddtd�}| |¡}t jt tj|dd�¡|d�}t 	||¡ d S )Ng      )@g×£p=
7g@geâX·û?r'  r#   r$   )
rJ   r3  Úfloatr4  r)  r-   r/   r.   rG   Úassert_almost_equal)r1   r=  r5  Zfloat_inputZfloat_outputr   r   r   Útest_float_arrayó  s    
þz#TestNumpyJSONTests.test_float_arrayc              	   C   sD   t  |¡j}|t  |¡jd ƒ}t |t tj	|dd�¡ƒ|¡ d S )Nr[   r#   r$   )
rJ   r(  r-  Zfinfor:  rG   r@  r-   r/   r.   r<  r   r   r   Útest_float_maxý  s
    ÿz!TestNumpyJSONTests.test_float_maxc              	   C   s6   t  d¡}| d¡}t t  t t |¡¡¡|¡ d S )Né`   )r)   r)   r)   r)   r*   r)   ©	rJ   r3  ÚreshaperG   r*  r)  r-   r/   r.   ©r1   r5  r   r   r   Útest_array_basic  s
    

ÿz#TestNumpyJSONTests.test_array_basicÚshape))r[   r[   ©rS   rS   r„   )r2  r&   c              	   C   s6   t  d¡}| |¡}t t  t t |¡¡¡|¡ d S )Nr2  rD  )r1   rH  r5  r   r   r   Útest_array_reshaped  s
    

ÿz&TestNumpyJSONTests.test_array_reshapedc              
   C   sV   dg i i g ddddgddig	}t j|td�}t jt t |¡¡td�}t ||¡ d S )NrA   r  g33333sX@r  rÿ   r¶   r'  )rJ   r)  Úobjectr-   r/   r.   rG   r*  )r1   Zarr_listr5  Úresultr   r   r   Útest_array_list  s    ÷z"TestNumpyJSONTests.test_array_listc                 C   sL   t j}t jddd|d�}| d¡}t jt t |¡¡|d�}t 	||¡ d S )Ng°rh‘íY@gX9´Èvi@r&   r'  rI  )
rJ   Zfloat32r3  rE  r)  r-   r/   r.   rG   r@  )r1   r(  r5  Zarr_outr   r   r   Útest_array_float&  s
    
z#TestNumpyJSONTests.test_array_floatc                 C   sL   t  d¡}tjt|d��  t t d¡¡ W d   ƒ n1 s>0    Y  d S )Nz>array(1) (numpy-scalar) is not JSON serializable at the momentrb   r&   )	rÕ   rÖ   rh   ri   rg   r-   r.   rJ   r)  rð   r   r   r   Útest_0d_array/  s
    ÿz TestNumpyJSONTests.test_0d_arrayc                 C   sL   t  d¡}tjt|d��  t t d¡¡ W d   ƒ n1 s>0    Y  d S )Nz@1234.5.* \(numpy-scalar\) is not JSON serializable at the momentrb   g     J“@)	rÕ   Úcompilerh   ri   rg   r-   r.   rJ   Z
longdoublerð   r   r   r   Útest_array_long_double7  s
    ÿz)TestNumpyJSONTests.test_array_long_doubleN)r½   r¾   r¿   rh   r  r  r&  r+  r1  r6  r;  r>  rA  rB  rG  rJ  rM  rN  rO  rQ  r   r   r   r   r#  Â  s    
	

	r#  c                   @   s–  e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Ze	j
 dg d¢¡dd„ ƒZe	j
 dg dgg¡dd„ ƒZe	j
 dddg¡dd„ ƒZe	j
 dd› d› g¡dd„ ƒZdd „ Zd!d"„ Ze	j
 d#d› d› g¡d$d%„ ƒZe	j
 d&g d'¢¡e	j
 d(d)d*g¡d+d,„ ƒƒZd-d.„ Zd/d0„ Zd1d2„ Ze	j
 d3ed4d5�ed)d5�ed6d7d7d8�ed6d9d:d8�ed)d7d;�ed*d<�ed*d*d=�ed*d*d*d>�ed?d?d?d>�g	¡d@dA„ ƒZdBdC„ ZdDS )EÚTestPandasJSONTestsc                 C   s  t j}tg d¢g d¢gddgg d¢|d�}|d u r6i nd|i}|j|k ¡ sPJ ‚t tj|fi |¤Ž¡}|j|k ¡ szJ ‚|dkršt|ƒ}tf i |¤Ž}nt|ƒ}|d	krÀg d
¢|_	ddg|_
n$|dkrÔddg|_
n|dkrä| ¡ }|j|k ¡ söJ ‚t ||¡ d S )N©r&   r)   r*   ©r„   rS   é   rA   r  ©ÚxÚyÚz)r   Úcolumnsr(  r    r   r   )r   r&   r)   r   r&   r   r   )rJ   r7  r   ZdtypesÚallr-   r/   r.   r   rZ  r   Z	transposerG   Zassert_frame_equal)r1   r    r(  Údfr:   r;   rs   r   r   r   Útest_dataframe@  s0    ü
z"TestPandasJSONTests.test_dataframec                 C   sš   t g d¢g d¢gddgg d¢d�}|| ¡ dœ}|d u r<i nd|i}t tj|fi |¤Ž¡t tj|fi |¤Ž¡dœ}t tj|fi |¤Ž¡|ks–J ‚d S )	NrS  rT  rA   r  rV  )r   rZ  )Zdf1Zdf2r    )r   Úcopyr-   r/   r.   )r1   r    r\  ÚnestedÚkwargsÚexpr   r   r   Útest_dataframe_nestedb  s    ÿþz)TestPandasJSONTests.test_dataframe_nestedc                 C   sê   t j}tg d¢dg d¢|d� ¡ }|j|ks0J ‚|d u r<i nd|i}t tj|fi |¤Ž¡}|j|ksjJ ‚|dkrŠt|ƒ}tf i |¤Ž}nt|ƒ}|dv r´d |_	| ¡ }g d¢|_
n|d	v rÌd |_	g d
¢|_
|j|ksÚJ ‚t ||¡ d S )N©r[   rX   é   é(   é2   é<   Úseries©rU  é   r­   r]   r[   r#   )Únamer   r(  r    r   )Nr   )Ú6Ú7Ú8ra   Ú10Z15)r   r   )r   r&   r)   r*   r„   rS   )rJ   r7  r   Úsort_valuesr(  r-   r/   r.   r   rk  r   rG   Úassert_series_equal)r1   r    r(  r‰   r:   r;   rs   r   r   r   Útest_seriesp  s0    ü

zTestPandasJSONTests.test_seriesc                 C   s’   t g d¢dg d¢d� ¡ }|| ¡ dœ}|d u r4i nd|i}t tj|fi |¤Ž¡t tj|fi |¤Ž¡dœ}t tj|fi |¤Ž¡|ksŽJ ‚d S )Nrc  rh  ri  )rk  r   )Ús1Ús2r    )r   rp  r^  r-   r/   r.   )r1   r    r‰   r_  r`  ra  r   r   r   Útest_series_nested�  s    ÿ
þz&TestPandasJSONTests.test_series_nestedc                 C   s  t g d¢dd�}t t t |¡¡dd�}t ||¡ tt tj|dd�¡ƒ}t f i |¤Ž}t ||¡ |j|jksvJ ‚t ||¡ |j|jks’J ‚t t tj|dd�¡dd�}t ||¡ t t tj|dd�¡dd�}t ||¡ t t tj|dd�¡dd�}t ||¡ d S )N)é   é-   é   éb   é+   é   r   )rk  r   )r    r   r   )r   r-   r/   r.   rG   Úassert_index_equalr   rk  )r1   Úir;   rs   r   r   r   Ú
test_index�  s*    ÿÿÿzTestPandasJSONTests.test_indexc                 C   sª   d}t ttddd�ƒd d�}tj||d�}t t t |¡¡ƒ}t 	||¡ t
tj d¡ t|ƒ¡|d�}t
t tj||d�¡ƒ}|jj tj¡}t |ƒ|_t ||¡ d S )	Nr°   z1/1/2000rX   )Zperiods©ÚfreqrŠ   r)   ©r   )r   Úlistr   r-   r.   rJ   r)  r/   rG   r|  r   ÚrandomZdefault_rngZstandard_normalÚlenr   r   r4  r7  rq  )r1   r‹   Úrngr3   r4   ÚtsZ
idx_valuesr   r   r   Útest_datetime_index¼  s    
z'TestPandasJSONTests.test_datetime_indexÚinvalid_arr)z[31337,]z[,31337]z[]]z[,]c                 C   s@   d}t jt|d�� t |¡ W d   ƒ n1 s20    Y  d S )Nz[Expected object or value|Trailing data|Unexpected character found when decoding array valuerb   rÆ   )r1   rˆ  rk   r   r   r   Útest_decode_invalid_arrayÍ  s    ÿz-TestPandasJSONTests.test_decode_invalid_arrayr5  r�   c                 C   s   |t  t|ƒ¡ksJ ‚d S r   rº   rF  r   r   r   Útest_decode_arrayÞ  s    z%TestPandasJSONTests.test_decode_arrayÚextreme_numrã   r‚   c                 C   s   |t  t|ƒ¡ksJ ‚d S r   rº   )r1   r‹  r   r   r   Útest_decode_extreme_numbersâ  s    z/TestPandasJSONTests.test_decode_extreme_numbersÚtoo_extreme_numré   rê   c                 C   s<   t jtdd�� t |¡ W d   ƒ n1 s.0    Y  d S rë   rÆ   )r1   r�  r   r   r   Útest_decode_too_extreme_numbersæ  s
    þz3TestPandasJSONTests.test_decode_too_extreme_numbersc                 C   s   i t  d¡ksJ ‚d S )Nz{}
	 ró   r   r   r   r   Ú%test_decode_with_trailing_whitespacesî  s    z9TestPandasJSONTests.test_decode_with_trailing_whitespacesc                 C   s<   t jtdd�� t d¡ W d   ƒ n1 s.0    Y  d S )NzTrailing datarb   z{}
	 arÆ   r   r   r   r   Ú)test_decode_with_trailing_non_whitespacesñ  s    z=TestPandasJSONTests.test_decode_with_trailing_non_whitespacesÚvaluec                 C   s<   t jtdd�� t |¡ W d   ƒ n1 s.0    Y  d S rë   rÆ   )r1   r‘  r   r   r   Útest_decode_array_with_big_intõ  s
    þz2TestPandasJSONTests.test_decode_array_with_big_intÚfloat_number)	gÞ3ˆÓ­ùñ?gªRCÊÀó?g¨B4¡æ‡õ?gŽš
LO÷?g‰	jøù?g[_$´åÜú?gŒ¹k	ù ü?g}?5^ºIþ?gÍÌÌÌÌÌô?Úsignr`   r&   c                 C   s&   ||9 }t j|t t|ƒ¡dd� d S )NgVçž¯Ò<)Zrtol)rG   r@  r-   r/   r   )r1   r”  r“  r   r   r   Útest_decode_floating_pointý  s    ÿz.TestPandasJSONTests.test_decode_floating_pointc                 C   s,   t ƒ }tdƒD ]}| |¡ qt |¡ d S )Ni † )ÚsetrÔ   Úaddr-   r.   )r1   r‰   rW  r   r   r   Útest_encode_big_set  s    z'TestPandasJSONTests.test_encode_big_setc                 C   s   dt  tƒ ¡ksJ ‚d S )Nz[])r-   r.   r–  r   r   r   r   Útest_encode_empty_set  s    z)TestPandasJSONTests.test_encode_empty_setc                 C   s6   h d£}t  |¡}t  |¡}|D ]}||v s J ‚q d S )N>	   r&   r)   r*   r„   rS   rU  rj  r­   r]   rB   )r1   r‰   rr   rs   r   r   r   r   Útest_encode_set  s
    

z#TestPandasJSONTests.test_encode_setÚtdin  )Údaysé   rS   )ÚhoursÚminutesÚsecondsrX   rd  )rœ  Únanoseconds)r¡  )Úmicrosecondsr¡  )Zmillisecondsr¢  r¡  iç  c                 C   s.   t j|dd�}d| ¡ › d�}||ks*J ‚d S )NT)Z	iso_datesr�   rž   )r1   r›  rL  r’   r   r   r   Útest_encode_timedelta_iso&  s    z-TestPandasJSONTests.test_encode_timedelta_isoc                 C   s.   t ddgdd�}t|d�}| ¡ dks*J ‚d S )Nz
2022-04-06z
2022-04-07ÚDr  r�  z{})r   r   Úto_json)r1   Úpr\  r   r   r   Útest_encode_periodindex;  s    
z+TestPandasJSONTests.test_encode_periodindexN)r½   r¾   r¿   r]  rb  rr  ru  r~  r‡  rh   r  r  r‰  rŠ  rŒ  rŽ  r�  r�  r’  r•  r˜  r™  rš  r	   r£  r§  r   r   r   r   rR  ?  sZ   " þ	




þ	

÷þ
rR  )%r�   rŒ   r+   r8   rE   r  rÕ   rŽ   r¦   ÚnumpyrJ   rh   r£   Zpandas._libs.jsonZ_libsr-   Zpandas.compatr   Zpandasr   r   r   r   r   r   r	   r
   r   Zpandas._testingZ_testingrG   r   Zfixturer    r!   r#  rR  r   r   r   r   Ú<module>   s8   ,ÿ
     }