o
    g                     @   s0  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Zd dlm  mZ d dlmZmZmZ d dl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#ej"dd
gddd Z
dd Z$G dd dZ%G dd dZ&G dd dZ'dS )    N)IS64PY310is_platform_windows)	DataFrameDatetimeIndexIndexNaT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   ]/home/ubuntu/cloudmapper/venv/lib/python3.10/site-packages/pandas/tests/io/json/test_ujson.py
<dictcomp>1   s    z_clean_dict.<locals>.<dictcomp>)itemsdr   r   r   _clean_dict$   s   r   )Nsplitrecordsvaluesindex)paramsc                 C      | j S Nparamrequestr   r   r   orient4   s   r#   Tc                 C   r   r   r   r!   r   r   r   numpy;   s   r$   c                 C   s@   t j}| d u s|dks| du r|d u st rt j}|S t j}|S )Nr   T)npint64r   int32intp)r$   r#   dtyper   r   r   get_int32_compat_dtype@   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$d%d&ejd'ejjed(dd)ejd*ejjed(dd)gd+d, Zd-d. Zejd/d0d1gd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Zd<d= Z ejd>g d?d@dA Z!dBdC Z"dDdE Z#ejdFg dGdHdI Z$dJdK Z%dLdM Z&ejdNe'( e'(dOdPdQe'(dRdSdTdUgdVdW Z)dXdY Z*dZd[ Z+ejd\e,e-.d]e-j/e-j0e-j0 gd^d_ Z1d`da Z2dbdc Z3ddde Z4dfdg Z5dhdi Z6ejdjg dkdldm Z7ejdndodpgdqdr Z8ejdsg dtdudv Z9ejdwg dxdydz Z:ejd{g d|d}d~ Z;ejdddgdd Z<dd Z=dd Z>dd Z?dd Z@ejdeAjBdO eAjBdP  gejje dddd ZCejdg ddd ZDdd ZEejdg ddd ZFdd ZGdd ZHdd ZIdd ZJd*S )TestUltraJSONTestsz$not compliant on 32-bit, xref #15865)reasonc                 C   s  t d}tj|dd}t|}|dksJ t d}tj|dd}|dk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_decimalM   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 )Nr@   r7   r8   jsonloadsr9   )expected_outputencode_kwargsoutputr@   string_inputr   r   helper   s   z@TestUltraJSONTests.test_encode_string_conversion.<locals>.helperF)encode_html_charsTr   )r;   r@   not_html_encodedhtml_encodedrI   r   rG   r   test_encode_string_conversion   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.   r7   r8   r9   )r;   rN   r<   r=   r>   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_localer7   rC   dumps)r;   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 )NrO   g=
ףp=@TrS   rP   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?>ӡ)r7   r9   r8   r%   allclose)r;   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)r7   r9   r8   )r;   rb   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   )r7   r8   roundrB   rC   r9   )r;   rh   rF   r   r   r   test_encode_double_conversion   s   
"z0TestUltraJSONTests.test_encode_double_conversionc                 C   s   d}t |}|dksJ d S )Nr2   r1   r7   r8   )r;   decimal_inputrF   r   r   r   test_encode_with_decimal   s   
z+TestUltraJSONTests.test_encode_with_decimalc                 C   sd   g gggd }t |}|t|ksJ |t |ksJ t|}t|t j|d|j	d d S )N   Tr$   r)   )
r7   r8   rB   rC   r9   r%   arrayrW   assert_numpy_array_equalr)   )r;   nested_inputrF   r   r   r   "test_encode_array_of_nested_arrays   s   

z5TestUltraJSONTests.test_encode_array_of_nested_arraysc                 C   sZ   g dd }t |}|t|ksJ |t |ksJ tt|t j|dd d S )N)cAT@ru   ru   ru   
   Tr$   	r7   r8   rB   rC   r9   rW   rr   r%   rq   )r;   doubles_inputrF   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.   )r4   	   )r7   r8   rB   rC   r9   rj   )r;   rh   rF   r/   rounded_inputr   r   r   test_double_precision   s   
z(TestUltraJSONTests.test_double_precisioninvalid_valro   9zFailing on Python 3.10 GH41940)marksNc                 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ݚ>@z`Invalid value '.*' for option 'double_precision', max is '15'|an integer is required \(got type matchr.   )
isinstanceint
ValueError	TypeErrorpytestraisesr7   r8   )r;   r~   rh   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"rA   )r;   rH   rF   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   r7   r8   r9   rB   rZ   rC   )r;   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)r7   r8   r9   rB   rZ   )r;   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   )r;   surrogate_inputr   r   r   r   r   "test_encode_unicode_surrogate_pair0  
   

z5TestUltraJSONTests.test_encode_unicode_surrogate_pairc                 C   r   )Nu   ð°TRAILINGNORMALr   r;   four_bytes_inputr   r   r   r   r   test_encode_unicode_4bytes_utf88  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   sj   g ggg}t |}|t|ksJ |t|ksJ |t |ks%J tt	|t j|dd d S )NTrw   )
r7   r8   rB   rC   rZ   r9   rW   rr   r%   rq   )r;   arr_in_arr_inputrF   r   r   r   test_encode_array_in_arrayI  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   r7   r8   rB   rC   rZ   r9   )r;   r   rF   r   r   r   test_encode_num_conversionU  s   
	z-TestUltraJSONTests.test_encode_num_conversionc                 C   sV   g d}t |}|t|ksJ |t |ksJ tt|t j|dd d S )N)r0   r3   r4      Trw   rx   )r;   
list_inputrF   r   r   r   test_encode_list_conversionc  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 )Nr0   r3   r4   r   )k1k2k3k4rA   )r;   
dict_inputrF   r   r   r   test_encode_dict_conversionn  s   
z.TestUltraJSONTests.test_encode_dict_conversionbuiltin_value)NTFc                 C   r   r   r   )r;   r   rF   r   r   r   %test_encode_builtin_values_conversionu  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timer7   r8   calendartimegmutctimetupler   rB   rC   r9   )r;   datetime_inputrF   expectedr   r   r   test_encode_datetime_conversion|  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   r7   r8   yearmonthdayr   r   r   rB   rC   r9   )r;   
date_inputrF   tupr   r   r   r   test_encode_date_conversion  s   
z.TestUltraJSONTests.test_encode_date_conversiontestr0   r3   r4   rv      r-   < c                 C   s*   t |}d|  d}||ksJ d S )N"r7   r8   	isoformatr;   r   rF   r   r   r   r   !test_encode_time_conversion_basic  s   
z4TestUltraJSONTests.test_encode_time_conversion_basicc                 C   s>   t ddddtj}t|}d|  d}||ksJ d S Nrv   r   r-   r   r   )r   r   pytzutcr7   r8   r   r   r   r   r    test_encode_time_conversion_pytz  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tzutcr7   r8   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 nullrl   )r;   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|}ttj|dd}||jd	 ks"J ttj|d
d}||jd ks5J ttj|dd}||jd ksHJ ttj|dd}||jksYJ d}tjt|d tj|dd W d    d S 1 suw   Y  d S )N           r   iI r   r   i ʚ;msi@B us  nsz*Invalid value 'foo' for option 'date_unit'r   foo)	r   r   r7   r9   r8   valuer   r   r   )r;   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)r@   r   )r;   	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}r7   r9   r   )r;   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 reachedr   )r   r   r   OverflowErrorr7   r8   )r;   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'r   r   r   r   r7   r9   )r;   	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 valuer   r   )r;   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 limitr   i   r   )r;   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'r   r   )r;   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   r   )ranger   r   r   reescaper7   r9   )r;   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 valuer   r   )r;   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   )r   r7   r9   )r;   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   )r;   wrapped_inputrF   alone_inputr   r   r   test_encode_null_character4  s   

z-TestUltraJSONTests.test_encode_null_characterc                 C   s    d}t |t|ksJ d S )Nz"31337 \u0000 31337"r7   r9   rB   rC   )r;   r  r   r   r   test_decode_null_characterD  s   z-TestUltraJSONTests.test_decode_null_characterc                 C   sZ   g d}t |}|t|ksJ |t |ksJ tt|t j|dtj	d d S )N)    r  r  r  r  r  Trp   )
r7   r8   rB   rC   r9   rW   rr   r%   rq   r&   r;   
long_inputrF   r   r   r    test_encode_list_long_conversionH  s   
z3TestUltraJSONTests.test_encode_list_long_conversionc                 C   sH   d}t |}|t|ksJ |t|ksJ |t |ks"J d S )Nr  r   r  r   r   r   test_encode_long_conversionZ  s
   
z.TestUltraJSONTests.test_encode_long_conversionbigNumzGH-35288c                 C   sj   t jd }t|}t||ksJ tjtdd t||ks#J W d    d S 1 s.w   Y  d S )Nr0   Value is too bigr   )	sysmaxsizer7   r8   r   r   r   r   rC   )r;   r   encodingr   r   r   #test_dumps_ints_larger_than_maxsizeb  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  )r;   r&  r   r   r   test_decode_numeric_int_expn  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'r   )r   r   r   r7   rC   r;   r   r   r   r   test_loads_non_str_bytes_raisest  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r7   r9   )r;   r   docr   r   r   &test_decode_number_with_32bit_sign_bity  s   z9TestUltraJSONTests.test_decode_number_with_32bit_sign_bitc                 C   s4   t dD ]}d }|d d d }t| qd S )Nrv      å   r3   )r
  r8   r7   )r;   r  baseescape_inputr   r   r   test_encode_big_escape  s
   z)TestUltraJSONTests.test_encode_big_escapec                 C   s@   t dD ]}d }d}||d d d  | }t| qd S )Nrv   r/     "r0  r3   )r
  r8   r7   r9   )r;   r  r1  quoter2  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   r;   r   r   r   toDict     z8TestUltraJSONTests.test_to_dict.<locals>.DictTest.toDictN)r   r   r   r9  r   r   r   r   DictTest  s    r;  rP   )r;   r;  orF   r   r   r   r   test_to_dict  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                       s2   e Zd Zdd Ze fddZdefddZdS )	z<TestUltraJSONTests.test_default_handler.<locals>._TestObjectc                 S   s
   || _ d S r   )r   )r;   r   r   r   r   __init__     
zETestUltraJSONTests.test_default_handler.<locals>._TestObject.__init__c                    s    dS )Nrecursive_attrr   r8  _TestObjectr   r   r@    s   zKTestUltraJSONTests.test_default_handler.<locals>._TestObject.recursive_attrreturnc                 S   s
   t | jS r   )r   r   r8  r   r   r   __str__  r?  zDTestUltraJSONTests.test_default_handler.<locals>._TestObject.__str__N)r   r   r   r>  propertyr@  r   rD  r   rA  r   r   rB    s
    rB  r   r   r   z"foo")default_handlerc                 S      dS )N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)r   rI  r   r   r   my_handler_raises  s   zBTestUltraJSONTests.test_default_handler.<locals>.my_handler_raisesrK  c                 S   rG  )N*   r   rI  r   r   r   my_int_handler  r:  z?TestUltraJSONTests.test_default_handler.<locals>.my_int_handlerrM  c                 S   s   t  dddS )Nr   r3   r4   )r   rI  r   r   r   my_obj_handler  s   z?TestUltraJSONTests.test_default_handler.<locals>.my_obj_handlerr   r3   r4   bar)default)r   r   r   r7   r8   r   r   r9   r   rB   rC   rZ   )r;   r   rJ  rL  rN  rO  obj_listr   rA  r   test_default_handler  s@   z'TestUltraJSONTests.test_default_handler)Kr   r   r   r   markskipifr   r?   parametrizerM   rQ   r]   r^   ra   rf   mathpirk   rn   rt   rz   r}   r    xfailr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r%   
datetime64naninfr   r   r   r   r   r   r  r  r	  r  r  r  r  r  r  r  r"  r#  r%  r(  r*  r.  r3  r6  r=  rS  r   r   r   r   r+   L   s    
7



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



	



	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ejd i g ged!i fd"d#ged$i fd%gd"ged&i fd"i d%ged'i fd"d%gd"ged(i fd%d)g d*ged!i fd%d)iged&d+difd%d)d*d"iiied,d+difd"d-d.d*d/iged0d+difg	d1d2 Zd3d4 Zd#S )5TestNumpyJSONTests
bool_inputTFc                 C   s$   t |}tt||ksJ d S r   )boolr7   r9   r8   )r;   r^  br   r   r   	test_bool  rg   zTestNumpyJSONTests.test_boolc                 C   s<   t jg dtd}t jtt|td}t|| d S )N)TFTTFTFFr)   )r%   rq   r_  r7   r9   r8   rW   rr   )r;   
bool_arrayrF   r   r   r   test_bool_array  s
   z"TestNumpyJSONTests.test_bool_arrayc                 C   4   t |j}|d}|tt||ksJ d S )Nr0   r%   r)   typer7   r9   r8   r;   any_int_dtypeklassr`   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   rb  )
r%   aranger   astyperq   r7   r9   r8   rW   rr   )r;   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)r&   uint64z-Cannot test 64-bit integer on 32-bit platformrt  r&   )r   r   skipr%   r)   rg  iinfomaxr7   r9   r8   rh  r   r   r   test_int_max  s   
 zTestNumpyJSONTests.test_int_maxc                 C   re  )NgJY8p@rf  r;   float_dtyperj  r`   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?rb  r-   r.   )
r%   rn  floatro  rq   r7   r9   r8   rW   assert_almost_equal)r;   rz  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 )Nrv   r-   r.   )
r%   r)   rg  finforw  rW   r}  r7   r9   r8   ry  r   r   r   test_float_max  s
   z!TestNumpyJSONTests.test_float_maxc              	   C   sR   t d}|d}tt tt|| ttjt|dd| d S )N`   )r3   r3   r3   r3   r4   r3   Trw   	r%   rn  reshaperW   rr   rq   r7   r9   r8   r;   rp  r   r   r   test_array_basic  s   

 z#TestNumpyJSONTests.test_array_basicshape))rv   rv   ri   ri   r   )rm  r0   c              	   C   sR   t d}||}tt tt|| ttjt|dd| d S )Nrm  Trw   r  )r;   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 )NrO   rM  g33333sX@r`  r7  r   rb  )r%   rq   objectr7   r9   r8   rW   rr   )r;   arr_listrp  resultr   r   r   test_array_list&  s   z"TestNumpyJSONTests.test_array_listc                 C   sn   t j}t jddd|d}|d}t jtt||d}t	|| tjt|d|d}t	|| d S )NgrhY@gX9vi@r0   rb  r  Trp   )
r%   float32rn  r  rq   r7   r9   r8   rW   r}  )r;   r)   rp  arr_outr   r   r   test_array_float6  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 momentr   r0   )	r  r  r   r   r   r7   r8   r%   rq   r)  r   r   r   test_0d_arrayB  s   
"z TestNumpyJSONTests.test_0d_arrayz!bad_input,exc_type,err_msg,kwargsz:nesting not supported for object or variable length dtypesrM  NzZint\(\) argument must be a string, a bytes-like object or a( real)? number, not 'NoneType'rO   zLCannot decode multidimensional arrays with variable length elements to numpyzVint\(\) argument must be a string, a bytes-like object or a( real)? number, not 'dict'z-invalid literal for int\(\) with base 10: 'a'r`  clabelledz(labels only supported up to 2 dimensions   )rO   r`  r   z1cannot reshape array of size 3 into shape \(2,1\)c                 C   sP   t j||d tjt|fddi| W d    d S 1 s!w   Y  d S )Nr   r$   T)r   r   r7   r9   rZ   )r;   	bad_inputexc_typer  kwargsr   r   r   test_array_numpy_exceptH  s   @"z*TestNumpyJSONTests.test_array_numpy_exceptc                 C   s  dg i}t jt |ddd}td|d k sJ tdg|d k s*J |d d u s2J ddig}t jt |ddd}tdg|d k sPJ tdg|d k s^J |d d u sfJ d	}t j|ddd}tjg d
tdd}||d k sJ |d d u sJ tddg|d k sJ d}t j|ddd}tjg d
tdd}||d k sJ tg d|d k sJ tddg|d k sJ d S )NrO   Tr$   r  )r0   r   r   r0   r3   rM  z<[{"a": 42, "b":31}, {"a": 24, "c": 99}, {"a": 2.4, "b": 78}])rM        c   g333333@N   rb  )r4   r3   r`  zK{"1": {"a": 42, "b":31}, "2": {"a": 24, "c": 99}, "3": {"a": 2.4, "b": 78}})123)	r7   rC   rZ   r%   emptyallrq   r   r  )r;   labelled_inputrF   input_dumpsexpected_valsr   r   r   test_array_numpy_labelled  s.   
"z,TestNumpyJSONTests.test_array_numpy_labelled)r   r   r   r   rT  rV  ra  rd  rk  rs  rx  r{  r  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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d%d& Ze
jd'g d(e
jd)d*d+gd,d- Zd.d/ Zd0d1 Zd2d3 Ze
jd4ed5d6ed*d6ed7d8d8d9ed7d:d;d9ed*d8d<ed+d=ed+d+d>ed+d+d+d?ed@d@d@d?g	dAdB ZdCS )DTestPandasJSONTestsc           	      C   s<  |dkr|rt d t||}tg dg dgddgg d|d}|d u r(i nd	|i}|d u r2i nd
|i}|j|k s?J tjtj|fi |fi |}|j|k sXJ |dkrht	|}tdi |}nt|}|dkr{g d|_
ddg|_n|dkrddg|_n|dkr| }|j|k sJ t|| d S )Nr   zNot idiomatic pandasr0   r3   r4   r   ri      rO   r`  xyzr   columnsr)   r#   r$   r   r   )r   r0   r3   r   r0   r   r   )r   ru  r*   r   dtypesr  r7   r9   r8   r   r  r   	transposerW   assert_frame_equal)	r;   r#   r$   r)   dfrE   decode_kwargsrF   r   r   r   r   test_dataframe  s6   

 
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  rO   r`  r  )r   r  )df1df2r#   )r   copyr7   r9   r8   )r;   r#   r  nestedr  expr   r   r   test_dataframe_nested  s   $z)TestPandasJSONTests.test_dataframe_nestedc                 C   s   |dv r	t d tg dg dgddgg dtd}|d u r!i nd	|i}ttjtj|fi |d
d
d }|d u r>|j}n	|dkrGddg|_t	
|| d S )N)r   r   zIncompatible with labelled=Truer  r  rO   r`  r  r  r#   Tr  r   r   r0   )r   ru  r   r   r7   r9   r8   Tr   rW   r  )r;   r#   r  r  rF   r   r   r   test_dataframe_numpy_labelled  s"   

z1TestPandasJSONTests.test_dataframe_numpy_labelledc           	      C   s
  t ||}tg ddg d|d }|j|ksJ |d u r i nd|i}|d u r*i nd|i}tjtj|fi |fi |}|j|ksEJ |dkrUt|}tdi |}nt|}|dv rjd |_| }g d	|_	n|d
v rvd |_g d|_	|j|ks}J t
|| d S )Nrv   ro      (   2   <   seriesr     r   r{   rv   r-   )namer   r)   r#   r$   r   )Nr   )678r   1015)r   r   )r   r0   r3   r4   r   ri   r   )r*   r	   sort_valuesr)   r7   r9   r8   r   r  r   rW   assert_series_equal)	r;   r#   r$   r)   r   rE   r  rF   r   r   r   r   test_series  s6   
 
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  r7   r9   r8   )r;   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jt|dddd}t|| tttj|dd}t d
i |}t|| |j|jksOJ ttjtj|dddd}t d
i |}t|| |j|jksrJ t ttj|dddd}t|| t tjtj|dddddd}t|| t ttj|d	ddd}t|| t tjtj|d	ddddd}t|| t ttj|dddd}t|| t tjtj|dddddd}t|| d S )N)r  -      b   +      r   )r  Trw   r   )r#   r   r   r   )r   r7   r9   r8   rW   assert_index_equalr   r  )r;   irF   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/2000ro   )periods)freqr   )r   )r   listr   r7   r8   r%   rq   r9   rW   r  r	   randomrandnlenr   r   ro  r&   r  )r;   r   rngr=   r>   ts
idx_valuesr   r   r   test_datetime_indexT  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 valuer   r   )r;   r  r   r   r   r   test_decode_invalid_arraye  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_arrayv     z%TestPandasJSONTests.test_decode_arrayextreme_numr  r   c                 C   r  r   r   )r;   r  r   r   r   test_decode_extreme_numbersz  r  z/TestPandasJSONTests.test_decode_extreme_numberstoo_extreme_num9223372036854775808z-90223372036854775809c                 C   s>   t jtdd t| W d    d S 1 sw   Y  d S )Nz#Value is too big|Value is too smallr   r   )r;   r  r   r   r   test_decode_too_extreme_numbers~  s   "z3TestPandasJSONTests.test_decode_too_extreme_numbersc                 C   s   i t dks	J d S )Nz{}
	 r,  r8  r   r   r   %test_decode_with_trailing_whitespaces  s   z9TestPandasJSONTests.test_decode_with_trailing_whitespacesc                 C   >   t jtdd td W d    d S 1 sw   Y  d S )NzTrailing datar   z{}
	 ar   r8  r   r   r   )test_decode_with_trailing_non_whitespaces     "z=TestPandasJSONTests.test_decode_with_trailing_non_whitespacesc                 C   r  )Nr!  r   z[18446098363113800555])r   r   r   r7   rC   r8  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?signr   r0   c                 C   s&   ||9 }t j|tt|dd d S )NgV瞯<)rtol)rW   r}  r7   rC   r   )r;   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
  addr7   r8   )r;   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[])r7   r8   r  r8  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>	   r0   r3   r4   r   ri   r  r  r   r{   rP   )r;   r   r   r   r   r   r   r   test_encode_set  s   

z#TestPandasJSONTests.test_encode_settdin  )days   ri   )hoursminutessecondsro   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   )r;   r  r  r   r   r   r   test_encode_timedelta_iso  s   z-TestPandasJSONTests.test_encode_timedelta_isoN)r   r   r   r  r  r  r  r  r  r  r   rT  rV  r  r  r  r  r  r  r  r  r  r  r  r
   r  r   r   r   r   r    s^    &!.
	


	

r  )(r   r   r5   rB   rU   rW  r  r"  r   r   r$   r%   r   r   pandas._libs.json_libsr7   pandas.compatr   r   r   pandasr   r   r   r   r	   r
   r   r   pandas._testing_testingrW   r   fixturer#   r*   r+   r]  r  r   r   r   r   <module>   sD    (


      Y