
    wic                         d dl Z d dlmZ d dlmZ d dlZd dlZddlmZm	Z	m
Z
mZmZmZ ddlmZmZmZ ddlmZ ddlmZ d	d
lmZ d Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"e j#        $                    dg ddfddddfdd  d!fg          d"             Z%e j#        $                    dg d#          d$             Z&e j#        $                    d%g d&          d'             Z'd( Z(d) Z)d* Z*d+ Z+dS ),    N)StringIO)Path   )	read_json
write_json
read_jsonlwrite_jsonlread_gzip_jsonlwrite_gzip_jsonl)write_gzip_json
json_dumpsis_json_serializable
json_loads)force_string   )make_tempdirc                  D    dddd} t          | d          }|dk    sJ d S )Nr      r   )acbT)	sort_keysz{"a":1,"b":2,"c":3})r   )dataresults     i/root/.openclaw/workspace/chatterbox_venv_py311/lib/python3.11/site-packages/srsly/tests/test_json_api.pytest_json_dumps_sort_keysr      s;    ##D---F*******    c                      d} t          d| i          5 }|dz  }|                                sJ t          |          }d d d            n# 1 swxY w Y   t          |          dk    sJ |d         dk    sJ d S )N{
    "hello": "world"
}tmp.jsonr   helloworld)r   existsr   lenfile_contentstemp_dir	file_pathr   s       r   test_read_json_filer*      s    0M	z=1	2	2 $hz)	!!!!!##$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ t99>>>>=G######s   +AAAc                     d} t          d| i          5 }|dz  }|                                sJ t          j        t                    5  t          |           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nz{
    "hello": world
}r!   )r   r$   pytestraises
ValueErrorr   )r'   r(   r)   s      r   test_read_json_file_invalidr/   %   s   .M	z=1	2	2 !hz)	!!!!!]:&& 	! 	!i   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !s5   5A=	A%A=%A)	)A=,A)	-A==BBc                     d}|                      dt          |                     t          d          }t          |          dk    sJ |d         dk    sJ d S )Nr    	sys.stdin-r   r"   r#   )setattrr   r   r%   monkeypatch
input_datar   s      r   test_read_json_stdinr7   .   s^    -JXj%9%9:::S>>Dt99>>>>=G######r   c                  :   ddd} ddg}t                      5 }|dz  }t          ||            t          |                              dd	          5 }|                                |v sJ 	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )
Nr#   {   r"   test#{
  "hello":"world",
  "test":123
}#{
  "test":123,
  "hello":"world"
}r!   rutf8encoding)r   r   r   openreadr   expectedr(   r)   fs        r   test_write_json_filerG   6   s2   c**D 	10H 
 (8z)	9d###)__!!#!77 	(16688x'''''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (s5   :BA8,B8A<	<B?A<	 BBBc                  \   ddd} ddg}t                      5 }t          |dz            }t          ||            t          j        |d          5 }|                                                    d          |v sJ 	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )	Nr#   r9   r:   r<   r=   r!   r>   r?   )r   r   r   gziprB   rC   decoderD   s        r   test_write_json_file_gziprK   D   s9   c**D 	10H 
 78 J!677		4(((Yy#&& 	7!6688??6**h66666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	77 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7s5   8B!,B	=B!	B	B!B	B!!B%(B%c                 v    ddd}ddg}t          d|           |                                 }|j        |v sJ d S )Nr#   r9   r:   z${
  "hello":"world",
  "test":123
}
z${
  "test":123,
  "hello":"world"
}
r2   )r   
readouterrout)capsysr   rE   captureds       r   test_write_json_stdoutrQ   R   sZ    c**D 	32H sD  ""H<8######r   c                     d} t          d| i          5 }|dz  }|                                sJ t          |          }t          |d          rJ t	          |          }d d d            n# 1 swxY w Y   t          |          dk    sJ t          |d                   dk    sJ t          |d                   dk    sJ |d         d         dk    sJ |d         d	         d
k    sJ d S )N {"hello": "world"}
{"test": 123}r!   __len__r   r   r   r"   r#   r;   r9   )r   r$   r   hasattrlistr%   r&   s       r   test_read_jsonl_filerW   ^   s@   7M	z=1	2	2 hz)	!!!!!)$$4+++++Dzz               t99>>>>tAw<<1tAw<<177w&&&&76?c!!!!!!s   AA,,A03A0c                     d} t          d| i          5 }|dz  }|                                sJ t          j        t                    5  t          t          |                    }d d d            n# 1 swxY w Y   t          t          |d                    }d d d            n# 1 swxY w Y   t          |          dk    sJ t          |d                   dk    sJ |d         d         dk    sJ d S )	Nz{"hello": world}
{"test": 123}r!   T)skipr   r   r;   r9   )r   r$   r,   r-   r.   rV   r   r%   r&   s       r   test_read_jsonl_file_invalidrZ   n   sq   5M	z=1	2	2 6hz)	!!!!!]:&& 	/ 	/
9--..D	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/Jyt444556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 t99>>>>tAw<<176?c!!!!!!s5   5B'	A2&B'2A6	6B'9A6	:!B''B+.B+c                    d}|                      dt          |                     t          d          }t          |d          rJ t	          |          }t          |          dk    sJ t          |d                   dk    sJ t          |d                   dk    sJ |d         d         d	k    sJ |d         d
         dk    sJ d S )NrS   r1   r2   rT   r   r   r   r"   r#   r;   r9   )r3   r   r   rU   rV   r%   r4   s      r   test_read_jsonl_stdinr\   {   s    4JXj%9%9:::c??DtY'''''::Dt99>>>>tAw<<1tAw<<177w&&&&76?c!!!!!!r   c                  <   ddiddig} t                      5 }|dz  }t          ||            t          |                              dd          5 }|                                d	k    sJ 	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )
Nr"   r#   r;   r9   r!   r>   r?   r@   {"hello":"world"}
{"test":123}
r   r	   r   rB   rC   )r   r(   r)   rF   s       r   test_write_jsonl_filer`      sK   g.D	 C8z)	It$$$)__!!#!77 	C16688BBBBBB	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	CC C C C C C C C C C C C C C C C C Cs5   :BA9-B9A=	=B A=	BBBc                  d   ddiddig} d}t                      5 }|dz  }t          ||            t          || d           t          |                              d	d
          5 }|                                |k    sJ 	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr"   r#   r;   r9   z?{"hello":"world"}
{"test":123}

{"hello":"world"}
{"test":123}
r!   Tappendr>   r?   r@   r_   rD   s        r   test_write_jsonl_file_appendrd      sA   g.DUH	 (8z)	It$$$ItD1111)__!!#!77 	(16688x'''''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(	( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (s6   AB%%BB%B	B%B	B%%B),B)c                  f   ddiddig} d}t                      5 }|dz  }t          ||            t          || dd	           t          |                              d
d          5 }|                                |k    sJ 	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr"   r#   r;   r9   z>{"hello":"world"}
{"test":123}
{"hello":"world"}
{"test":123}
r!   TF)rc   append_new_liner>   r?   r@   r_   rD   s        r   (test_write_jsonl_file_append_no_new_linerg      sC   g.DSH	 (8z)	It$$$ItD%HHHH)__!!#!77 	(16688x'''''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(	( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (s6   AB&&BB&B	B&B	B&&B*-B*c                 x    ddiddig}t          d|           |                                 }|j        dk    sJ d S )Nr"   r#   r;   r9   r2   r^   )r	   rM   rN   )rO   r   rP   s      r   test_write_jsonl_stdoutri      sP    g.DT  ""H<>>>>>>>r   zobj,expected)r   r   r   r   Tr   r9   )r   r   )r"   Tc                     | S N )xs    r   <lambda>rn      s    1 r   Fc                 0    t          |           |k    sJ d S rk   )r   objrE   s     r   test_is_json_serializablerr      s#      $$000000r   ))z-32i)32    )0r   )z-0r   c                 0    t          |           |k    sJ d S rk   r   rp   s     r   test_json_loads_number_stringrw      s!     c??h&&&&&&r   rq   )HIr2   z-?z?!zTHIS IS A STRINGc                     t          j        t                    5  t          |            d d d            d S # 1 swxY w Y   d S rk   )r,   r-   r.   r   )rq   s    r   test_json_loads_raisesrz      s    
 
z	"	"  3                 s   7;;c                      t          j                    } t          j        t                    5  t          |           }d d d            d S # 1 swxY w Y   d S rk   )numpyfloat32r,   r-   	TypeErrorr   )rF   ss     r   test_unsupported_type_errorr      s    A	y	!	!  qMM                 s   A

AAc                  :   ddiddig} ddg}t                      5 }|dz  }t          ||            t          j        |d          5 }d	 |                                D             |k    sJ 	 d
d
d
           n# 1 swxY w Y   d
d
d
           d
S # 1 swxY w Y   d
S )z,Tests writing data to a gzipped .jsonl file.r"   r#   r;   r9   {"hello":"world"}
{"test":123}
r!   r>   c                 8    g | ]}|                     d           S r?   rJ   .0lines     r   
<listcomp>z)test_write_jsonl_gzip.<locals>.<listcomp>   $    BBBDDKK''BBBr   Nr   r   rI   rB   	readlinesrD   s        r   test_write_jsonl_gzipr      sV   g.D%'78H	 O8z)	D)))Yy#&& 	O!BBAKKMMBBBhNNNNN	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	OO O O O O O O O O O O O O O O O O Os5   +B%A8,B8A<	<B?A<	 BBBc                  ^   ddiddig} g d}t                      5 }|dz  }t          ||            t          || d           t          j        |d	          5 }d
 |                                D             |k    sJ 	 ddd           n# 1 swxY w Y   ddd           dS # 1 swxY w Y   dS )z.Tests appending data to a gzipped .jsonl file.r"   r#   r;   r9   )r   r   
r   r   r!   Trb   r>   c                 8    g | ]}|                     d           S r   r   r   s     r   r   z0test_write_jsonl_gzip_append.<locals>.<listcomp>   r   r   Nr   rD   s        r   test_write_jsonl_gzip_appendr      ss   g.D  H 
 O8z)	D)))D6666Yy#&& 	O!BBAKKMMBBBhNNNNN	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O	O O O O O O O O O O O O O O O O O Os5   =B"%B
>B"
B	B"B	B""B&)B&c                  v   ddiddig} t                      5 }|dz  }t          j        |d          5 }|                    d | D                        ddd           n# 1 swxY w Y   |                                sJ t          |          }t          |d	          rJ t          |          }ddd           n# 1 swxY w Y   t          |          d
k    sJ t          |d                   dk    sJ t          |d                   dk    sJ |d         d         dk    sJ |d         d         dk    sJ dS )z.Tests reading data from a gzipped .jsonl file.r"   r#   r;   r9   r!   wc                 X    g | ]'}t          |          d z                       d          (S )r   zutf-8)r   encoder   s     r   r   z(test_read_jsonl_gzip.<locals>.<listcomp>   s3    UUUt*T""T)11'::UUUr   NrT   r   r   r   )	r   rI   rB   
writelinesr$   r
   rU   rV   r%   )r'   r(   r)   rF   r   s        r   test_read_jsonl_gzipr      s   w'&#7M	 
8z)	Yy#&& 	!LLUU}UUU  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 !!!!!y))4+++++Dzz
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 t99>>>>tAw<<1tAw<<177w&&&&76?c!!!!!!s5   B; AB;A"	"B;%A"	&A	B;;B?B?),r,   ior   pathlibr   rI   r|   	_json_apir   r   r   r	   r
   r   r   r   r   r   utilr   r   r   r*   r/   r7   rG   rK   rQ   rW   rZ   r\   r`   rd   rg   ri   markparametrizerr   rw   rz   r   r   r   r   rl   r   r   <module>r      s                                 J I I I I I I I I I " " " " " "            + + +$ $ $! ! !$ $ $( ( (7 7 7	$ 	$ 	$" " " 
" 
" 
"" " "C C C( ( (( ( (? ? ? 			4 		t$	e	 1 1 1    ' ' ' 	///  	 
  	O 	O 	OO O O$" " " " "r   