o
    Û­jHŽ  ã                   @   s  d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z
d dlZd dlZd dlm  mZ d dlmZ d dlmZmZmZmZmZmZmZmZmZ d dlmZ dd„ Zej g d¢d�dd	„ ƒZ!G d
d„ dƒZ"G dd„ dƒZ#G dd„ dƒZ$dS )é    N)ÚIS64)	Ú	DataFrameÚDatetimeIndexÚIndexÚNaTÚPeriodIndexÚSeriesÚ	TimedeltaÚ	TimestampÚ
date_rangec                 C   s   dd„ |   ¡ D ƒS )zÉ
    Sanitize dictionary for JSON by converting all keys to strings.

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

    Returns
    -------
    cleaned_dict : dict
    c                 S   s   i | ]	\}}t |ƒ|“qS © )Ústr)Ú.0ÚkÚvr   r   ú\/var/www/html/CropPilot/venv/lib/python3.10/site-packages/pandas/tests/io/json/test_ujson.pyÚ
<dictcomp>-   s    z_clean_dict.<locals>.<dictcomp>)Úitems©Údr   r   r   Ú_clean_dict    s   r   )NÚsplitÚrecordsÚvaluesÚindex)Úparamsc                 C   s   | j S ©N)Úparam)Úrequestr   r   r   Úorient0   s   r   c                   @   s|  e Zd Zejje dd�dd„ ƒZej dddg¡dd	„ ƒZ	ej d
g d¢¡dd„ ƒZ
dd„ Zdd„ Zdd„ Zej dddg¡dd„ ƒZej dejej g¡dd„ ƒZdd„ Zdd„ Zd d!„ Zd"d#„ Zej d$g d%¢¡d&d'„ ƒZd(d)„ Zej d*d+d,g¡d-d.„ ƒZd/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Zd7d8„ Zd9d:„ Zej d;g d<¢¡d=d>„ ƒZd?d@„ Z dAdB„ Z!ej dCg dD¢¡dEdF„ ƒZ"dGdH„ Z#dIdJ„ Z$ej dKe% &¡ e% &dLdMdN¡e% &dOdPdQdR¡g¡dSdT„ ƒZ'dUdV„ Z(dWdX„ Z)ej dYe*e+ ,dZ¡e+j-e+j.e+j. g¡d[d\„ ƒZ/d]d^„ Z0d_d`„ Z1dadb„ Z2dcdd„ Z3dedf„ Z4ej dgg dh¢¡didj„ ƒZ5ej dkdldmg¡dndo„ ƒZ6ej dpg dq¢¡drds„ ƒZ7ej dtg du¢¡dvdw„ ƒZ8ej dxg dy¢¡dzd{„ ƒZ9ej d|d}d~g¡dd€„ ƒZ:d�d‚„ Z;dƒd„„ Z<d…d†„ Z=ej d‡dˆd‰g¡dŠd‹„ ƒZ>ej dŒd�dŽg¡d�d�„ ƒZ?ej d‘g d’¢¡d“d”„ ƒZ@d•d–„ ZAej d—g d˜¢¡d™dš„ ƒZBd›dœ„ ZCd�dž„ ZDdŸd „ ZEd¡d¢„ ZFd£d¤„ ZGd¥d¦„ ZHd§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s€J ‚t |¡}|dks‹J ‚t  d¡}tj|dd�}|dks�J ‚t |¡}|dks¨J ‚t  d¡}tj|dd�}|dksºJ ‚t |¡}|dksÅJ ‚t  d¡}tj|dd�}|dks×J ‚t |¡}|dksâJ ‚d S )Nz	1337.1337é   ©Údouble_precisiongç§èˆä”@z0.95é   ú1.0ç      ð?z0.94z0.9gÍÌÌÌÌÌì?z1.95z2.0g       @z-1.95z-2.0g       Àz0.995é   z0.9995é   z0.99999999999999944)ÚdecimalÚDecimalÚujsonÚujson_dumpsÚujson_loads©ÚselfÚsutÚencodedÚdecodedr   r   r   Útest_encode_decimal8   sN   















z&TestUltraJSONTests.test_encode_decimalÚensure_asciiTFc                    s>   d‰d}d}‡ ‡fdd„}||ƒ ||dd� ||dd� d S )	Nz"A string \ /   
  	 </script> &z,"A string \\ \/ \b \f \n \r \t <\/script> &"z;"A string \\ \/ \b \f \n \r \t \u003c\/script\u003e \u0026"c                    sJ   t jˆfdˆ i|¤Ž}|| ksJ ‚ˆt |¡ksJ ‚ˆt  |¡ks#J ‚d S )Nr5   ©r,   r-   ÚjsonÚloadsr.   )Úexpected_outputÚencode_kwargsÚoutput©r5   Ústring_inputr   r   Úhelperx   s   ÿÿÿz@TestUltraJSONTests.test_encode_string_conversion.<locals>.helperF)Úencode_html_charsTr   )r0   r5   Únot_html_encodedÚhtml_encodedr>   r   r<   r   Útest_encode_string_conversionp   s   ÿ
z0TestUltraJSONTests.test_encode_string_conversionÚlong_number)lüÿÿÿZ:�`¡7{ g#å_œçt¦ÂgÔŸpAª‚¿Ác                 C   s0   d|i}t j|dd�}t  |¡}||ksJ ‚d S )NÚar"   r#   ©r,   r-   r.   )r0   rC   r1   r2   r3   r   r   r   Útest_double_long_numbersŠ   s   
z+TestUltraJSONTests.test_double_long_numbersc              	   C   s„   t j}dD ]:}t ||¡r?t ||¡�! t t d¡¡dks J ‚tjddd�dks+J ‚W d   ƒ  d S 1 s7w   Y   d S qd S )N)zit_IT.UTF-8ÚItalian_Italygòì‘ÄûË‡Lz4.78T©Úprecise_floatg…ëQ¸@)ÚlocaleÚ
LC_NUMERICÚtmÚcan_set_localeÚ
set_localer,   r.   r-   )r0   Úlc_categoryÚ
new_localer   r   r   Útest_encode_non_c_locale”   s   
þýüÿz+TestUltraJSONTests.test_encode_non_c_localec                 C   s0   ddi}t  |¡}t j|dd�}||ksJ ‚d S )NrD   g=
×£p=@TrH   rE   r/   r   r   r   Ú test_decimal_decode_test_preciseŸ   s   
z3TestUltraJSONTests.test_decimal_decode_test_precisec                 C   sx   d}|t  t  |¡¡ksJ ‚d}|t  t  |¡¡ksJ ‚d}|t  t  |¡¡ks*J ‚d}t |t  t  |¡¡¡s:J ‚d S )NgœWw'&l¡7g0Žä.ÿ++g¹j7­Ö–¶gó¡?>¬úÓ¡)r,   r.   r-   ÚnpÚallclose)r0   Únumr   r   r   Ú#test_encode_double_tiny_exponential¥   s    z6TestUltraJSONTests.test_encode_double_tiny_exponentialÚunicode_keyÚkey1u   Ø¨Ù†c                 C   s$   |di}|t  t  |¡¡ksJ ‚d S )NÚvalue1©r,   r.   r-   )r0   rW   Úunicode_dictr   r   r   Ú"test_encode_dict_with_unicode_keys¯   ó   z5TestUltraJSONTests.test_encode_dict_with_unicode_keysÚdouble_inputc                 C   sJ   t  |¡}t|dƒtt |¡dƒksJ ‚t|dƒtt  |¡dƒks#J ‚d S ©Né   )r,   r-   Úroundr7   r8   r.   )r0   r^   r;   r   r   r   Útest_encode_double_conversion´   s   
"z0TestUltraJSONTests.test_encode_double_conversionc                 C   s   d}t  |¡}|dksJ ‚d S )Nr'   r&   ©r,   r-   )r0   Údecimal_inputr;   r   r   r   Útest_encode_with_decimal¼   s   
z+TestUltraJSONTests.test_encode_with_decimalc                 C   s@   g gggd }t  |¡}|t |¡ksJ ‚|t  |¡ksJ ‚d S )Né   r6   )r0   Únested_inputr;   r   r   r   Ú"test_encode_array_of_nested_arraysÂ   ó   
z5TestUltraJSONTests.test_encode_array_of_nested_arraysc                 C   s>   g d¢d }t  |¡}|t |¡ksJ ‚|t  |¡ksJ ‚d S )N)çcATšÞ@rj   rj   rj   é
   r6   )r0   Údoubles_inputr;   r   r   r   Útest_encode_array_of_doublesÉ   s   
z/TestUltraJSONTests.test_encode_array_of_doublesc                 C   s€   d}t j|dd�}|t |¡ksJ ‚|t  |¡ksJ ‚dD ] }t j||d�}t||ƒ}|t |¡ks4J ‚|t  |¡ks=J ‚qd S )Ng² )>@r"   r#   )r)   é	   )r,   r-   r7   r8   r.   ra   )r0   r^   r;   r$   Úrounded_inputr   r   r   Útest_double_precisionÐ   s   
ûz(TestUltraJSONTests.test_double_precisionÚinvalid_val)rf   éÿÿÿÿÚ9Nc                 C   s\   d}t |tƒr	tnt}d}tj||d�� tj||d� W d   ƒ d S 1 s'w   Y  d S )NgöF7Ýš>@z‹Invalid value '.*' for option 'double_precision', max is '15'|an integer is required \(got type |object cannot be interpreted as an integer©Úmatchr#   )Ú
isinstanceÚintÚ
ValueErrorÚ	TypeErrorÚpytestÚraisesr,   r-   )r0   rq   r^   Úexpected_exceptionÚmsgr   r   r   Útest_invalid_double_precisionÞ   s   
ÿ"ÿz0TestUltraJSONTests.test_invalid_double_precisionc                 C   sB   d}t  |¡}|t |¡ksJ ‚|t  |¡ksJ ‚|dksJ ‚d S )NzA string \ /   
  	z"A string \\ \/ \b \f \n \r \t"r6   )r0   r=   r;   r   r   r   Útest_encode_string_conversion2ò   s
   
z1TestUltraJSONTests.test_encode_string_conversion2Úunicode_inputu@   RÃ¤ksmÃ¶rgÃ¥s Ø§Ø³Ø§Ù…Ø© Ø¨Ù† Ù…Ø­Ù…Ø¯ Ø¨Ù† Ø¹ÙˆØ¶ Ø¨Ù† Ù„Ø§Ø¯Ù†õ
   Ã¦Â—Â¥Ã‘Âˆc                 C   s<   t  |¡}t  |¡}|t |¡ksJ ‚|t |¡ksJ ‚d S r   ©r,   r-   r.   r7   Údumpsr8   )r0   r€   ÚencÚdecr   r   r   Útest_encode_unicode_conversionú   s   

z1TestUltraJSONTests.test_encode_unicode_conversionc                 C   s:   d}t  |¡}t  |¡}||ksJ ‚|t |¡ksJ ‚d S )Nú)r,   r-   r.   r7   rƒ   )r0   Úescaped_inputr„   r…   r   r   r   Útest_encode_control_escaping  s
   

z/TestUltraJSONTests.test_encode_control_escapingc                 C   ó@   d}t  |¡}t  |¡}|t |¡ksJ ‚|t |¡ksJ ‚d S )Nu   Ã°Â�Â�Â†r‚   )r0   Úsurrogate_inputr„   r…   r   r   r   Ú"test_encode_unicode_surrogate_pair  ó
   

z5TestUltraJSONTests.test_encode_unicode_surrogate_pairc                 C   rŠ   )Nu   Ã°Â‘Â€Â°TRAILINGNORMALr‚   ©r0   Úfour_bytes_inputr„   r…   r   r   r   Útest_encode_unicode_4bytes_utf8  r�   z2TestUltraJSONTests.test_encode_unicode_4bytes_utf8c                 C   rŠ   )Nu   Ã³Â¿Â¿Â¿TRAILINGNORMALr‚   rŽ   r   r   r   Ú&test_encode_unicode_4bytes_utf8highest  s
   

z9TestUltraJSONTests.test_encode_unicode_4bytes_utf8highestc                 C   sH   d}d}t jt|d�� t |g¡ W d   ƒ d S 1 sw   Y  d S )Nu   'í«€'zT'utf-8' codec can't encode character '\\udac0' in position 1: surrogates not allowedrt   )rz   r{   ÚUnicodeEncodeErrorr,   r-   )r0   Ústringr}   r   r   r   Útest_encode_unicode_error&  s   ÿ"ÿz,TestUltraJSONTests.test_encode_unicode_errorc                 C   sN   g ggg}t  |¡}|t |¡ksJ ‚|t |¡ksJ ‚|t  |¡ks%J ‚d S r   ©r,   r-   r7   r8   rƒ   r.   )r0   Úarr_in_arr_inputr;   r   r   r   Útest_encode_array_in_array/  s
   

z-TestUltraJSONTests.test_encode_array_in_arrayÚ	num_input)éiz  i—…ÿÿìûÿÿÿ         c                 C   óD   t  |¡}|t |¡ksJ ‚|t |¡ksJ ‚|t  |¡ks J ‚d S r   r•   )r0   r˜   r;   r   r   r   Útest_encode_num_conversion7  s   
	z-TestUltraJSONTests.test_encode_num_conversionc                 C   ó:   g d¢}t  |¡}|t |¡ksJ ‚|t  |¡ksJ ‚d S )N)r%   r(   r)   é   r6   )r0   Ú
list_inputr;   r   r   r   Útest_encode_list_conversionE  s   
z.TestUltraJSONTests.test_encode_list_conversionc                 C   s@   dddddœ}t  |¡}|t |¡ksJ ‚|t  |¡ksJ ‚d S )Nr%   r(   r)   rž   )Úk1Úk2Úk3Úk4r6   )r0   Ú
dict_inputr;   r   r   r   Útest_encode_dict_conversionL  ri   z.TestUltraJSONTests.test_encode_dict_conversionÚbuiltin_value)NTFc                 C   r›   r   r•   )r0   r§   r;   r   r   r   Ú%test_encode_builtin_values_conversionS  s   
z8TestUltraJSONTests.test_encode_builtin_values_conversionc                 C   s\   t j  t ¡ ¡}tj|dd�}t | ¡ ¡}t|ƒt	 
|¡ks!J ‚t|ƒt |¡ks,J ‚d S )NÚs©Ú	date_unit)ÚdatetimeÚfromtimestampÚtimer,   r-   ÚcalendarÚtimegmÚutctimetuplerw   r7   r8   r.   )r0   Údatetime_inputr;   Úexpectedr   r   r   Útest_encode_datetime_conversionZ  s
   z2TestUltraJSONTests.test_encode_datetime_conversionc                 C   sn   t j t ¡ ¡}tj|dd�}|j|j|jdddf}t	 
|¡}t|ƒt |¡ks*J ‚t|ƒt |¡ks5J ‚d S )Nr©   rª   r   )r¬   Údater­   r®   r,   r-   ÚyearÚmonthÚdayr¯   r°   rw   r7   r8   r.   )r0   Ú
date_inputr;   Útupr³   r   r   r   Útest_encode_date_conversionb  s   
z.TestUltraJSONTests.test_encode_date_conversionÚtestr%   r(   r)   rk   é   r"   éË< c                 C   s*   t  |¡}d| ¡ › d�}||ksJ ‚d S )Nú"©r,   r-   Ú	isoformat©r0   r¼   r;   r³   r   r   r   Ú!test_encode_time_conversion_basicl  s   
z4TestUltraJSONTests.test_encode_time_conversion_basicc                 C   s>   t  ddddtj¡}t |¡}d| ¡ › d�}||ksJ ‚d S ©Nrk   r½   r"   r¾   r¿   )r¬   r®   ÚpytzÚutcr,   r-   rÁ   rÂ   r   r   r   Ú test_encode_time_conversion_pytzu  s   
z3TestUltraJSONTests.test_encode_time_conversion_pytzc                 C   sB   t  ddddtj ¡ ¡}t |¡}d| ¡ › d�}||ksJ ‚d S rÄ   )r¬   r®   ÚdateutilÚtzÚtzutcr,   r-   rÁ   rÂ   r   r   r   Ú$test_encode_time_conversion_dateutil|  s   
z7TestUltraJSONTests.test_encode_time_conversion_dateutilÚdecoded_inputr   c                 C   s   t  |¡dksJ dƒ‚d S )NÚnullzExpected nullrc   )r0   rÌ   r   r   r   Útest_encode_as_nullƒ  ó   z&TestUltraJSONTests.test_encode_as_nullc              	   C   sþ   t   ddddddd¡}t|ƒ d¡}t tj|dd	�¡}||jd
 ks%J ‚t tj|dd	�¡}||jd ks8J ‚t tj|dd	�¡}||jd ksKJ ‚t tj|dd	�¡}||jks\J ‚d}tjt	|d�� tj|dd	� W d   ƒ d S 1 sxw   Y  d S )NéÝ  é   é   é   r½   iÐI Únsr©   rª   i Êš;Úmsi@B Úuséè  z*Invalid value 'foo' for option 'date_unit'rt   Úfoo)
r¬   r
   Úas_unitr,   r.   r-   Ú_valuerz   r{   rx   )r0   ÚvalÚstampÚ	roundtripr}   r   r   r   Útest_datetime_units‰  s   "ÿz&TestUltraJSONTests.test_datetime_unitsc                 C   sH   d}t j|dd�}t  |¡}|tj|dd�ksJ ‚|t |¡ks"J ‚d S )Nr�   F)r5   r‚   )r0   Ú	unencodedr„   r…   r   r   r   Útest_encode_to_utf8�  s
   
z&TestUltraJSONTests.test_encode_to_utf8c                 C   s,   d}t  |¡}t  t|ƒ¡}||ksJ ‚d S )Nz{"obj": 31337}©r,   r.   r   )r0   r€   Údec1Údec2r   r   r   Útest_decode_from_unicode¦  s   
z+TestUltraJSONTests.test_decode_from_unicodec                 C   sp   G dd„ dƒ}G dd„ dƒ}|ƒ }|ƒ |_ ||j _ tjtdd�� t |¡ W d   ƒ d S 1 s1w   Y  d S )Nc                   @   ó   e Zd ZdZdS )z8TestUltraJSONTests.test_encode_recursion_max.<locals>.O2r   N©Ú__name__Ú
__module__Ú__qualname__Úmemberr   r   r   r   ÚO2±  ó    rë   c                   @   rå   )z8TestUltraJSONTests.test_encode_recursion_max.<locals>.O1r   Nræ   r   r   r   r   ÚO1´  rì   rí   úMaximum recursion level reachedrt   )rê   rz   r{   ÚOverflowErrorr,   r-   )r0   rë   rí   rÌ   r   r   r   Útest_encode_recursion_max®  s   "ÿz,TestUltraJSONTests.test_encode_recursion_maxc                 C   sF   d}d}t jt|d�� t |¡ W d   ƒ d S 1 sw   Y  d S )Nzfdsa sda v9sa fdsaz0Unexpected character found when decoding 'false'rt   ©rz   r{   rx   r,   r.   )r0   Ú	jibberishr}   r   r   r   Útest_decode_jibberish¾  s
   "ÿz(TestUltraJSONTests.test_decode_jibberishÚbroken_json)ú[Ú{ú]Ú}c                 C   óB   d}t jt|d�� t |¡ W d   ƒ d S 1 sw   Y  d S )NzExpected object or valuert   rñ   )r0   rô   r}   r   r   r   Útest_decode_broken_jsonÄ  s   
"ÿz*TestUltraJSONTests.test_decode_broken_jsonÚtoo_big_charrõ   rö   c                 C   sB   t jtdd�� t |d ¡ W d   ƒ d S 1 sw   Y  d S )Nz#Reached object decoding depth limitrt   i   rñ   )r0   rû   r   r   r   Útest_decode_depth_too_bigÒ  s   "ÿz,TestUltraJSONTests.test_decode_depth_too_bigÚ
bad_string)z"TESTINGz
"TESTING\"ÚtruÚfaÚnc                 C   rù   )NzSUnexpected character found when decoding|Unmatched ''"' when when decoding 'string'rt   rñ   )r0   rý   r}   r   r   r   Útest_decode_bad_string×  s
   ÿ"ÿz)TestUltraJSONTests.test_decode_bad_stringzbroken_json, err_msg))z{{1337:""}}z:Key name of object must be 'string' when decoding 'object')z
{{"key":"}z*Unmatched ''"' when when decoding 'string')z[[[truez8Unexpected character found when decoding array value (2)c              	   C   sP   t dƒD ]!}tjtt |¡d�� t |¡ W d   ƒ n1 s w   Y  qd S )Nr×   rt   )Úrangerz   r{   rx   ÚreÚescaper,   r.   )r0   rô   Úerr_msgÚ_r   r   r   Útest_decode_broken_json_leaké  s   ÿ€ÿz/TestUltraJSONTests.test_decode_broken_json_leakÚinvalid_dict)z{{{{31337}}}}z{{{{"key":}}}}z{{{{"key"}}}}c                 C   rù   )Nz{Key name of object must be 'string' when decoding 'object'|No ':' found when decoding object value|Expected object or valuert   rñ   )r0   r  r}   r   r   r   Útest_decode_invalid_dictù  s
   
ÿ"ÿz+TestUltraJSONTests.test_decode_invalid_dictÚnumeric_int_as_strÚ31337z-31337c                 C   s   t |ƒt |¡ksJ ‚d S r   )rw   r,   r.   )r0   r
  r   r   r   Útest_decode_numeric_int
  rÏ   z*TestUltraJSONTests.test_decode_numeric_intc                 C   sž   d}t  |¡}|t |¡ksJ ‚|t |¡ksJ ‚|t  |¡ks"J ‚d}t  |¡}|t |¡ks2J ‚|t |¡ks;J ‚|t  |¡ksDJ ‚dt  d¡ksMJ ‚d S )Nz31337   1337ú z"  \u0000\r\n "z   
 r•   )r0   Úwrapped_inputr;   Úalone_inputr   r   r   Útest_encode_null_character  s   

z-TestUltraJSONTests.test_encode_null_characterc                 C   s    d}t  |¡t |¡ksJ ‚d S )Nz"31337 \u0000 31337"©r,   r.   r7   r8   )r0   r  r   r   r   Útest_decode_null_character   s   z-TestUltraJSONTests.test_decode_null_characterc                 C   r�   )N)ì   ÿÿÿÿ r  r  r  r  r  r6   ©r0   Ú
long_inputr;   r   r   r   Ú test_encode_list_long_conversion$  s   
z3TestUltraJSONTests.test_encode_list_long_conversionr  r  l   ÿÿÿÿ c                 C   r›   r   r•   r  r   r   r   Útest_encode_long_conversion2  s   
z.TestUltraJSONTests.test_encode_long_conversionÚbigNumì            ìûÿÿÿ        c                 C   s`   t  |¡}t|ƒ|ksJ ‚tjtdd�� t  |¡|ksJ ‚W d   ƒ d S 1 s)w   Y  d S ©Nz#Value is too big|Value is too smallrt   )r,   r-   r   rz   r{   rx   r.   )r0   r  Úencodingr   r   r   Ú#test_dumps_ints_larger_than_maxsize:  s   
þ"üz6TestUltraJSONTests.test_dumps_ints_larger_than_maxsizeÚint_exp)Ú1337E40z1.337E40z1337E+9z	1.337e+40z1.337E-4c                 C   s   t  |¡t |¡ksJ ‚d S r   r  )r0   r  r   r   r   Útest_decode_numeric_int_expE  s   z.TestUltraJSONTests.test_decode_numeric_int_expc                 C   sB   d}t jt|d�� t d ¡ W d   ƒ d S 1 sw   Y  d S )Nz/a bytes-like object is required, not 'NoneType'rt   )rz   r{   ry   r,   r.   ©r0   r}   r   r   r   Útest_loads_non_str_bytes_raisesK  s   "ÿz2TestUltraJSONTests.test_loads_non_str_bytes_raisesrÛ   )l   £Mö+ l        l        l   ÿÿ c                 C   s&   d|› d�}t  |¡d |ksJ ‚d S )Nz{"id": rø   Úid©r,   r.   )r0   rÛ   Údocr   r   r   Ú&test_decode_number_with_32bit_sign_bitP  s   z9TestUltraJSONTests.test_decode_number_with_32bit_sign_bitc                 C   s4   t dƒD ]}d ¡ }|d d d }t |¡ qd S )Nrk   õ   Ã¥é   r(   )r  Úencoder,   r-   )r0   r  ÚbaseÚescape_inputr   r   r   Útest_encode_big_escapeW  s
   ýz)TestUltraJSONTests.test_encode_big_escapec                 C   s@   t dƒD ]}d ¡ }d}||d d d  | }t |¡ qd S )Nrk   r'  ó   "r(  r(   )r  r)  r,   r.   )r0   r  r*  Úquoter+  r   r   r   Útest_decode_big_escape^  s   ûz)TestUltraJSONTests.test_decode_big_escapec                    sD   ddi‰ G ‡ fdd„dƒ}|ƒ }t  |¡}t  |¡}|ˆ ks J ‚d S )NÚkeyr™   c                       s   e Zd Z‡ fdd„ZdS )z1TestUltraJSONTests.test_to_dict.<locals>.DictTestc                    s   ˆ S r   r   ©r0   r   r   r   ÚtoDictk  ó   z8TestUltraJSONTests.test_to_dict.<locals>.DictTest.toDictN)rç   rè   ré   r2  r   r   r   r   ÚDictTestj  s    r4  rE   )r0   r4  Úor;   r…   r   r   r   Útest_to_dictg  s   

zTestUltraJSONTests.test_to_dictc              	      s|  G ‡ fdd„dƒ‰ d}t jt|d�� t ˆ dƒ¡ W d   ƒ n1 s$w   Y  dtjˆ dƒtd�ks6J ‚dd	„ }d
tjˆ dƒ|d�ksGJ ‚dd„ }t jtdd�� tjˆ dƒ|d� W d   ƒ n1 sfw   Y  dd„ }t tjˆ dƒ|d�¡dksJ ‚dd„ }t t t ddd¡¡¡t tjˆ dƒ|d�¡ksžJ ‚ˆ dƒˆ dƒg}t	 
t	j|td�¡t tj|td�¡ks¼J ‚d S )Nc                       s4   e Zd Zd	dd„Ze‡ fdd„ƒZdefdd„ZdS )
z<TestUltraJSONTests.test_default_handler.<locals>._TestObjectÚreturnNc                 S   s
   || _ d S r   )rÛ   )r0   rÛ   r   r   r   Ú__init__v  ó   
zETestUltraJSONTests.test_default_handler.<locals>._TestObject.__init__c                    s   ˆ dƒS )NÚrecursive_attrr   r1  ©Ú_TestObjectr   r   r:  y  s   zKTestUltraJSONTests.test_default_handler.<locals>._TestObject.recursive_attrc                 S   s
   t | jƒS r   )r   rÛ   r1  r   r   r   Ú__str__}  r9  zDTestUltraJSONTests.test_default_handler.<locals>._TestObject.__str__©r7  N)rç   rè   ré   r8  Úpropertyr:  r   r=  r   r;  r   r   r<  u  s
    
r<  rî   rt   rØ   z"foo")Údefault_handlerc                 S   ó   dS )NÚfoobarr   ©r  r   r   r   Ú
my_handler…  r3  z;TestUltraJSONTests.test_default_handler.<locals>.my_handlerz"foobar"c                 S   s   t dƒ‚)NúI raise for anything)ry   rC  r   r   r   Úmy_handler_raisesŒ  s   zBTestUltraJSONTests.test_default_handler.<locals>.my_handler_raisesrE  c                 S   rA  )Né*   r   rC  r   r   r   Úmy_int_handler’  r3  z?TestUltraJSONTests.test_default_handler.<locals>.my_int_handlerrG  c                 S   s   t   ddd¡S )NrÐ   r(   r)   )r¬   rC  r   r   r   Úmy_obj_handlerœ  s   z?TestUltraJSONTests.test_default_handler.<locals>.my_obj_handlerrÐ   r(   r)   Úbar)Údefault)rz   r{   rï   r,   r-   r   ry   r.   r¬   r7   r8   rƒ   )r0   r}   rD  rF  rH  rI  Úobj_listr   r;  r   Útest_default_handlert  s@   ÿÿÿÿýÿÿþÿz'TestUltraJSONTests.test_default_handlerc                 C   sB   G dd„ dƒ}|ddddd�}t  t  |¡¡ddddœksJ ‚d S )	Nc                   @   s   e Zd Zddd„Zdd„ ZdS )z:TestUltraJSONTests.test_encode_object.<locals>._TestObjectr7  Nc                 S   s   || _ || _|| _|| _d S r   ©rD   ÚbÚ_cr   )r0   rD   rO  rP  r   r   r   r   r8  ¬  s   
zCTestUltraJSONTests.test_encode_object.<locals>._TestObject.__init__c                 S   rA  r_   r   r1  r   r   r   Úe²  r3  z<TestUltraJSONTests.test_encode_object.<locals>._TestObject.er>  )rç   rè   ré   r8  rQ  r   r   r   r   r<  «  s    
r<  r%   r(   r)   rž   rN  )rD   rO  r   rZ   )r0   r<  Útest_objectr   r   r   Útest_encode_objectª  s   ýz%TestUltraJSONTests.test_encode_objectc                 C   s   t jdksJ ‚d S )Nzpandas._libs.json)r,   rç   r1  r   r   r   Útest_ujson__name__½  s   z%TestUltraJSONTests.test_ujson__name__N)Irç   rè   ré   rz   ÚmarkÚskipifr   r4   ÚparametrizerB   rF   rQ   rR   rV   r\   ÚmathÚpirb   re   rh   rm   rp   r~   r   r†   r‰   rŒ   r�   r‘   r”   r—   rœ   r    r¦   r¨   r´   r»   r¬   r®   rÃ   rÇ   rË   r   rS   Ú
datetime64ÚnanÚinfrÎ   rÞ   rà   rä   rð   ró   rú   rü   r  r  r	  r  r  r  r  r  r  r   r"  r&  r,  r/  r6  rM  rS  rT  r   r   r   r   r    7   sà    
7
ÿ


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

þ
þ
	ÿ



ÿ

	6r    c                   @   s    e Zd Zej dddg¡dd„ ƒZdd„ Zdd	„ Zd
d„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zej dg d¢¡dd„ ƒZdd„ Zdd„ Zdd„ Zd d!„ Zd"S )#ÚTestNumpyJSONTestsÚ
bool_inputTFc                 C   s$   t |ƒ}t t |¡¡|ksJ ‚d S r   )Úboolr,   r.   r-   )r0   r^  rO  r   r   r   Ú	test_boolÃ  r]   zTestNumpyJSONTests.test_boolc                 C   s<   t jg d¢td�}t jt t |¡¡td�}t ||¡ d S )N)TFTTFTFF©Údtype)rS   Úarrayr_  r,   r.   r-   rL   Úassert_numpy_array_equal)r0   Ú
bool_arrayr;   r   r   r   Útest_bool_arrayÈ  s
   ÿz"TestNumpyJSONTests.test_bool_arrayc                 C   ó4   t  |¡j}|dƒ}|t t |¡¡ƒ|ksJ ‚d S )Nr%   ©rS   rb  Útyper,   r.   r-   ©r0   Úany_int_numpy_dtypeÚklassrU   r   r   r   Útest_intÏ  ó    zTestNumpyJSONTests.test_intc                 C   sB   t jdtd�}| |¡}t jt t |¡¡|d�}t 	||¡ d S )Néd   ra  )
rS   Úarangerw   Úastyperc  r,   r.   r-   rL   rd  )r0   rk  ÚarrÚ	arr_inputÚ
arr_outputr   r   r   Útest_int_arrayÕ  s   
ÿz!TestNumpyJSONTests.test_int_arrayc                 C   sd   |dv rt st d¡ t |¡j}|dkrt d¡j}nt |¡j}|t 	t 
|¡¡ƒ|ks0J ‚d S )N)Úint64Úuint64z-Cannot test 64-bit integer on 32-bit platformrw  rv  )r   rz   ÚskiprS   rb  ri  ÚiinfoÚmaxr,   r.   r-   rj  r   r   r   Útest_int_maxÞ  s   
 zTestNumpyJSONTests.test_int_maxc                 C   rg  )NgõJY†8p@rh  ©r0   Úfloat_numpy_dtyperl  rU   r   r   r   Ú
test_floatí  rn  zTestNumpyJSONTests.test_floatc                 C   sJ   t jdddtd�}| |¡}t jt tj|dd�¡|d�}t 	||¡ d S )Ng      )@g×£p=
7g@geâX·û?ra  r"   r#   )
rS   rp  Úfloatrq  rc  r,   r.   r-   rL   Úassert_almost_equal)r0   r}  rr  Úfloat_inputÚfloat_outputr   r   r   Útest_float_arrayó  s   
þz#TestNumpyJSONTests.test_float_arrayc              	   C   sD   t  |¡j}|t  |¡jd ƒ}t |t tj	|dd�¡ƒ|¡ d S )Nrk   r"   r#   )
rS   rb  ri  Úfinforz  rL   r€  r,   r.   r-   r|  r   r   r   Útest_float_maxý  s
   ÿz!TestNumpyJSONTests.test_float_maxc              	   C   s6   t  d¡}| d¡}t t  t t |¡¡¡|¡ d S )Né`   )r(   r(   r(   r(   r)   r(   ©	rS   rp  ÚreshaperL   rd  rc  r,   r.   r-   ©r0   rr  r   r   r   Útest_array_basic  s
   

ÿz#TestNumpyJSONTests.test_array_basicÚshape))rk   rk   ©r`   r`   rž   )ro  r%   c              	   C   s6   t  d¡}| |¡}t t  t t |¡¡¡|¡ d S )Nro  r‡  )r0   r‹  rr  r   r   r   Útest_array_reshaped  s
   

ÿz&TestNumpyJSONTests.test_array_reshapedc              
   C   sV   dg i i g ddddgddig	}t j|td�}t jt t |¡¡td�}t ||¡ d S )NrD   rG  g33333sX@rO  r0  rÛ   ra  )rS   rc  Úobjectr,   r.   r-   rL   rd  )r0   Úarr_listrr  Úresultr   r   r   Útest_array_list  s   ÷z"TestNumpyJSONTests.test_array_listc                 C   sL   t j}t jddd|d�}| d¡}t jt t |¡¡|d�}t 	||¡ d S )Ng°rh‘íY@gX9´Èvi@r%   ra  rŒ  )
rS   Úfloat32rp  rˆ  rc  r,   r.   r-   rL   r€  )r0   rb  rr  Úarr_outr   r   r   Útest_array_float&  s
   
z#TestNumpyJSONTests.test_array_floatc                 C   óN   t  d¡}tjt|d�� t t d¡¡ W d   ƒ d S 1 s w   Y  d S )Nz>array(1) (numpy-scalar) is not JSON serializable at the momentrt   r%   )	r  r  rz   r{   ry   r,   r-   rS   rc  r!  r   r   r   Útest_0d_array/  s   ÿ"ÿz TestNumpyJSONTests.test_0d_arrayc                 C   r•  )Nz@1234.5.* \(numpy-scalar\) is not JSON serializable at the momentrt   g     J“@)	r  Úcompilerz   r{   ry   r,   r-   rS   Ú
longdoubler!  r   r   r   Útest_array_long_double7  s   ÿ"ÿz)TestNumpyJSONTests.test_array_long_doubleN)rç   rè   ré   rz   rU  rW  r`  rf  rm  ru  r{  r~  rƒ  r…  rŠ  r�  r‘  r”  r–  r™  r   r   r   r   r]  Â  s"    
	

	r]  c                   @   s–  e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Ze	j
 dg d¢¡dd„ ƒZe	j
 dg dgg¡dd„ ƒZe	j
 dddg¡dd„ ƒZe	j
 dd› d› g¡dd„ ƒZdd „ Zd!d"„ Ze	j
 d#d› d› g¡d$d%„ ƒZe	j
 d&g d'¢¡e	j
 d(d)d*g¡d+d,„ ƒƒZd-d.„ Zd/d0„ Zd1d2„ Ze	j
 d3ed4d5�ed)d5�ed6d7d7d8�ed6d9d:d8�ed)d7d;�ed*d<�ed*d*d=�ed*d*d*d>�ed?d?d?d>�g	¡d@dA„ ƒZdBdC„ ZdDS )EÚTestPandasJSONTestsc                 C   s  t j}tg d¢g d¢gddgg d¢|d�}|d u ri nd|i}|j|k ¡ s(J ‚t tj|fi |¤Ž¡}|j|k ¡ s=J ‚|dkrMt|ƒ}tdi |¤Ž}nt|ƒ}|d	kr`g d
¢|_	ddg|_
n|dkrjddg|_
n|dkrr| ¡ }|j|k ¡ s{J ‚t ||¡ d S )N©r%   r(   r)   ©rž   r`   é   rD   rO  ©ÚxÚyÚz)r   Úcolumnsrb  r   r   r   )r   r%   r(   r   r%   r   r   r   )rS   rv  r   ÚdtypesÚallr,   r.   r-   r   r¢  r   Ú	transposerL   Úassert_frame_equal)r0   r   rb  Údfr:   r;   r…   r   r   r   Útest_dataframe@  s0   ü
z"TestPandasJSONTests.test_dataframec                 C   sš   t g d¢g d¢gddgg d¢d�}|| ¡ dœ}|d u ri nd|i}t tj|fi |¤Ž¡t tj|fi |¤Ž¡dœ}t tj|fi |¤Ž¡|ksKJ ‚d S )	Nr›  rœ  rD   rO  rž  )r   r¢  )Údf1Údf2r   )r   Úcopyr,   r.   r-   )r0   r   r§  ÚnestedÚkwargsÚexpr   r   r   Útest_dataframe_nestedb  s   ÿþ$z)TestPandasJSONTests.test_dataframe_nestedc                 C   sê   t j}tg d¢dg d¢|d� ¡ }|j|ksJ ‚|d u ri nd|i}t tj|fi |¤Ž¡}|j|ks5J ‚|dkrEt|ƒ}tdi |¤Ž}nt|ƒ}|dv rZd |_	| ¡ }g d¢|_
n|d	v rfd |_	g d
¢|_
|j|ksmJ ‚t ||¡ d S )N©rk   rf   é   é(   é2   é<   Úseries©r�  é   rÑ   rn   rk   r"   )Únamer   rb  r   r   )Nr   )Ú6Ú7Ú8rs   Ú10Ú15)r   r   )r   r%   r(   r)   rž   r`   r   )rS   rv  r   Úsort_valuesrb  r,   r.   r-   r   r¸  r   rL   Úassert_series_equal)r0   r   rb  r©   r:   r;   r…   r   r   r   Útest_seriesp  s4   üû
zTestPandasJSONTests.test_seriesc                 C   s’   t g d¢dg d¢d� ¡ }|| ¡ dœ}|d u ri nd|i}t tj|fi |¤Ž¡t tj|fi |¤Ž¡dœ}t tj|fi |¤Ž¡|ksGJ ‚d S )Nr°  rµ  r¶  )r¸  r   )Ús1Ús2r   )r   r¾  r«  r,   r.   r-   )r0   r   r©   r¬  r­  r®  r   r   r   Útest_series_nested�  s   ÿþþ$z&TestPandasJSONTests.test_series_nestedc                 C   s  t g d¢dd�}t t t |¡¡dd�}t ||¡ tt tj|dd�¡ƒ}t di |¤Ž}t ||¡ |j|jks;J ‚t ||¡ |j|jksIJ ‚t t tj|dd�¡dd�}t ||¡ t t tj|dd�¡dd�}t ||¡ t t tj|dd�¡dd�}t ||¡ d S )	N)é   é-   é   éb   é+   é   r   )r¸  r   )r   r   r   r   )r   r,   r.   r-   rL   Úassert_index_equalr   r¸  )r0   Úir;   r…   r   r   r   Ú
test_index�  s*   ÿÿÿzTestPandasJSONTests.test_indexc                 C   sª   d}t ttddd�ƒd d�}tj||d�}t t t |¡¡ƒ}t 	||¡ t
tj d¡ t|ƒ¡|d�}t
t tj||d�¡ƒ}|jj tj¡}t |ƒ|_t ||¡ d S )	NrÔ   z1/1/2000rf   )Úperiods©Úfreqrª   r(   ©r   )r   Úlistr   r,   r-   rS   rc  r.   rL   rÊ  r   ÚrandomÚdefault_rngÚstandard_normalÚlenr   r   rq  rv  r¿  )r0   r«   Úrngr2   r3   ÚtsÚ
idx_valuesr   r   r   Útest_datetime_index¼  s   
z'TestPandasJSONTests.test_datetime_indexÚinvalid_arr)z[31337,]z[,31337]z[]]z[,]c                 C   rù   )Nz[Expected object or value|Trailing data|Unexpected character found when decoding array valuert   rñ   )r0   rÚ  r}   r   r   r   Útest_decode_invalid_arrayÍ  s
   ÿ"ÿz-TestPandasJSONTests.test_decode_invalid_arrayrr  r™   c                 C   ó   |t  t|ƒ¡ksJ ‚d S r   rá   r‰  r   r   r   Útest_decode_arrayÞ  ó   z%TestPandasJSONTests.test_decode_arrayÚextreme_numr  rš   c                 C   rÜ  r   rá   )r0   rß  r   r   r   Útest_decode_extreme_numbersâ  rÞ  z/TestPandasJSONTests.test_decode_extreme_numbersÚtoo_extreme_numr  r  c                 C   ó>   t jtdd�� t |¡ W d   ƒ d S 1 sw   Y  d S r  rñ   )r0   rá  r   r   r   Útest_decode_too_extreme_numbersæ  ó   þ"üz3TestPandasJSONTests.test_decode_too_extreme_numbersc                 C   s   i t  d¡ks	J ‚d S )Nz{}
	 r$  r1  r   r   r   Ú%test_decode_with_trailing_whitespacesî  s   z9TestPandasJSONTests.test_decode_with_trailing_whitespacesc                 C   s>   t jtdd�� t d¡ W d   ƒ d S 1 sw   Y  d S )NzTrailing datart   z{}
	 arñ   r1  r   r   r   Ú)test_decode_with_trailing_non_whitespacesñ  s   "ÿz=TestPandasJSONTests.test_decode_with_trailing_non_whitespacesÚvaluec                 C   râ  r  rñ   )r0   rç  r   r   r   Útest_decode_array_with_big_intõ  rä  z2TestPandasJSONTests.test_decode_array_with_big_intÚfloat_number)	gÞ3ˆÓ­ùñ?gªRCÊÀó?g¨B4¡æ‡õ?gŽš
LO÷?g‰	jøù?g[_$´åÜú?gŒ¹k	ù ü?g}?5^ºIþ?gÍÌÌÌÌÌô?Úsignrr   r%   c                 C   s&   ||9 }t j|t t|ƒ¡dd� d S )NgVçž¯Ò<)Úrtol)rL   r€  r,   r.   r   )r0   rê  ré  r   r   r   Útest_decode_floating_pointý  s   
ÿz.TestPandasJSONTests.test_decode_floating_pointc                 C   s,   t ƒ }tdƒD ]}| |¡ qt |¡ d S )Ni † )Úsetr  Úaddr,   r-   )r0   r©   rŸ  r   r   r   Útest_encode_big_set  s   z'TestPandasJSONTests.test_encode_big_setc                 C   s   dt  tƒ ¡ks
J ‚d S )Nz[])r,   r-   rí  r1  r   r   r   Útest_encode_empty_set  s   z)TestPandasJSONTests.test_encode_empty_setc                 C   s6   h d£}t  |¡}t  |¡}|D ]}||v sJ ‚qd S )N>	   r%   r(   r)   rž   r`   r�  r·  rÑ   rn   rE   )r0   r©   r„   r…   r   r   r   r   Útest_encode_set  s   

ÿz#TestPandasJSONTests.test_encode_setÚtdin  )Údaysé   r`   )ÚhoursÚminutesÚsecondsrf   r±  )ró  Únanoseconds)rø  )Úmicrosecondsrø  )Úmillisecondsrù  rø  iç  c                 C   s.   t j|dd�}d| ¡ › d�}||ksJ ‚d S )NT)Ú	iso_datesr¿   rÀ   )r0   rò  r�  r³   r   r   r   Útest_encode_timedelta_iso&  s   z-TestPandasJSONTests.test_encode_timedelta_isoc                 C   s.   t ddgdd�}t|d�}| ¡ dksJ ‚d S )Nz
2022-04-06z
2022-04-07ÚDrÎ  rÐ  z{})r   r   Úto_json)r0   Úpr§  r   r   r   Útest_encode_periodindex;  s   
z+TestPandasJSONTests.test_encode_periodindexN)rç   rè   ré   r¨  r¯  rÀ  rÃ  rÌ  rÙ  rz   rU  rW  rÛ  rÝ  rà  rã  rå  ræ  rè  rì  rï  rð  rñ  r	   rü  r   r   r   r   r   rš  ?  s\    " þ
	



þ	

÷þ
rš  )%r¯   r¬   r*   r7   rJ   rX  r  r®   rÈ   ÚnumpyrS   rz   rÅ   Úpandas._libs.jsonÚ_libsr,   Úpandas.compatr   Úpandasr   r   r   r   r   r   r	   r
   r   Úpandas._testingÚ_testingrL   r   Úfixturer   r    r]  rš  r   r   r   r   Ú<module>   s:    ,ÿ
     }