
    OwgH                     2   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c 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 Z ej@                  g d      d        Z! G d d	      Z" G d
 d      Z# G d d      Z$y)    N)IS64)		DataFrameDatetimeIndexIndexNaTPeriodIndexSeries	Timedelta	Timestamp
date_rangec                 h    | j                         D ci c]  \  }}t        |      | c}}S c c}}w )z
    Sanitize dictionary for JSON by converting all keys to strings.

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

    Returns
    -------
    cleaned_dict : dict
    )itemsstr)dkvs      V/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/tests/io/json/test_ujson.py_clean_dictr       s*     #$''),$!QCFAI,,,s   .)Nsplitrecordsvaluesindex)paramsc                     | j                   S N)param)requests    r   orientr   0   s     ==    c                      e Zd Zej                  j                  e d      d        Zej                  j                  dddg      d        Z	ej                  j                  dg d	      d
        Z
d Zd Zd Zej                  j                  dddg      d        Zej                  j                  dej                   ej                    g      d        Zd Zd Zd Zd Zej                  j                  dg d      d        Zd Zej                  j                  dddg      d        Zd  Zd! Zd" Zd# Zd$ Zd% Zej                  j                  d&g d'      d(        Zd) Z d* Z!ej                  j                  d+g d,      d-        Z"d. Z#d/ Z$ej                  j                  d0 e%jL                          e%jL                  d1d2d3       e%jL                  d4d5d6d7      g      d8        Z'd9 Z(d: Z)ej                  j                  d;e* e+jX                  d<      e+jZ                  e+j\                  e+j\                   g      d=        Z/d> Z0d? Z1d@ Z2dA Z3dB Z4ej                  j                  dCg dD      dE        Z5ej                  j                  dFdGdHg      dI        Z6ej                  j                  dJg dK      dL        Z7ej                  j                  dMg dN      dO        Z8ej                  j                  dPg dQ      dR        Z9ej                  j                  dSdTdUg      dV        Z:dW Z;dX Z<dY Z=ej                  j                  dZd[d\g      d]        Z>ej                  j                  d^d_d`g      da        Z?ej                  j                  dbg dc      dd        Z@de ZAej                  j                  dfg dg      dh        ZBdi ZCdj ZDdk ZEdl ZFdm ZGdn ZHyo)pTestUltraJSONTestsz$not compliant on 32-bit, xref #15865)reasonc                    t        j                  d      }t        j                  |d      }t        j                  |      }|dk(  sJ t        j                  d      }t        j                  |d      }|dk(  sJ t        j                  |      }|dk(  sJ t        j                  d	      }t        j                  |d      }|d
k(  sJ t        j                  |      }|dk(  sJ t        j                  d      }t        j                  |d      }|dk(  sJ t        j                  |      }|dk(  sJ t        j                  d      }t        j                  |d      }|dk(  sJ t        j                  |      }|dk(  sJ t        j                  d      }t        j                  |d      }|dk(  sJ t        j                  |      }|dk(  sJ t        j                  d      }t        j                  |d      }|dk(  sJ t        j                  |      }|dk(  sJ t        j                  d      }t        j                  |d      }|dk(  sJ t        j                  |      }|dk(  sJ y )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decodeds       r   test_encode_decimalz&TestUltraJSONTests.test_encode_decimal8   sG   ook*##C"=##G,)###oof%##C!<%##G,#~~oof%##C!<%##G,#~~oof%##C!<%##G,#~~oog&##C!<&   ##G,$oog&##C!<%##G,#~~ooh'##C!<%##G,#~~oo34##C"=%##G,#~~r   ensure_asciiTFc                 X    dd}d}fd} ||        ||d        ||d       y )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                     t        j                  fdi|}|| k(  sJ t        j                  |      k(  sJ t        j                  |      k(  sJ y )Nr7   r.   r/   jsonloadsr0   )expected_outputencode_kwargsoutputr7   string_inputs      r   helperz@TestUltraJSONTests.test_encode_string_conversion.<locals>.helperx   sf    &&+7;HF _,,,4::f#55555#4#4V#<<<<r   F)encode_html_charsT )r2   r7   not_html_encodedhtml_encodedrA   r@   s    `   @r   test_encode_string_conversionz0TestUltraJSONTests.test_encode_string_conversionp   s?    ARU 		= 	  	59 	|t4r   long_number)lZ:`7{ g#_tgԟpAc                 r    d|i}t        j                  |d      }t        j                  |      }||k(  sJ y )Nar$   r%   r.   r/   r0   )r2   rG   r3   r4   r5   s        r   test_double_long_numbersz+TestUltraJSONTests.test_double_long_numbers   s<     K ##C"=##G,g~~r   c                 N   t         j                  }dD ]  }t        j                  ||      st        j                  ||      5  t        j                  t        j                  d            dk(  sJ t        j                  dd      dk(  sJ 	 d d d         y  y # 1 sw Y    y xY w)N)zit_IT.UTF-8Italian_ItalygˇLz4.78Tprecise_floatgQ@)locale
LC_NUMERICtmcan_set_locale
set_localer.   r0   r/   )r2   lc_category
new_locales      r   test_encode_non_c_localez+TestUltraJSONTests.test_encode_non_c_locale   s    '' ; 	J  [9]]:{; Q ,,U->->w-GHGSSS ,,V4HDPPPQ 	Q s   A
BB$	c                 r    ddi}t        j                  |      }t        j                  |d      }||k(  sJ y )NrI   g=
ףp=@TrN   rJ   r1   s       r    test_decimal_decode_test_precisez3TestUltraJSONTests.test_decimal_decode_test_precise   s9    Dk##C(##G4@g~~r   c                    d}|t        j                  t        j                  |            k(  sJ d}|t        j                  t        j                  |            k(  sJ d}|t        j                  t        j                  |            k(  sJ d}t        j                  |t        j                  t        j                  |                  sJ y )NgWw'&l7g0.++gj7֖g?>ӡ)r.   r0   r/   npallclose)r2   nums     r   #test_encode_double_tiny_exponentialz6TestUltraJSONTests.test_encode_double_tiny_exponential   s    e''(9(9#(>????e''(9(9#(>????e''(9(9#(>????{{3 1 1%2C2CC2H IJJJr   unicode_keykey1u   بنc                 f    |di}|t        j                  t        j                  |            k(  sJ y )Nvalue1r.   r0   r/   )r2   r_   unicode_dicts      r   "test_encode_dict_with_unicode_keysz5TestUltraJSONTests.test_encode_dict_with_unicode_keys   s0    #X.u001B1B<1PQQQQr   double_inputc                     t        j                  |      }t        |d      t        t        j                  |      d      k(  sJ t        |d      t        t        j
                  |      d      k(  sJ y N   )r.   r/   roundr;   r<   r0   )r2   rf   r?   s      r   test_encode_double_conversionz0TestUltraJSONTests.test_encode_double_conversion   s`     ""<0\1%tzz&/A1)EEEE\1%u/@/@/H!)LLLLr   c                 @    d}t        j                  |      }|dk(  sJ y )Nr)   r(   r.   r/   )r2   decimal_inputr?   s      r   test_encode_with_decimalz+TestUltraJSONTests.test_encode_with_decimal   s#    ""=1r   c                     g gggdz  }t        j                  |      }|t        j                  |      k(  sJ |t        j                  |      k(  sJ y )N   r:   )r2   nested_inputr?   s      r   "test_encode_array_of_nested_arraysz5TestUltraJSONTests.test_encode_array_of_nested_arrays   sQ    x"}""<0tzz&1111u008888r   c                     g ddz  }t        j                  |      }|t        j                  |      k(  sJ |t        j                  |      k(  sJ y )N)cAT@ru   ru   ru   
   r:   )r2   doubles_inputr?   s      r   test_encode_array_of_doublesz/TestUltraJSONTests.test_encode_array_of_doubles   sL    LrQ""=1

6 2222 1 1& 9999r   c                 Z   d}t        j                  |d      }|t        j                  |      k(  sJ |t        j                  |      k(  sJ dD ]Y  }t        j                  ||      }t        ||      }|t        j                  |      k(  sJ |t        j                  |      k(  rYJ  y )Ng )>@r$   r%   )r+   	   )r.   r/   r;   r<   r0   rj   )r2   rf   r?   r&   rounded_inputs        r   test_double_precisionz(TestUltraJSONTests.test_double_precision   s    )""<"Etzz&1111u008888 & 	>&&|FVWF!,0@AM DJJv$6666 E$5$5f$====	>r   invalid_val)rq   9Nc                     d}t        |t              rt        nt        }d}t	        j
                  ||      5  t        j                  ||       d d d        y # 1 sw Y   y xY w)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/   )r2   r}   rf   expected_exceptionmsgs        r   test_invalid_double_precisionz0TestUltraJSONTests.test_invalid_double_precision   s^     /+5k3+GZY: 	
 ]]-S9 	Jl[I	J 	J 	Js   AA"c                     d}t        j                  |      }|t        j                  |      k(  sJ |t        j                  |      k(  sJ |dk(  sJ y )NzA string \ /   
  	z"A string \\ \/ \b \f \n \r \t"r:   )r2   r@   r?   s      r   test_encode_string_conversion2z1TestUltraJSONTests.test_encode_string_conversion2   sV    5""<0tzz&1111u008888BBBBr   unicode_inputu@   Räksmörgås اسامة بن محمد بن عوض بن لادن
   æ¥Ñc                     t        j                  |      }t        j                  |      }|t        j                  |      k(  sJ |t        j
                  |      k(  sJ y r   r.   r/   r0   r;   dumpsr<   )r2   r   encdecs       r   test_encode_unicode_conversionz1TestUltraJSONTests.test_encode_unicode_conversion   sQ    
 .$djj////djjo%%%r   c                     d}t        j                  |      }t        j                  |      }||k(  sJ |t        j                  |      k(  sJ y )N)r.   r/   r0   r;   r   )r2   escaped_inputr   r   s       r   test_encode_control_escapingz/TestUltraJSONTests.test_encode_control_escaping  sL    .$###djj////r   c                     d}t        j                  |      }t        j                  |      }|t        j                  |      k(  sJ |t        j
                  |      k(  sJ y )Nu   ðr   )r2   surrogate_inputr   r   s       r   "test_encode_unicode_surrogate_pairz5TestUltraJSONTests.test_encode_unicode_surrogate_pair  sT    ,0$djj1111djjo%%%r   c                     d}t        j                  |      }t        j                  |      }|t        j                  |      k(  sJ |t        j
                  |      k(  sJ y )Nu   ð°TRAILINGNORMALr   r2   four_bytes_inputr   r   s       r   test_encode_unicode_4bytes_utf8z2TestUltraJSONTests.test_encode_unicode_4bytes_utf8  sW    ; 01$djj!12222djjo%%%r   c                     d}t        j                  |      }t        j                  |      }|t        j                  |      k(  sJ |t        j
                  |      k(  sJ y )Nu   ó¿¿¿TRAILINGNORMALr   r   s       r   &test_encode_unicode_4bytes_utf8highestz9TestUltraJSONTests.test_encode_unicode_4bytes_utf8highest  sW    ; 01$djj!12222djjo%%%r   c                     d}d}t        j                  t        |      5  t        j                  |g       d d d        y # 1 sw Y   y xY w)Nu   ''zT'utf-8' codec can't encode character '\\udac0' in position 1: surrogates not allowedr   )r   r   UnicodeEncodeErrorr.   r/   )r2   stringr   s      r   test_encode_unicode_errorz,TestUltraJSONTests.test_encode_unicode_error&  sG    5 	 ]]-S9 	(vh'	( 	( 	(s   A  A	c                     g ggg}t        j                  |      }|t        j                  |      k(  sJ |t        j                  |      k(  sJ |t        j
                  |      k(  sJ y r   r.   r/   r;   r<   r   r0   )r2   arr_in_arr_inputr?   s      r   test_encode_array_in_arrayz-TestUltraJSONTests.test_encode_array_in_array/  sg     TF8""#344::f#5555$455555#4#4V#<<<<r   	num_input)iz  i         c                     t        j                  |      }|t        j                  |      k(  sJ |t        j                  |      k(  sJ |t        j
                  |      k(  sJ y r   r   )r2   r   r?   s      r   test_encode_num_conversionz-TestUltraJSONTests.test_encode_num_conversion7  s[     ""9-DJJv....I....E--f5555r   c                     g d}t        j                  |      }|t        j                  |      k(  sJ |t        j                  |      k(  sJ y )N)r'   r*   r+      r:   )r2   
list_inputr?   s      r   test_encode_list_conversionz.TestUltraJSONTests.test_encode_list_conversionE  sG    !
"":.TZZ////U..v6666r   c                     ddddd}t        j                  |      }|t        j                  |      k(  sJ |t        j                  |      k(  sJ y )Nr'   r*   r+   r   )k1k2k3k4r:   )r2   
dict_inputr?   s      r   test_encode_dict_conversionz.TestUltraJSONTests.test_encode_dict_conversionL  sP    Qaq9
"":.TZZ////U..v6666r   builtin_value)NTFc                     t        j                  |      }|t        j                  |      k(  sJ |t        j                  |      k(  sJ |t        j
                  |      k(  sJ y r   r   )r2   r   r?   s      r   %test_encode_builtin_values_conversionz8TestUltraJSONTests.test_encode_builtin_values_conversionS  sY    ""=1

6 2222M2222 1 1& 9999r   c                 f   t         j                   j                  t        j                               }t        j                  |d      }t        j                  |j                               }t        |      t        j                  |      k(  sJ t        |      t        j                  |      k(  sJ y )Ns	date_unit)datetimefromtimestamptimer.   r/   calendartimegmutctimetupler   r;   r<   r0   )r2   datetime_inputr?   expecteds       r   test_encode_datetime_conversionz2TestUltraJSONTests.test_encode_datetime_conversionZ  s    !**88E"">SA??>#>#>#@A8}

6 22228} 1 1& 9999r   c                    t         j                  j                  t        j                               }t	        j
                  |d      }|j                  |j                  |j                  dddf}t        j                  |      }t        |      t        j                  |      k(  sJ t        |      t	        j                  |      k(  sJ y )Nr   r   r   )r   dater   r   r.   r/   yearmonthdayr   r   r   r;   r<   r0   )r2   
date_inputr?   tupr   s        r   test_encode_date_conversionz.TestUltraJSONTests.test_encode_date_conversionb  s    ]]00=
"":=
 0 0*..!QJ??3'8}

6 22228} 1 1& 9999r   testr'   r*   r+   rv      r$   < c                 d    t        j                  |      }d|j                          d}||k(  sJ y )N"r.   r/   	isoformatr2   r   r?   r   s       r   !test_encode_time_conversion_basicz4TestUltraJSONTests.test_encode_time_conversion_basicl  s8    
 ""4(t~~'(*6!!!r   c                     t        j                  ddddt        j                        }t	        j
                  |      }d|j                          d}||k(  sJ y Nrv   r   r$   r   r   )r   r   pytzutcr.   r/   r   r   s       r    test_encode_time_conversion_pytzz3TestUltraJSONTests.test_encode_time_conversion_pytzu  sP    }}RR:""4(t~~'(*6!!!r   c                     t        j                  ddddt        j                  j	                               }t        j                  |      }d|j                          d}||k(  sJ y r   )r   r   dateutiltztzutcr.   r/   r   r   s       r   $test_encode_time_conversion_dateutilz7TestUltraJSONTests.test_encode_time_conversion_dateutil|  sY    }}RR1B1B1DE""4(t~~'(*6!!!r   decoded_inputr   c                 B    t        j                  |      dk(  sJ d       y )NnullzExpected nullrm   )r2   r   s     r   test_encode_as_nullz&TestUltraJSONTests.test_encode_as_null  s"       /69J?J9r   c           	         t        j                   ddddddd      }t        |      j                  d      }t        j                  t        j
                  |d	            }||j                  d
z  k(  sJ t        j                  t        j
                  |d	            }||j                  dz  k(  sJ t        j                  t        j
                  |d	            }||j                  dz  k(  sJ t        j                  t        j
                  |d	            }||j                  k(  sJ d}t        j                  t        |      5  t        j
                  |d	       d d d        y # 1 sw Y   y xY w)N           r   iI nsr   r   i ʚ;msi@B us  z*Invalid value 'foo' for option 'date_unit'r   foo)
r   r   as_unitr.   r0   r/   _valuer   r   r   )r2   valstamp	roundtripr   s        r   test_datetime_unitsz&TestUltraJSONTests.test_datetime_units  s5   aRR@#&&t,%%e&7&7s&KL	ELLE1111%%e&7&7t&LM	ELLE1111%%e&7&7t&LM	ELLE1111%%e&7&7t&LM	ELL(((:]]:S1 	4cU3	4 	4 	4s   E))E2c                     d}t        j                  |d      }t        j                  |      }|t        j                  |d      k(  sJ |t        j
                  |      k(  sJ y )Nr   F)r7   r   )r2   	unencodedr   r   s       r   test_encode_to_utf8z&TestUltraJSONTests.test_encode_to_utf8  sX    *		>$djj????djjo%%%r   c                 |    d}t        j                  |      }t        j                  t        |            }||k(  sJ y )Nz{"obj": 31337}r.   r0   r   )r2   r   dec1dec2s       r   test_decode_from_unicodez+TestUltraJSONTests.test_decode_from_unicode  s8    (  /  ]!34t||r   c                      G d d      } G d d      } |       } |       |_         ||j                   _         t        j                  t        d      5  t	        j
                  |       d d d        y # 1 sw Y   y xY w)Nc                       e Zd ZdZy)8TestUltraJSONTests.test_encode_recursion_max.<locals>.O2r   N__name__
__module____qualname__memberrC   r   r   O2r        Fr   r
  c                       e Zd ZdZy)8TestUltraJSONTests.test_encode_recursion_max.<locals>.O1r   Nr  rC   r   r   O1r    r  r   r  Maximum recursion level reachedr   )r	  r   r   OverflowErrorr.   r/   )r2   r
  r  r   s       r   test_encode_recursion_maxz,TestUltraJSONTests.test_encode_recursion_max  si    	 		 	 !t&3#]]=0QR 	-m,	- 	- 	-s   A33A<c                     d}d}t        j                  t        |      5  t        j                  |       d d d        y # 1 sw Y   y xY w)Nzfdsa sda v9sa fdsaz0Unexpected character found when decoding 'false'r   r   r   r   r.   r0   )r2   	jibberishr   s      r   test_decode_jibberishz(TestUltraJSONTests.test_decode_jibberish  s=    (	@]]:S1 	)i(	) 	) 	)s	   ?Abroken_json)[{]}c                     d}t        j                  t        |      5  t        j                  |       d d d        y # 1 sw Y   y xY w)NzExpected object or valuer   r  )r2   r  r   s      r   test_decode_broken_jsonz*TestUltraJSONTests.test_decode_broken_json  s:     )]]:S1 	+k*	+ 	+ 	+	   =Atoo_big_charr  r  c                     t        j                  t        d      5  t        j                  |dz         d d d        y # 1 sw Y   y xY w)Nz#Reached object decoding depth limitr   i   r  )r2   r  s     r   test_decode_depth_too_bigz,TestUltraJSONTests.test_decode_depth_too_big  s9    ]]:-RS 	<lk:;	< 	< 	<s	   >A
bad_string)z"TESTINGz
"TESTING\"trufanc                     d}t        j                  t        |      5  t        j                  |       d d d        y # 1 sw Y   y xY w)NzSUnexpected character found when decoding|Unmatched ''"' when when decoding 'string'r   r  )r2   r!  r   s      r   test_decode_bad_stringz)TestUltraJSONTests.test_decode_bad_string  s?    : 	 ]]:S1 	*j)	* 	* 	*r  z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                     t        d      D ]N  }t        j                  t        t	        j
                  |            5  t        j                  |       d d d        P y # 1 sw Y   [xY w)Nr   r   )ranger   r   r   reescaper.   r0   )r2   r  err_msg_s       r   test_decode_broken_json_leakz/TestUltraJSONTests.test_decode_broken_json_leak  sV     t 	/Az71CD /!!+./ /	// /s   AA'	invalid_dict)z{{{{31337}}}}z{{{{"key":}}}}z{{{{"key"}}}}c                     d}t        j                  t        |      5  t        j                  |       d d d        y # 1 sw Y   y xY w)Nz{Key name of object must be 'string' when decoding 'object'|No ':' found when decoding object value|Expected object or valuer   r  )r2   r.  r   s      r   test_decode_invalid_dictz+TestUltraJSONTests.test_decode_invalid_dict  s?    ' 	
 ]]:S1 	,l+	, 	, 	,r  numeric_int_as_str31337z-31337c                 J    t        |      t        j                  |      k(  sJ y r   )r   r.   r0   )r2   r1  s     r   test_decode_numeric_intz*TestUltraJSONTests.test_decode_numeric_int
  s$     %&%*;*;<N*OOOOr   c                    d}t        j                  |      }|t        j                  |      k(  sJ |t        j                  |      k(  sJ |t        j
                  |      k(  sJ d}t        j                  |      }|t        j                  |      k(  sJ |t        j                  |      k(  sJ |t        j
                  |      k(  sJ dt        j                  d      k(  sJ y )Nz31337   1337 z"  \u0000\r\n "z   
 r   )r2   wrapped_inputr?   alone_inputs       r   test_encode_null_characterz-TestUltraJSONTests.test_encode_null_character  s    )""=1

6 2222M2222 1 1& 9999"";/djj0000K0000e//7777#u'8'8'IIIIr   c                 b    d}t        j                  |      t        j                  |      k(  sJ y )Nz"31337 \u0000 31337"r.   r0   r;   r<   )r2   r7  s     r   test_decode_null_characterz-TestUltraJSONTests.test_decode_null_character   s)    /  /4::m3LLLLr   c                     g d}t        j                  |      }|t        j                  |      k(  sJ |t        j                  |      k(  sJ y )N)    r>  r>  r>  r>  r>  r:   r2   
long_inputr?   s      r    test_encode_list_long_conversionz3TestUltraJSONTests.test_encode_list_long_conversion$  sK    

 "":.TZZ////U..v6666r   r@  r>  l    c                     t        j                  |      }|t        j                  |      k(  sJ |t        j                  |      k(  sJ |t        j
                  |      k(  sJ y r   r   r?  s      r   test_encode_long_conversionz.TestUltraJSONTests.test_encode_long_conversion2  sY    "":.TZZ////J////U..v6666r   bigNum                    c                     t        j                  |      }t        |      |k(  sJ t        j                  t
        d      5  t        j                  |      |k(  sJ 	 d d d        y # 1 sw Y   y xY wNz#Value is too big|Value is too smallr   )r.   r/   r   r   r   r   r0   )r2   rD  encodings      r   #test_dumps_ints_larger_than_maxsizez6TestUltraJSONTests.test_dumps_ints_larger_than_maxsize:  sf    $$V,6{h&&&]]7
 	9 $$X.&888		9 	9 	9s   A&&A/int_exp)1337E40z1.337E40z1337E+9z	1.337e+40z1.337E-4c                 ^    t        j                  |      t        j                  |      k(  sJ y r   r;  )r2   rK  s     r   test_decode_numeric_int_expz.TestUltraJSONTests.test_decode_numeric_int_expE  s&       )TZZ-@@@@r   c                     d}t        j                  t        |      5  t        j                  d        d d d        y # 1 sw Y   y xY w)Nz/a bytes-like object is required, not 'NoneType'r   )r   r   r   r.   r0   r2   r   s     r   test_loads_non_str_bytes_raisesz2TestUltraJSONTests.test_loads_non_str_bytes_raisesK  s8    ?]]9C0 	$d#	$ 	$ 	$r  r   )l   M+ l        l        l    c                 J    d| d}t        j                  |      d   |k(  sJ y )Nz{"id": r  idr.   r0   )r2   r   docs      r   &test_decode_number_with_32bit_sign_bitz9TestUltraJSONTests.test_decode_number_with_32bit_sign_bitP  s0     R   %d+s222r   c                     t        d      D ]2  }dj                         }|dz  dz  dz  }t        j                  |       4 y )Nrv      å   r*   )r(  encoder.   r/   )r2   r,  baseescape_inputs       r   test_encode_big_escapez)TestUltraJSONTests.test_encode_big_escapeW  sB    r 	,A??$D$;-1Ll+	,r   c                     t        d      D ]:  }dj                         }d}||dz  dz  dz  z   |z   }t        j                  |       < y )Nrv   rX     "rY  r*   )r(  rZ  r.   r0   )r2   r,  r[  quoter\  s        r   test_decode_big_escapez)TestUltraJSONTests.test_decode_big_escape^  sQ    r 	,A??$DE D4K$$6$:;eCLl+	,r   c                     ddi G fdd      } |       }t        j                  |      }t        j                  |      }|k(  sJ y )Nkeyr   c                       e Zd Z fdZy)1TestUltraJSONTests.test_to_dict.<locals>.DictTestc                     S r   rC   )r2   r   s    r   toDictz8TestUltraJSONTests.test_to_dict.<locals>.DictTest.toDictk  s    r   N)r  r  r  rg  )r   s   r   DictTestre  j  s    r   rh  rJ   )r2   rh  or?   r   r   s        @r   test_to_dictzTestUltraJSONTests.test_to_dictg  sJ    EN	 	 J""1%'axxr   c           	      &    G fdd      d}t        j                  t        |      5  t        j                   d             d d d        dt        j                   d      t
              k(  sJ d }d	t        j                   d      |      k(  sJ d
 }t        j                  t        d      5  t        j                   d      |       d d d        d }t        j                  t        j                   d      |            dk(  sJ d }t        j                  t        j                  t        j                  ddd                  t        j                  t        j                   d      |            k(  sJ  d       d      g}t        j                  t        j                  |t
                    t        j                  t        j                  |t
                    k(  sJ y # 1 sw Y   xY w# 1 sw Y   2xY w)Nc                   6    e Zd ZddZe fd       ZdefdZy)<TestUltraJSONTests.test_default_handler.<locals>._TestObjectreturnNc                     || _         y r   )r   )r2   r   s     r   __init__zETestUltraJSONTests.test_default_handler.<locals>._TestObject.__init__v  s	    r   c                      d      S )Nrecursive_attrrC   )r2   _TestObjects    r   rr  zKTestUltraJSONTests.test_default_handler.<locals>._TestObject.recursive_attry  s    "#344r   c                 ,    t        | j                        S r   )r   r   r2   s    r   __str__zDTestUltraJSONTests.test_default_handler.<locals>._TestObject.__str__}  s    488}$r   rn  N)r  r  r  rp  propertyrr  r   rv  )rs  s   r   rs  rm  u  s(     5 5% %r   rs  r  r   r   z"foo")default_handlerc                      y)NfoobarrC   r,  s    r   
my_handlerz;TestUltraJSONTests.test_default_handler.<locals>.my_handler  s    r   z"foobar"c                     t        d      )NI raise for anything)r   r|  s    r   my_handler_raiseszBTestUltraJSONTests.test_default_handler.<locals>.my_handler_raises  s    233r   r  c                      y)N*   rC   r|  s    r   my_int_handlerz?TestUltraJSONTests.test_default_handler.<locals>.my_int_handler  s    r   r  c                 0    t        j                   ddd      S )Nr   r*   r+   )r   r|  s    r   my_obj_handlerz?TestUltraJSONTests.test_default_handler.<locals>.my_obj_handler  s    $$T1a00r   r   r*   r+   bar)default)r   r   r  r.   r/   r   r   r0   r   r;   r<   r   )r2   r   r}  r  r  r  obj_listrs  s          @r   test_default_handlerz'TestUltraJSONTests.test_default_handlert  s   		% 		% 0]]=4 	2k%01	2%++K,>PSTTTT	 U..

 
 	
 
	4 ]]9,BC 	Uk%0BST	U	 !!+e"4nU 	
	1   h//a;<
k%0.Q

 	
 
  &E(:;zz$**Xs;<@Q@Qh<A
 
 	
 
K	2 	2	U 	Us   G98H9HHc                      G d d      } |dddd      }t        j                  t        j                  |            ddddk(  sJ y )	Nc                       e Zd ZddZd Zy):TestUltraJSONTests.test_encode_object.<locals>._TestObjectNc                 <    || _         || _        || _        || _        y r   rI   b_cr   )r2   rI   r  r  r   s        r   rp  zCTestUltraJSONTests.test_encode_object.<locals>._TestObject.__init__  s    r   c                      yrh   rC   ru  s    r   ez<TestUltraJSONTests.test_encode_object.<locals>._TestObject.e  s    r   rw  )r  r  r  rp  r  rC   r   r   rs  r    s    r   rs  r'   r*   r+   r   r  )rI   r  r   rc   )r2   rs  test_objects      r   test_encode_objectz%TestUltraJSONTests.test_encode_object  sU    	 	 "AqA6  !2!2;!?@E
 
 	
 
r   c                 .    t         j                  dk(  sJ y )Nzpandas._libs.json)r.   r  ru  s    r   test_ujson__name__z%TestUltraJSONTests.test_ujson__name__  s    ~~!4444r   N)Ir  r  r  r   markskipifr   r6   parametrizerF   rK   rW   rY   r^   re   mathpirk   ro   rs   rx   r|   r   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-  r0  r4  r9  r<  rA  rC  rJ  rN  rQ  rV  r]  ra  rj  r  r  r  rC   r   r   r!   r!   7   s   [[D)OP5 Q5n [[^dE];5 <52 [[X	K [[]VV,<=R >R [[477(+MM
9:> [[	
	J	JC [[	KMcd&	&0&&&(= [[	
6677 [[_.AB: C::: [[	-(--1a0-(--BF2ST"	"
"" [[#}r}}U3RVVRVVbffWMKK4(&- ) [[	
++
 [[^c3Z8< 9< [[	
	*	* [[	

/
/
 [[	
,, [[w1PPJ M7 [[\,?AU+VW7 X7 [[X|'<=9 >9 [[NAA$
 [[U$KL3 M3,,4
l
&5r   r!   c                       e Zd Zej                  j                  dddg      d        Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zej                  j                  dg d      d        Zd Zd Zd Zd Zy)TestNumpyJSONTests
bool_inputTFc                 t    t        |      }t        j                  t        j                  |            |k(  sJ y r   )boolr.   r0   r/   )r2   r  r  s      r   	test_boolzTestNumpyJSONTests.test_bool  s0      !2!21!56!;;;r   c                     t        j                  g dt              }t        j                  t        j                  t        j
                  |            t              }t        j                  ||       y )N)TFTTFTFFdtype)r[   arrayr  r.   r0   r/   rR   assert_numpy_array_equal)r2   
bool_arrayr?   s      r   test_bool_arrayz"TestNumpyJSONTests.test_bool_array  sN    XX@

 %++E,=,=j,IJRVW
##J7r   c                     t        j                  |      j                  } |d      } |t        j                  t        j
                  |                  |k(  sJ y )Nr'   r[   r  typer.   r0   r/   r2   any_int_numpy_dtypeklassr]   s       r   test_intzTestNumpyJSONTests.test_int  sI    ,-22AhU&&u'8'8'=>?3FFFr   c                    t        j                  dt              }|j                  |      }t        j                  t        j                  t        j                  |            |      }t        j                  ||       y )Nd   r  )
r[   aranger   astyper  r.   r0   r/   rR   r  )r2   r  arr	arr_input
arr_outputs        r   test_int_arrayz!TestNumpyJSONTests.test_int_array  s]    ii3'JJ23	XXe//	:;CV

 	##Iz:r   c                 n   |dv rt         st        j                  d       t        j                  |      j
                  }|dk(  r t        j                  d      j                  }nt        j                  |      j                  } |t        j                  t        j                  |                  |k(  sJ y )N)int64uint64z-Cannot test 64-bit integer on 32-bit platformr  r  )r   r   skipr[   r  r  iinfomaxr.   r0   r/   r  s       r   test_int_maxzTestNumpyJSONTests.test_int_max  s    "55dKKGH,-22 (*((7#''C((./33CU&&u'8'8'=>?3FFFr   c                     t        j                  |      j                  } |d      } |t        j                  t        j
                  |                  |k(  sJ y )NgJY8p@r  r2   float_numpy_dtyper  r]   s       r   
test_floatzTestNumpyJSONTests.test_float  sI    *+00HoU&&u'8'8'=>?3FFFr   c                 
   t        j                  dddt              }|j                  |      }t        j                  t        j                  t        j                  |d            |      }t        j                  ||       y )Ng      )@gףp=
7g@geX?r  r$   r%   )
r[   r  floatr  r  r.   r0   r/   rR   assert_almost_equal)r2   r  r  float_inputfloat_outputs        r   test_float_arrayz#TestNumpyJSONTests.test_float_array  sc    iiffE:jj!23xxe//bQR#
 	{L9r   c           
         t        j                  |      j                  } |t        j                  |      j                  dz        }t        j                   |t        j                  t        j                  |d                  |       y )Nrv   r$   r%   )
r[   r  r  finfor  rR   r  r.   r0   r/   r  s       r   test_float_maxz!TestNumpyJSONTests.test_float_max  sg    *+00BHH./33b89
%##E$5$5cB$OPQSV	
r   c           	          t        j                  d      }|j                  d      }t        j                  t        j
                  t        j                  t        j                  |                  |       y )N`   )r*   r*   r*   r*   r+   r*   	r[   r  reshaperR   r  r  r.   r0   r/   r2   r  s     r   test_array_basicz#TestNumpyJSONTests.test_array_basic  sP    iimkk,-
##HHU&&u'8'8'=>?	
r   shape))rv   rv   ri   ri   r   )r  r'   c           	          t        j                  d      }|j                  |      }t        j                  t        j
                  t        j                  t        j                  |                  |       y )Nr  r  )r2   r  r  s      r   test_array_reshapedz&TestNumpyJSONTests.test_array_reshaped  sO    iinkk% 
##HHU&&u'8'8'=>?	
r   c           
         dg i i g ddddgddig	}t        j                  |t              }t        j                  t        j                  t        j
                  |            t              }t        j                  ||       y )NrI   r  g33333sX@r  rc  r   r  )r[   r  objectr.   r0   r/   rR   r  )r2   arr_listr  results       r   test_array_listz"TestNumpyJSONTests.test_array_list  st    #JEN

 hhxv.%++E,=,=c,BC6R
##FC0r   c                    t         j                  }t        j                  ddd|      }|j                  d      }t        j                  t        j                  t        j                  |            |      }t        j                  ||       y )NgrhY@gX9vi@r'   r  r  )
r[   float32r  r  r  r.   r0   r/   rR   r  )r2   r  r  arr_outs       r   test_array_floatz#TestNumpyJSONTests.test_array_float&  sc    

ii!59kk)$((5,,U->->s-CDER
sG,r   c                     t        j                  d      }t        j                  t        |      5  t        j                  t        j                  d             d d d        y # 1 sw Y   y xY w)Nz>array(1) (numpy-scalar) is not JSON serializable at the momentr   r'   )	r)  r*  r   r   r   r.   r/   r[   r  rP  s     r   test_0d_arrayz TestNumpyJSONTests.test_0d_array/  sN    iiL
 ]]9C0 	+bhhqk*	+ 	+ 	+   )A##A,c                     t        j                  d      }t        j                  t        |      5  t        j                  t        j                  d             d d d        y # 1 sw Y   y xY w)Nz@1234.5.* \(numpy-scalar\) is not JSON serializable at the momentr   g     J@)	r)  compiler   r   r   r.   r/   r[   
longdoublerP  s     r   test_array_long_doublez)TestNumpyJSONTests.test_array_long_double7  sO    jjP
 ]]9C0 	5bmmF34	5 	5 	5r  N)r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rC   r   r   r  r    s    [[\D%=9< :<8G;GG:

 [[W&EF
 G
1 -+5r   r  c                   8   e Zd Zd Zd Zd Zd Zd Zd Ze	j                  j                  dg d      d	        Ze	j                  j                  d
g dgg      d        Ze	j                  j                  dddg      d        Ze	j                  j                  dd d g      d        Zd Zd Ze	j                  j                  dd d g      d        Ze	j                  j                  dg d      e	j                  j                  dddg      d               Zd Zd  Zd! Ze	j                  j                  d" ed#$       ed$       ed%d&d&'       ed%d(d)'       edd&*       ed+       edd,       eddd-       ed.d.d.-      g	      d/        Zd0 Zy1)2TestPandasJSONTestsc                 d   t         j                  }t        g dg dgddgg d|      }|i nd|i}|j                  |k(  j	                         sJ t        j                  t        j                  |fi |      }|j                  |k(  j	                         sJ |dk(  rt        |      }t        di |}nt        |      }|d	k(  rg d
|_	        ddg|_
        n$|dk(  r
ddg|_
        n|dk(  r|j                         }|j                  |k(  j	                         sJ t        j                  ||       y )Nr'   r*   r+   r   ri      rI   r  xyz)r   columnsr  r   r   r   )r   r'   r*   r   r'   r   r   rC   )r[   r  r   dtypesallr.   r0   r/   r   r  r   	transposerR   assert_frame_equal)r2   r   r  dfr>   r?   r   s          r   test_dataframez"TestPandasJSONTests.test_dataframe@  s*   	"*#	
 %n8V2D		U"'')))""5#4#4R#I=#IJ		U"''))) Wf%C%%Fv&F X"BJ1vBHy 1vBHwB		U"'')))
fb)r   c                 l   t        g dg dgddgg d      }||j                         d}|i nd|i}t        j                  t        j                  |fi |      t        j                  t        j                  |fi |      d}t        j                  t        j                  |fi |      |k(  sJ y )	Nr  r  rI   r  r  )r   r  )df1df2r   )r   copyr.   r0   r/   )r2   r   r  nestedkwargsexps         r   test_dataframe_nestedz)TestPandasJSONTests.test_dataframe_nestedb  s    	"3*o
 BGGI.~Hf+= $$U%6%6r%DV%DE$$U%6%6r%DV%DE
   !2!26!DV!DELLLr   c                    t         j                  }t        g ddg d|      j                         }|j                  |k(  sJ |i nd|i}t        j                  t        j                  |fi |      }|j                  |k(  sJ |dk(  rt        |      }t        di |}nt        |      }|dv r!d |_	        |j                         }g d|_
        n|d	v rd |_	        g d
|_
        |j                  |k(  sJ t        j                  ||       y )Nrv   rq      (   2   <   seriesr     r   rz   rv   r$   )namer   r  r   r   )Nr   )678r   1015)r   r   )r   r'   r*   r+   r   ri   rC   )r[   r  r	   sort_valuesr  r.   r0   r/   r   r  r   rR   assert_series_equal)r2   r   r  r   r>   r?   r   s          r   test_serieszTestPandasJSONTests.test_seriesp  s   $&	

 +- 	
 ww%$n8V2D""5#4#4Q#H-#HIww%Wf%C]c]FF^F_$AF'')F6AG,,AF(AGww%
vq)r   c                 |   t        g ddg d      j                         }||j                         d}|i nd|i}t        j                  t        j
                  |fi |      t        j                  t        j
                  |fi |      d}t        j                  t        j
                  |fi |      |k(  sJ y )Nr  r  r	  )r  r   )s1s2r   )r	   r  r  r.   r0   r/   )r2   r   r   r  r  r   s         r   test_series_nestedz&TestPandasJSONTests.test_series_nested  s    $8;O

+- 	
 *~Hf+= ##E$5$5a$B6$BC##E$5$5a$B6$BC
   !2!26!DV!DELLLr   c                    t        g dd      }t        t        j                  t        j                  |            d      }t	        j
                  ||       t        t        j                  t        j                  |d                  }t        di |}t	        j
                  ||       |j                  |j                  k(  sJ t	        j
                  ||       |j                  |j                  k(  sJ t        t        j                  t        j                  |d            d      }t	        j
                  ||       t        t        j                  t        j                  |d            d      }t	        j
                  ||       t        t        j                  t        j                  |d            d      }t	        j
                  ||       y )	N)   -      b   +      r   )r  r   )r   r   r   rC   )r   r.   r0   r/   rR   assert_index_equalr   r  )r2   ir?   r   s       r   
test_indexzTestPandasJSONTests.test_index  sg   *9 u(():):1)=>WM
a(%++E,=,=a,PQR
a(vv$$$
a(vv$$$e//(CD7
 	a(e//)DEG
 	a(e//'BC'
 	a(r   c                    d}t        t        t        dd            d       }t        j                  ||      }t        t        j                  t        j                  |                  }t        j                  ||       t        t
        j                  j                  d      j                  t        |            |      }t        t        j                  t        j                  ||                  }|j                  j                   j#                  t
        j$                        }t        |      |_        t        j&                  ||       y )	Nr   z1/1/2000rq   )periodsfreqr   r*   r   )r   listr   r.   r/   r[   r  r0   rR   r  r	   randomdefault_rngstandard_normallenr   r   r  r  r  )r2   r   rngr4   r5   ts
idx_valuess          r   test_datetime_indexz'TestPandasJSONTests.test_datetime_index  s    	 DJ!CD4P##C9=):):7)C DE
c7+BII))!,<<SXFcR**5+<+<R9+UVW]]))00:
%j1
r7+r   invalid_arr)z[31337,]z[,31337]z[]]z[,]c                     d}t        j                  t        |      5  t        j                  |       d d d        y # 1 sw Y   y xY w)Nz[Expected object or value|Trailing data|Unexpected character found when decoding array valuer   r  )r2   r0  r   s      r   test_decode_invalid_arrayz-TestPandasJSONTests.test_decode_invalid_array  s@    C 	 ]]:S1 	+k*	+ 	+ 	+r  r  r   c                 J    |t        j                  t        |            k(  sJ y r   r   r  s     r   test_decode_arrayz%TestPandasJSONTests.test_decode_array  s    e''C1111r   extreme_numr>  r   c                 J    |t        j                  t        |            k(  sJ y r   r   )r2   r5  s     r   test_decode_extreme_numbersz/TestPandasJSONTests.test_decode_extreme_numbers  s     e//K0@AAAAr   too_extreme_numrE  rF  c                     t        j                  t        d      5  t        j                  |       d d d        y # 1 sw Y   y xY wrH  r  )r2   r8  s     r   test_decode_too_extreme_numbersz3TestPandasJSONTests.test_decode_too_extreme_numbers  s9    ]]7
 	/ o.		/ 	/ 	/	   ;Ac                 8    i t        j                  d      k(  sJ y )Nz{}
	 rT  ru  s    r   %test_decode_with_trailing_whitespacesz9TestPandasJSONTests.test_decode_with_trailing_whitespaces  s    U&&y1111r   c                     t        j                  t        d      5  t        j                  d       d d d        y # 1 sw Y   y xY w)NzTrailing datar   z{}
	 ar  ru  s    r   )test_decode_with_trailing_non_whitespacesz=TestPandasJSONTests.test_decode_with_trailing_non_whitespaces  s3    ]]:_= 	*j)	* 	* 	*r;  valuec                     t        j                  t        d      5  t        j                  |       d d d        y # 1 sw Y   y xY wrH  r  )r2   r@  s     r   test_decode_array_with_big_intz2TestPandasJSONTests.test_decode_array_with_big_int  s9    ]]7
 	% e$		% 	% 	%r;  float_number)	g3ӭ?gRC?gB4?g
LO?g	j?g[_$?gk	?g}?5^I?g?signr~   r'   c                 v    ||z  }t        j                  |t        j                  t	        |            d       y )NgV瞯<)rtol)rR   r  r.   r0   r   )r2   rD  rC  s      r   test_decode_floating_pointz.TestPandasJSONTests.test_decode_floating_point  s3      	
%++C,=>U	
r   c                     t               }t        d      D ]  }|j                  |        t        j                  |       y )Ni )setr(  addr.   r/   )r2   r   r  s      r   test_encode_big_setz'TestPandasJSONTests.test_encode_big_set  s7    Ev 	AEE!H	 	!r   c                 H    dt        j                  t                     k(  sJ y )Nz[])r.   r/   rI  ru  s    r   test_encode_empty_setz)TestPandasJSONTests.test_encode_empty_set  s    u((////r   c                 z    h d}t        j                  |      }t        j                  |      }|D ]  }||v rJ  y )N>	   r'   r*   r+   r   ri   r  r
  r   rz   rJ   )r2   r   r   r   r   s        r   test_encode_setz#TestPandasJSONTests.test_encode_set  sA    '"$ 	A6M6	r   tdin  )days   ri   )hoursminutessecondsrq   r  )rQ  nanoseconds)rV  )microsecondsrV  )millisecondsrW  rV  i  c                 h    t        j                  |d      }d|j                          d}||k(  sJ y )NT)	iso_datesr   r   )r2   rP  r  r   s       r   test_encode_timedelta_isoz-TestPandasJSONTests.test_encode_timedelta_iso&  s9      ""26r||~&a(!!!r   c                 d    t        ddgd      }t        |      }|j                         dk(  sJ y )Nz
2022-04-06z
2022-04-07Dr$  r&  z{})r   r   to_json)r2   pr  s      r   test_encode_periodindexz+TestPandasJSONTests.test_encode_periodindex;  s1    |43?Qzz|t###r   N)r  r  r  r  r  r  r  r!  r/  r   r  r  r2  r4  r7  r:  r=  r?  rB  rG  rK  rM  rO  r
   r[  r`  rC   r   r   r  r  ?  s    *DM*@M)>," [[	
++ [[UR%M22 32 [[]-@BV,WXB YB [[.E7z0KL/ M/2* [[W%hZ&AB% C% [[
	
 [[Vb!W-
 .
0 [[32B15BB721-!$1!411!D3ScJ
	
""$r   r  )%r   r   r,   r;   rP   r  r)  r   r   numpyr[   r   r   pandas._libs.json_libsr.   pandas.compatr   pandasr   r   r   r   r   r	   r
   r   r   pandas._testing_testingrR   r   fixturer   r!   r  r  rC   r   r   <module>ri     s          	      ! ! 
 
 
 -  8H
5 H
5Vz5 z5z@$ @$r   