o
    _~#gH                     @   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/static.ux5.de/https/Moving-Object-Detection-with-OpenCV/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.   )expected_outputencode_kwargsoutputr5   string_inputr   r   helperx   s   z@TestUltraJSONTests.test_encode_string_conversion.<locals>.helperF)encode_html_charsTr   )r0   r5   not_html_encoded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   rC   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-8Italian_ItalygˇLz4.78Tprecise_floatgQ@)locale
LC_NUMERICtmcan_set_locale
set_localer,   r.   r-   )r0   lc_category
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 )NrD   g=
ףp=@TrH   rE   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-   np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 )Nvalue1r,   r.   r-   )r0   rW   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   r^   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   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   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@rj   rj   rj   
   r6   )r0   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.   ra   )r0   r^   r;   r$   rounded_inputr   r   r   test_double_precision   s   
z(TestUltraJSONTests.test_double_precisioninvalid_val)rf   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   rq   r^   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   r   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   r   )r0   escaped_inputr   r   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   ðr   )r0   surrogate_inputr   r   r   r   r   "test_encode_unicode_surrogate_pair  
   

z5TestUltraJSONTests.test_encode_unicode_surrogate_pairc                 C   r   )Nu   ð°TRAILINGNORMALr   r0   four_bytes_inputr   r   r   r   r   test_encode_unicode_4bytes_utf8  r   z2TestUltraJSONTests.test_encode_unicode_4bytes_utf8c                 C   r   )Nu   ó¿¿¿TRAILINGNORMALr   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 allowedrt   )rz   r{   UnicodeEncodeErrorr,   r-   )r0   stringr}   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   r   r.   )r0   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   
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   )k1k2k3k4r6   )r0   
dict_inputr;   r   r   r   test_encode_dict_conversionL  ri   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utctimetuplerw   r7   r8   r.   )r0   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   rw   r7   r8   r.   )r0   
date_inputr;   tupr   r   r   r   test_encode_date_conversionb  s   
z.TestUltraJSONTests.test_encode_date_conversiontestr%   r(   r)   rk      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 Nrk   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tz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 nullrc   )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'rt   foo)
r   r
   as_unitr,   r.   r-   _valuerz   r{   rx   )r0   valstamp	roundtripr}   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 )Nr   F)r5   r   )r0   	unencodedr   r   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   r   dec1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 reachedrt   )r   rz   r{   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'rt   rz   r{   rx   r,   r.   )r0   	jibberishr}   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 valuert   r   )r0   r   r}   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 limitrt   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\"trufanc                 C   r   )NzSUnexpected character found when decoding|Unmatched ''"' when when decoding 'string'rt   r   )r0   r   r}   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   rt   )rangerz   r{   rx   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 valuert   r   )r0   r  r}   r   r   r   test_decode_invalid_dict  s
   
"z+TestUltraJSONTests.test_decode_invalid_dictnumeric_int_as_str31337z-31337c                 C   s   t |t|ksJ d S r   )rw   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;   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 smallrt   )r,   r-   r   rz   r{   rx   r.   )r0   r  encodingr   r   r   #test_dumps_ints_larger_than_maxsize:  s   
"z6TestUltraJSONTests.test_dumps_ints_larger_than_maxsizeint_exp)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'rt   )rz   r{   ry   r,   r.   r0   r}   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 )Nrk      å   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 )Nrk   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   r2  r   r   r   r   DictTestj  s    r4  rE   )r0   r4  or;   r   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   r1  _TestObjectr   r   r:  y  s   zKTestUltraJSONTests.test_default_handler.<locals>._TestObject.recursive_attrc                 S   s
   t | jS r   )r   r   r1  r   r   r   __str__}  r9  zDTestUltraJSONTests.test_default_handler.<locals>._TestObject.__str__r7  N)r   r   r   r8  propertyr:  r   r=  r   r;  r   r   r<  u  s
    
r<  r   rt   r   z"foo")default_handlerc                 S      dS )Nfoobarr   r  r   r   r   
my_handler  r3  z;TestUltraJSONTests.test_default_handler.<locals>.my_handlerz"foobar"c                 S   s   t d)NI raise for anything)ry   rC  r   r   r   my_handler_raises  s   zBTestUltraJSONTests.test_default_handler.<locals>.my_handler_raisesrE  c                 S   rA  )N*   r   rC  r   r   r   my_int_handler  r3  z?TestUltraJSONTests.test_default_handler.<locals>.my_int_handlerrG  c                 S   s   t  dddS )Nr   r(   r)   )r   rC  r   r   r   my_obj_handler  s   z?TestUltraJSONTests.test_default_handler.<locals>.my_obj_handlerr   r(   r)   bar)default)rz   r{   r   r,   r-   r   ry   r.   r   r7   r8   r   )r0   r}   rD  rF  rH  rI  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>._TestObjectr7  Nc                 S   s   || _ || _|| _|| _d S r   rD   b_cr   )r0   rD   rO  rP  r   r   r   r   r8    s   
zCTestUltraJSONTests.test_encode_object.<locals>._TestObject.__init__c                 S   rA  r_   r   r1  r   r   r   e  r3  z<TestUltraJSONTests.test_encode_object.<locals>._TestObject.er>  )r   r   r   r8  rQ  r   r   r   r   r<    s    
r<  r%   r(   r)   r   rN  )rD   rO  r   rZ   )r0   r<  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   r1  r   r   r   test_ujson__name__  s   z%TestUltraJSONTests.test_ujson__name__N)Ir   r   r   rz   markskipifr   r4   parametrizerB   rF   rQ   rR   rV   r\   mathpirb   re   rh   rm   rp   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rS   
datetime64naninfr   r   r   r   r   r   r   r   r  r  r	  r  r  r  r  r  r  r   r"  r&  r,  r/  r6  rM  rS  rT  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   r^  rO  r   r   r   	test_bool  r]   zTestNumpyJSONTests.test_boolc                 C   s<   t jg dtd}t jtt|td}t|| d S )N)TFTTFTFFdtype)rS   arrayr_  r,   r.   r-   rL   assert_numpy_array_equal)r0   
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%   rS   rb  typer,   r.   r-   r0   any_int_numpy_dtypeklassrU   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   ra  )
rS   arangerw   astyperc  r,   r.   r-   rL   rd  )r0   rk  arr	arr_input
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 platformrw  rv  )r   rz   skiprS   rb  ri  iinfomaxr,   r.   r-   rj  r   r   r   test_int_max  s   
 zTestNumpyJSONTests.test_int_maxc                 C   rg  )NgJY8p@rh  r0   float_numpy_dtyperl  rU   r   r   r   
test_float  rn  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?ra  r"   r#   )
rS   rp  floatrq  rc  r,   r.   r-   rL   assert_almost_equal)r0   r}  rr  float_input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 )Nrk   r"   r#   )
rS   rb  ri  finforz  rL   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(   	rS   rp  reshaperL   rd  rc  r,   r.   r-   r0   rr  r   r   r   test_array_basic  s
   

z#TestNumpyJSONTests.test_array_basicshape))rk   rk   r`   r`   r   )ro  r%   c              	   C   s6   t d}||}tt tt|| d S )Nro  r  )r0   r  rr  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 )NrD   rG  g33333sX@rO  r0  r   ra  )rS   rc  objectr,   r.   r-   rL   rd  )r0   arr_listrr  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%   ra  r  )
rS   float32rp  r  rc  r,   r.   r-   rL   r  )r0   rb  rr  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 momentrt   r%   )	r  r  rz   r{   ry   r,   r-   rS   rc  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 momentrt   g     J@)	r  compilerz   r{   ry   r,   r-   rS   
longdoubler!  r   r   r   test_array_long_double7  s   "z)TestNumpyJSONTests.test_array_long_doubleN)r   r   r   rz   rU  rW  r`  rf  rm  ru  r{  r~  r  r  r  r  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   r`      rD   rO  xyz)r   columnsrb  r   r   r   )r   r%   r(   r   r%   r   r   r   )rS   rv  r   dtypesallr,   r.   r-   r   r  r   	transposerL   assert_frame_equal)r0   r   rb  dfr:   r;   r   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 )	Nr  r  rD   rO  r  )r   r  )df1df2r   )r   copyr,   r.   r-   )r0   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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rk   rf      (   2   <   seriesr     r   rn   rk   r"   )namer   rb  r   r   )Nr   )678rs   1015)r   r   )r   r%   r(   r)   r   r`   r   )rS   rv  r   sort_valuesrb  r,   r.   r-   r   r  r   rL   assert_series_equal)r0   r   rb  r   r:   r;   r   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 )Nr  r  r  )r  r   )s1s2r   )r   r  r  r,   r.   r-   )r0   r   r   r  r  r  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   )r  r   )r   r   r   r   )r   r,   r.   r-   rL   assert_index_equalr   r  )r0   ir;   r   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/2000rf   )periodsfreqr   r(   r   )r   listr   r,   r-   rS   rc  r.   rL   r  r   randomdefault_rngstandard_normallenr   r   rq  rv  r  )r0   r   rngr2   r3   ts
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 valuert   r   )r0   r  r}   r   r   r   test_decode_invalid_array  s
   "z-TestPandasJSONTests.test_decode_invalid_arrayrr  r   c                 C      |t t|ksJ d S r   r   r  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$  r1  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 datart   z{}
	 ar   r1  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?signrr   r%   c                 C   s&   ||9 }t j|tt|dd d S )NgV瞯<)rtol)rL   r  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   r  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  r1  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   r`   r  r  r   rn   rE   )r0   r   r   r   r   r   r   r   test_encode_set  s   

z#TestPandasJSONTests.test_encode_settdin  )days   r`   )hoursminutessecondsrf   r  )r  nanoseconds)r  )microsecondsr  )millisecondsr  r  i  c                 C   s.   t j|dd}d|  d}||ksJ d S )NT)	iso_datesr   r   )r0   r  r  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   pr  r   r   r   test_encode_periodindex;  s   
z+TestPandasJSONTests.test_encode_periodindexN)r   r   r   r  r  r  r  r  r  rz   rU  rW  r  r  r  r  r  r  r  r  r  r  r  r	   r  r   r   r   r   r   r  ?  s\    " 
	



	


r  )%r   r   r*   r7   rJ   rX  r  r   r   numpyrS   rz   r   pandas._libs.json_libsr,   pandas.compatr   pandasr   r   r   r   r   r   r	   r
   r   pandas._testing_testingrL   r   fixturer   r    r]  r  r   r   r   r   <module>   s:    ,
     }