o
    d                     @   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   d/var/www/html/visualizacion-main/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                   @   st  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 ZGdS )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encodedecode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,   r8   dumps)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   rX   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@rk   rk   rk   
   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.   rb   )r0   r_   r;   r$   rounded_inputr   r   r   test_double_precision   s   
z(TestUltraJSONTests.test_double_precisioninvalid_val)rg   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   rr   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   rO   r8   )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   rO   )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 allowedru   )r{   r|   UnicodeEncodeErrorr,   rO   )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   rO   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  rj   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utctimetuplerx   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   rx   r7   r8   r.   )r0   
date_inputr;   tupr   r   r   r   test_encode_date_conversionb  s   
z.TestUltraJSONTests.test_encode_date_conversiontestr%   r(   r)   rl      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 Nrl   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 nullrd   )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'ru   foo)
r   r
   as_unitr,   r.   r-   _valuer{   r|   ry   )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 reachedru   )r   r{   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'ru   r{   r|   ry   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 valueru   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 limitru   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'ru   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   ru   )ranger{   r|   ry   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 valueru   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   )rx   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 smallru   )r,   r-   r   r{   r|   ry   r8   )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Expected 'str' or 'bytes'ru   )r{   r|   rz   r,   r8   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 )Nrl      å   r(   )r  r-   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 )Nrl   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   r1  r   r   r   r   DictTestj  s    r3  rE   )r0   r3  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   r0  _TestObjectr   r   r9  y  s   zKTestUltraJSONTests.test_default_handler.<locals>._TestObject.recursive_attrc                 S   s
   t | jS r   )r   r   r0  r   r   r   __str__}  r8  zDTestUltraJSONTests.test_default_handler.<locals>._TestObject.__str__r6  N)r   r   r   r7  propertyr9  r   r<  r   r:  r   r   r;  u  s
    
r;  r   ru   r   z"foo")default_handlerc                 S      dS )Nfoobarr   r  r   r   r   
my_handler  r2  z;TestUltraJSONTests.test_default_handler.<locals>.my_handlerz"foobar"c                 S   s   t d)NI raise for anything)rz   rB  r   r   r   my_handler_raises  s   zBTestUltraJSONTests.test_default_handler.<locals>.my_handler_raisesrD  c                 S   r@  )N*   r   rB  r   r   r   my_int_handler  r2  z?TestUltraJSONTests.test_default_handler.<locals>.my_int_handlerrF  c                 S   s   t  dddS )Nr   r(   r)   )r   rB  r   r   r   my_obj_handler  s   z?TestUltraJSONTests.test_default_handler.<locals>.my_obj_handlerr   r(   r)   bar)default)r{   r|   r   r,   r-   r   rz   r.   r   r7   r8   rO   )r0   r~   rC  rE  rG  rH  obj_listr   r:  r   test_default_handlert  sB   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>._TestObjectr6  Nc                 S   s   || _ || _|| _|| _d S r   rD   b_cr   )r0   rD   rN  rO  r   r   r   r   r7    s   
zCTestUltraJSONTests.test_encode_object.<locals>._TestObject.__init__c                 S   r@  r`   r   r0  r   r   r   e  r2  z<TestUltraJSONTests.test_encode_object.<locals>._TestObject.er=  )r   r   r   r7  rP  r   r   r   r   r;    s    
r;  r%   r(   r)   r   rM  )rD   rN  r   r[   )r0   r;  test_objectr   r   r   test_encode_object  s   $z%TestUltraJSONTests.test_encode_objectN)Hr   r   r   r{   markskipifr   r4   parametrizerB   rF   rR   rS   rW   r]   mathpirc   rf   ri   rn   rq   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rT   
datetime64naninfr   r   r   r   r   r   r   r   r  r  r	  r  r  r  r  r  r  r   r"  r&  r+  r.  r5  rL  rR  r   r   r   r   r    7   s    
7





	
		


"

	
	




	





	6r    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 S )!TestNumpyJSONTests
bool_inputTFc                 C   s$   t |}tt||ksJ d S r   )boolr,   r.   r-   )r0   r\  rN  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)rT   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%   rT   r`  typer,   r.   r-   r0   any_int_numpy_dtypeklassrV   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   r_  )
rT   arangerx   astypera  r,   r.   r-   rL   rb  )r0   ri  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 platformru  rt  )r   r{   skiprT   r`  rg  iinfomaxr,   r.   r-   rh  r   r   r   test_int_max  s   
 zTestNumpyJSONTests.test_int_maxc                 C   re  )NgJY8p@rf  r0   float_numpy_dtyperj  rV   r   r   r   
test_float  rl  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#   )
rT   rn  floatro  ra  r,   r.   r-   rL   assert_almost_equal)r0   r{  rp  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 )Nrl   r"   r#   )
rT   r`  rg  finforx  rL   r~  r,   r.   r-   rz  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(   	rT   rn  reshaperL   rb  ra  r,   r.   r-   r0   rp  r   r   r   test_array_basic  s   

"z#TestNumpyJSONTests.test_array_basicshape))rl   rl   ra   ra   r   )rm  r%   c              	   C   s6   t d}||}tt tt|| d S )Nrm  r  )r0   r  rp  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   rF  g33333sX@rN  r/  r   r_  )rT   ra  objectr,   r.   r-   rL   rb  )r0   arr_listrp  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%   r_  r  )
rT   float32rn  r  ra  r,   r.   r-   rL   r~  )r0   r`  rp  arr_outr   r   r   test_array_float  s
   
z#TestNumpyJSONTests.test_array_floatc                 C   sN   t d}tjt|d ttd W d    d S 1 s w   Y  d S )Nz:array(1) (0d array) is not JSON serializable at the momentru   r%   )	r  r  r{   r|   rz   r,   r-   rT   ra  r!  r   r   r   test_0d_array#  s   
"z TestNumpyJSONTests.test_0d_arrayN)r   r   r   r{   rS  rU  r^  rd  rk  rs  ry  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   ra      rD   rN  xyz)r   columnsr`  r   r   r   )r   r%   r(   r   r%   r   r   r   )rT   rt  r   dtypesallr,   r.   r-   r   r  r   	transposerL   assert_frame_equal)r0   r   r`  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   rN  r  )r   r  )df1df2r   )r   copyr,   r.   r-   )r0   r   r  nestedkwargsexpr   r   r   test_dataframe_nestedM  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rl   rg      (   2   <   seriesr     r   ro   rl   r"   )namer   r`  r   r   )Nr   )678rt   1015)r   r   )r   r%   r(   r)   r   ra   r   )rT   rt  r   sort_valuesr`  r,   r.   r-   r   r  r   rL   assert_series_equal)r0   r   r`  r   r:   r;   r   r   r   r   test_series[  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t||d}t
ttj||d}|jjtj}t ||_t|| d S )Nr   z1/1/2000rg   )periodsfreqr   r   )r   listr   r,   r-   rT   ra  r.   rL   r  r   randomrandnlenr   r   ro  rt  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 valueru   r   )r0   r  r~   r   r   r   test_decode_invalid_array  s
   "z-TestPandasJSONTests.test_decode_invalid_arrayrp  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$  r0  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 dataru   z{}
	 ar   r0  r   r   r   )test_decode_with_trailing_non_whitespaces  s   "z=TestPandasJSONTests.test_decode_with_trailing_non_whitespacesvaluec                 C   r  r  )r{   r|   ry   r,   r8   )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?signrs   r%   c                 C   s&   ||9 }t j|tt|dd d S )NgV瞯<)rtol)rL   r~  r,   r8   r   )r0   r  r  r   r   r   test_decode_floating_point  s   z.TestPandasJSONTests.test_decode_floating_pointc                 C   s.   t  }tddD ]}|| qt| d S )Nr   i )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  r0  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   ra   r  r  r   ro   rE   )r0   r   r   r   r   r   r   r   test_encode_set  s   

z#TestPandasJSONTests.test_encode_settdin  )days   ra   )hoursminutessecondsrg   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  r{   rS  rU  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   rV  r  r   r   numpyrT   r{   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:    ,
     p