o
    թZhH                     @   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   V/var/www/html/lang_env/lib/python3.10/site-packages/pandas/tests/io/json/test_ujson.py
<dictcomp>-   s    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:dd Z;dd Z<dd Z=ejdddgdd Z>ejdddgdd Z?ejdg ddd Z@dd ZAejdg ddd ZBdd ZCdd ZDdd ZEdd ZFdd ZGdd ZHdS )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s)J t|}|dks4J t d	}tj|dd}|d
ksFJ t|}|dksQJ t d}tj|dd}|dkscJ t|}|dksnJ t d}tj|dd}|dksJ t|}|dksJ t d}tj|dd}|dksJ t|}|dksJ t d}tj|dd}|dksJ t|}|dksJ t d}tj|dd}|dksJ t|}|dksJ 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sJ t |ks#J d S )Nr5   r,   r-   jsonloadsr.   )Zexpected_outputencode_kwargsoutputr5   string_inputr   r   helperx   s   z@TestUltraJSONTests.test_encode_string_conversion.<locals>.helperF)Zencode_html_charsTr   )r0   r5   Znot_html_encodedZhtml_encodedr=   r   r;   r   test_encode_string_conversionp   s   
z0TestUltraJSONTests.test_encode_string_conversionlong_number)lZ:`7{ g#_tgԟpAc                 C   s0   d|i}t j|dd}t |}||ksJ d S )Nar"   r#   r,   r-   r.   )r0   r?   r1   r2   r3   r   r   r   test_double_long_numbers   s   
z+TestUltraJSONTests.test_double_long_numbersc              	   C   s   t j}dD ]:}t||r?t||! ttddks J tjddddks+J W d     d S 1 s7w   Y   d S q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-   )r0   Zlc_categoryZ
new_localer   r   r   test_encode_non_c_locale   s   
z+TestUltraJSONTests.test_encode_non_c_localec                 C   s0   ddi}t |}t j|dd}||ksJ d S )Nr@   g=
ףp=@TrC   rA   r/   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sJ d}|t t |ks*J d}t|t t |s:J d S )NgWw'&l7g0.++gj7֖g?>ӡ)r,   r.   r-   npZallclose)r0   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-   )r0   rL   Zunicode_dictr   r   r   "test_encode_dict_with_unicode_keys      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s#J d S N   )r,   r-   roundr7   r8   r.   )r0   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-   )r0   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   r6   )r0   Znested_inputr:   r   r   r   "test_encode_array_of_nested_arrays      
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@r[   r[   r[   
   r6   )r0   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sJ dD ] }t j||d}t||}|t|ks4J |t |ks=J qd S )Ng )>@r"   r#   )r)   	   )r,   r-   r7   r8   r.   rT   )r0   rQ   r:   r$   Zrounded_inputr   r   r   test_double_precision   s   
z(TestUltraJSONTests.test_double_precisioninvalid_val)rX   9Nc                 C   s\   d}t |tr	tnt}d}tj||d tj||d W d    d S 1 s'w   Y  d S )NgF7ݚ>@zInvalid 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-   )r0   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sJ |dksJ d S )NzA string \ /   
  	z"A string \\ \/ \b \f \n \r \t"r6   )r0   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sJ d S r   r,   r-   r.   r7   dumpsr8   )r0   ro   encdecr   r   r   test_encode_unicode_conversion   s   

z1TestUltraJSONTests.test_encode_unicode_conversionc                 C   s:   d}t |}t |}||ksJ |t|ksJ d S )N)r,   r-   r.   r7   rr   )r0   Zescaped_inputrs   rt   r   r   r   test_encode_control_escaping  s
   

z/TestUltraJSONTests.test_encode_control_escapingc                 C   @   d}t |}t |}|t|ksJ |t|ksJ d S )Nu   ðrq   )r0   Zsurrogate_inputrs   rt   r   r   r   "test_encode_unicode_surrogate_pair  
   

z5TestUltraJSONTests.test_encode_unicode_surrogate_pairc                 C   rx   )Nu   ð°TRAILINGNORMALrq   r0   Zfour_bytes_inputrs   rt   r   r   r   test_encode_unicode_4bytes_utf8  rz   z2TestUltraJSONTests.test_encode_unicode_4bytes_utf8c                 C   rx   )Nu   ó¿¿¿TRAILINGNORMALrq   r{   r   r   r   &test_encode_unicode_4bytes_utf8highest  s
   

z9TestUltraJSONTests.test_encode_unicode_4bytes_utf8highestc                 C   sH   d}d}t jt|d t|g W d    d S 1 sw   Y  d S )Nu   ''zT'utf-8' codec can't encode character '\\udac0' in position 1: surrogates not allowedrc   )ri   rj   UnicodeEncodeErrorr,   r-   )r0   stringrl   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sJ |t |ks%J d S r   r,   r-   r7   r8   rr   r.   )r0   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   D   t |}|t|ksJ |t|ksJ |t |ks J d S r   r   )r0   r   r:   r   r   r   test_encode_num_conversion7  s   
	z-TestUltraJSONTests.test_encode_num_conversionc                 C   :   g d}t |}|t|ksJ |t |ksJ d S )N)r%   r(   r)      r6   )r0   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k4r6   )r0   Z
dict_inputr:   r   r   r   test_encode_dict_conversionL  rZ   z.TestUltraJSONTests.test_encode_dict_conversionbuiltin_value)NTFc                 C   r   r   r   )r0   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s!J t|t|ks,J d S )Ns	date_unit)datetimefromtimestamptimer,   r-   calendartimegmutctimetuplerf   r7   r8   r.   )r0   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s*J t|t|ks5J d S )Nr   r   r   )r   dater   r   r,   r-   yearmonthdayr   r   rf   r7   r8   r.   )r0   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r0   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   )r0   r   r   r   r   test_encode_as_null     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s%J ttj|dd	}||jd ks8J ttj|dd	}||jd ksKJ ttj|dd	}||jks\J d}tjt	|d tj|dd	 W d    d S 1 sxw   Y  d S )N           r   iI nsr   r   i ʚ;msi@B us  z*Invalid value 'foo' for option 'date_unit'rc   foo)
r   r
   Zas_unitr,   r.   r-   _valueri   rj   rg   )r0   valZstampZ	roundtriprl   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sJ |t|ks"J d S )Nrp   F)r5   rq   )r0   	unencodedrs   rt   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   )r0   ro   Zdec1Zdec2r   r   r   test_decode_from_unicode  s   
z+TestUltraJSONTests.test_decode_from_unicodec                 C   sp   G dd d}G dd d}| }| |_ ||j _ tjtdd t| W d    d S 1 s1w   Y  d S )Nc                   @      e Zd ZdZdS )z8TestUltraJSONTests.test_encode_recursion_max.<locals>.O2r   N__name__
__module____qualname__memberr   r   r   r   O2      r   c                   @   r   )z8TestUltraJSONTests.test_encode_recursion_max.<locals>.O1r   Nr   r   r   r   r   O1  r   r   Maximum recursion level reachedrc   )r   ri   rj   OverflowErrorr,   r-   )r0   r   r   r   r   r   r   test_encode_recursion_max  s   "z,TestUltraJSONTests.test_encode_recursion_maxc                 C   sF   d}d}t jt|d t| W d    d S 1 sw   Y  d S )Nzfdsa sda v9sa fdsaz0Unexpected character found when decoding 'false'rc   ri   rj   rg   r,   r.   )r0   Z	jibberishrl   r   r   r   test_decode_jibberish  s
   "z(TestUltraJSONTests.test_decode_jibberishbroken_json)[{]}c                 C   B   d}t jt|d t| W d    d S 1 sw   Y  d S )NzExpected object or valuerc   r   )r0   r   rl   r   r   r   test_decode_broken_json  s   
"z*TestUltraJSONTests.test_decode_broken_jsontoo_big_charr   r   c                 C   sB   t jtdd t|d  W d    d S 1 sw   Y  d S )Nz#Reached object decoding depth limitrc   i   r   )r0   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   r   )NzSUnexpected character found when decoding|Unmatched ''"' when when decoding 'string'rc   r   )r0   r   rl   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 ]!}tjtt|d t| W d    n1 s w   Y  qd S )Nr   rc   )rangeri   rj   rg   reescaper,   r.   )r0   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   r   )Nz{Key name of object must be 'string' when decoding 'object'|No ':' found when decoding object value|Expected object or valuerc   r   )r0   r   rl   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   )rf   r,   r.   )r0   r   r   r   r   test_decode_numeric_int
  r   z*TestUltraJSONTests.test_decode_numeric_intc                 C   s   d}t |}|t|ksJ |t|ksJ |t |ks"J d}t |}|t|ks2J |t|ks;J |t |ksDJ dt dksMJ d S )Nz31337   1337 z"  \u0000\r\n "z   
 r   )r0   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.   r7   r8   )r0   r   r   r   r   test_decode_null_character   s   z-TestUltraJSONTests.test_decode_null_characterc                 C   r   )N)    r   r   r   r   r   r6   r0   
long_inputr:   r   r   r    test_encode_list_long_conversion$  s   
z3TestUltraJSONTests.test_encode_list_long_conversionr   r   l    c                 C   r   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    d S 1 s)w   Y  d S Nz#Value is too big|Value is too smallrc   )r,   r-   r   ri   rj   rg   r.   )r0   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   )r0   r   r   r   r   test_decode_numeric_int_expE  s   z.TestUltraJSONTests.test_decode_numeric_int_expc                 C   sB   d}t jt|d td  W d    d S 1 sw   Y  d S )Nz/a bytes-like object is required, not 'NoneType'rc   )ri   rj   rh   r,   r.   r0   rl   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.   )r0   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-   )r0   r   baseescape_inputr   r   r   test_encode_big_escapeW  s
   z)TestUltraJSONTests.test_encode_big_escapec                 C   s@   t dD ]}d }d}||d d d  | }t| qd S )Nr\   r      "r   r(   )r   r  r,   r.   )r0   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   r0   r   r   r   toDictk     z8TestUltraJSONTests.test_to_dict.<locals>.DictTest.toDictN)r   r   r   r
  r   r   r   r   DictTestj  s    r  rA   )r0   r  or:   rt   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 s$w   Y  dtj dtdks6J dd	 }d
tj d|dksGJ dd }t jtdd tj d|d W d    n1 sfw   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sJ  d dg}t	
t	j|tdttj|tdksJ d S )Nc                       s4   e Zd Zd	ddZe fddZdefddZdS )
z<TestUltraJSONTests.test_default_handler.<locals>._TestObjectreturnNc                 S   s
   || _ d S r   )r   )r0   r   r   r   r   __init__v     
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__}  r  zDTestUltraJSONTests.test_default_handler.<locals>._TestObject.__str__r  N)r   r   r   r  propertyr  r   r  r   r  r   r   r  u  s
    
r  r   rc   r   z"foo")Zdefault_handlerc                 S      dS )NZfoobarr   r   r   r   r   
my_handler  r  z;TestUltraJSONTests.test_default_handler.<locals>.my_handlerz"foobar"c                 S   s   t d)NI raise for anything)rh   r  r   r   r   my_handler_raises  s   zBTestUltraJSONTests.test_default_handler.<locals>.my_handler_raisesr  c                 S   r  )N*   r   r  r   r   r   my_int_handler  r  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)ri   rj   r   r,   r-   r   rh   r.   r   r7   r8   rr   )r0   rl   r  r  r  r  Zobj_listr   r  r   test_default_handlert  s@   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Zdd ZdS )z:TestUltraJSONTests.test_encode_object.<locals>._TestObjectr  Nc                 S   s   || _ || _|| _|| _d S r   r@   b_cr   )r0   r@   r$  r%  r   r   r   r   r    s   
zCTestUltraJSONTests.test_encode_object.<locals>._TestObject.__init__c                 S   r  rR   r   r	  r   r   r   e  r  z<TestUltraJSONTests.test_encode_object.<locals>._TestObject.er  )r   r   r   r  r&  r   r   r   r   r    s    
r  r%   r(   r)   r   r#  )r@   r$  r   rN   )r0   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   ri   markZskipifr   r4   parametrizer>   rB   rG   rH   rK   rO   mathpirU   rW   rY   r]   r_   rm   rn   ru   rw   ry   r|   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rI   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-   )r0   r0  r$  r   r   r   	test_bool  rP   zTestNumpyJSONTests.test_boolc                 C   s<   t jg dtd}t jtt|td}t|| d S )N)TFTTFTFFdtype)rI   arrayr1  r,   r.   r-   rF   assert_numpy_array_equal)r0   Z
bool_arrayr:   r   r   r   test_bool_array  s
   z"TestNumpyJSONTests.test_bool_arrayc                 C   4   t |j}|d}|tt||ksJ d S )Nr%   rI   r4  typer,   r.   r-   r0   any_int_numpy_dtypeklassrJ   r   r   r   test_int      zTestNumpyJSONTests.test_intc                 C   sB   t jdtd}||}t jtt||d}t	|| d S )Nd   r3  )
rI   arangerf   astyper5  r,   r.   r-   rF   r6  )r0   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rtdj}nt|j}|t	t
||ks0J d S )N)int64uint64z-Cannot test 64-bit integer on 32-bit platformrF  rE  )r   ri   skiprI   r4  r:  Ziinfomaxr,   r.   r-   r;  r   r   r   test_int_max  s   
 zTestNumpyJSONTests.test_int_maxc                 C   r8  )NgJY8p@r9  r0   float_numpy_dtyper=  rJ   r   r   r   
test_float  r?  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?r3  r"   r#   )
rI   rA  floatrB  r5  r,   r.   r-   rF   assert_almost_equal)r0   rK  rC  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#   )
rI   r4  r:  ZfinforH  rF   rN  r,   r.   r-   rJ  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(   	rI   rA  reshaperF   r6  r5  r,   r.   r-   r0   rC  r   r   r   test_array_basic  s
   

z#TestNumpyJSONTests.test_array_basicshape))r\   r\   rS   rS   r   )r@  r%   c              	   C   s6   t d}||}tt tt|| d S )Nr@  rR  )r0   rV  rC  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 )Nr@   r  g33333sX@r$  r  r   r3  )rI   r5  objectr,   r.   r-   rF   r6  )r0   Zarr_listrC  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 )NgrhY@gX9vi@r%   r3  rW  )
rI   Zfloat32rA  rS  r5  r,   r.   r-   rF   rN  )r0   r4  rC  Zarr_outr   r   r   test_array_float&  s
   
z#TestNumpyJSONTests.test_array_floatc                 C   N   t d}tjt|d ttd W d    d S 1 s w   Y  d S )Nz>array(1) (numpy-scalar) is not JSON serializable at the momentrc   r%   )	r   r   ri   rj   rh   r,   r-   rI   r5  r   r   r   r   test_0d_array/  s   "z TestNumpyJSONTests.test_0d_arrayc                 C   r]  )Nz@1234.5.* \(numpy-scalar\) is not JSON serializable at the momentrc   g     J@)	r   compileri   rj   rh   r,   r-   rI   Z
longdoubler   r   r   r   test_array_long_double7  s   "z)TestNumpyJSONTests.test_array_long_doubleN)r   r   r   ri   r)  r*  r2  r7  r>  rD  rI  rL  rO  rP  rU  rX  r[  r\  r^  r`  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 ri nd|i}|j|k s(J ttj|fi |}|j|k s=J |dkrMt|}tdi |}nt|}|d	kr`g d
|_	ddg|_
n|dkrjddg|_
n|dkrr| }|j|k s{J t|| d S )Nr%   r(   r)   r   rS      r@   r$  xyz)r   columnsr4  r   r   r   )r   r%   r(   r   r%   r   r   r   )rI   rE  r   Zdtypesallr,   r.   r-   r   ri  r   Z	transposerF   Zassert_frame_equal)r0   r   r4  dfr9   r:   rt   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sKJ d S )	Nrb  rc  r@   r$  re  )r   ri  )Zdf1Zdf2r   )r   copyr,   r.   r-   )r0   r   rk  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sJ |d u ri nd|i}ttj|fi |}|j|ks5J |dkrEt|}tdi |}nt|}|dv rZd |_	| }g d|_
n|d	v rfd |_	g d
|_
|j|ksmJ t|| d S )Nr\   rX      (   2   <   seriesrd     r   r^   r\   r"   )namer   r4  r   r   )Nr   )678rb   10Z15)r   r   )r   r%   r(   r)   r   rS   r   )rI   rE  r   sort_valuesr4  r,   r.   r-   r   rz  r   rF   assert_series_equal)r0   r   r4  r   r9   r:   rt   r   r   r   test_seriesp  s4   
zTestPandasJSONTests.test_seriesc                 C   s   t g dd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sGJ d S )Nrr  rw  rx  )rz  r   )s1s2r   )r   r  rm  r,   r.   r-   )r0   r   r   rn  ro  rp  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 di |}t|| |j|jks;J t|| |j|jksIJ 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   )rz  r   )r   r   r   r   )r   r,   r.   r-   rF   assert_index_equalr   rz  )r0   ir:   rt   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-   rI   r5  r.   rF   r  r   randomZdefault_rngZstandard_normallenr   r   rB  rE  r  )r0   r   rngr2   r3   tsZ
idx_valuesr   r   r   test_datetime_index  s   
z'TestPandasJSONTests.test_datetime_indexinvalid_arr)z[31337,]z[,31337]z[]]z[,]c                 C   r   )Nz[Expected object or value|Trailing data|Unexpected character found when decoding array valuerc   r   )r0   r  rl   r   r   r   test_decode_invalid_array  s
   "z-TestPandasJSONTests.test_decode_invalid_arrayrC  r   c                 C      |t t|ksJ d S r   r   rT  r   r   r   test_decode_array     z%TestPandasJSONTests.test_decode_arrayextreme_numr   r   c                 C   r  r   r   )r0   r  r   r   r   test_decode_extreme_numbers  r  z/TestPandasJSONTests.test_decode_extreme_numberstoo_extreme_numr   r   c                 C   >   t jtdd t| W d    d S 1 sw   Y  d S r   r   )r0   r  r   r   r   test_decode_too_extreme_numbers     "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    d S 1 sw   Y  d S )NzTrailing datarc   z{}
	 ar   r	  r   r   r   )test_decode_with_trailing_non_whitespaces  s   "z=TestPandasJSONTests.test_decode_with_trailing_non_whitespacesvaluec                 C   r  r   r   )r0   r  r   r   r   test_decode_array_with_big_int  r  z2TestPandasJSONTests.test_decode_array_with_big_intfloat_number)	g3ӭ?gRC?gB4?g
LO?g	j?g[_$?gk	?g}?5^I?g?signra   r%   c                 C   s&   ||9 }t j|tt|dd d S )NgV瞯<)Zrtol)rF   rN  r,   r.   r   )r0   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-   )r0   r   rf  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   rd  ry  r   r^   rA   )r0   r   rs   rt   r   r   r   r   test_encode_set  s   

z#TestPandasJSONTests.test_encode_settdin  )days   rS   )hoursminutessecondsrX   rs  )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   )r0   r  rZ  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)r0   prk  r   r   r   test_encode_periodindex;  s   
z+TestPandasJSONTests.test_encode_periodindexN)r   r   r   rl  rq  r  r  r  r  ri   r)  r*  r  r  r  r  r  r  r  r  r  r  r  r	   r  r  r   r   r   r   ra  ?  s\    " 
	



	


ra  )%r   r   r*   r7   rD   r+  r   r   r   numpyrI   ri   r   Zpandas._libs.jsonZ_libsr,   Zpandas.compatr   Zpandasr   r   r   r   r   r   r	   r
   r   Zpandas._testingZ_testingrF   r   Zfixturer   r    r/  ra  r   r   r   r   <module>   s:    ,
     }