
    ic                         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 jF                  jI                  dg ddfddddfdd  d!fg      d"        Z%e jF                  jI                  dg d#      d$        Z&e jF                  jI                  d%g d&      d'        Z'd( Z(d) Z)d* Z*d+ Z+y),    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                  8    dddd} t        | d      }|dk(  sJ y )Nr      r   )acbT)	sort_keysz{"a":1,"b":2,"c":3})r   )dataresults     j/var/www/vps2.regionflexible.com/Desarrollo/venv/lib/python3.12/site-packages/srsly/tests/test_json_api.pytest_json_dumps_sort_keysr      s)    #D-F****    c                      d} t        d| i      5 }|dz  }|j                         sJ t        |      }d d d        t              dk(  sJ |d   dk(  sJ y # 1 sw Y   $xY w)N{
    "hello": "world"
}tmp.jsonr   helloworld)r   existsr   lenfile_contentstemp_dir	file_pathr   s       r   test_read_json_filer*      su    0M	z=1	2 $hz)	!!!#$ t9>>=G###$ $s   #AAc                      d} t        d| i      5 }|dz  }|j                         sJ t        j                  t              5  t        |       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nz{
    "hello": world
}r!   )r   r$   pytestraises
ValueErrorr   )r'   r(   r)   s      r   test_read_json_file_invalidr/   %   su    .M	z=1	2 !hz)	!!!]]:& 	!i 	!! !	! 	!! !s#   1A*AA*A'	#A**A3c                     d}| j                  dt        |             t        d      }t        |      dk(  sJ |d   dk(  sJ y )Nr    	sys.stdin-r   r"   r#   )setattrr   r   r%   monkeypatch
input_datar   s      r   test_read_json_stdinr7   .   sG    -JXj%9:S>Dt9>>=G###r   c                     ddd} ddg}t               5 }|dz  }t        ||        t        |      j                  dd	      5 }|j	                         |v sJ 	 d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)
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   s    c*D 	10H 
 (8z)	9d#)_!!#!7 	(1668x'''	(( (	( 	(( (s#   .A5A)A5)A2	.A55A>c                  &   ddd} ddg}t               5 }t        |dz        }t        ||        t        j                  |d      5 }|j                         j                  d      |v sJ 	 d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)	Nr#   r9   r:   r<   r=   r!   r>   r?   )r   r   r   gziprB   rC   decoderD   s        r   test_write_json_file_gziprK   D   s    c*D 	10H 
 78 J!67		4(YYy#& 	7!668??6*h666	77 7	7 	77 7s#   1B$A;*B;B	 BBc                 n    ddd}ddg}t        d|       | j                         }|j                  |v sJ y )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   sG    c*D 	32H sD  "H<<8###r   c                  b   d} t        d| i      5 }|dz  }|j                         sJ t        |      }t        |d      rJ t	        |      }d d d        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 y # 1 sw Y   ZxY w)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 hz)	!!!)$4+++Dz t9>>tAw<1tAw<177w&&&76?c!!! s   <B%%B.c                     d} t        d| i      5 }|dz  }|j                         sJ t        j                  t              5  t        t        |            }d d d        t        t        |d            }d d d        t              dk(  sJ t        |d         dk(  sJ |d   d   dk(  sJ y # 1 sw Y   XxY w# 1 sw Y   FxY w)	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   s    5M	z=1	2 6hz)	!!!]]:& 	/
9-.D	/Jyt456 t9>>tAw<176?c!!!	/ 	/6 6s#   1B9B-B9-B6	2B99Cc                 &   d}| j                  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 y )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:c?DtY''':Dt9>>tAw<1tAw<177w&&&76?c!!!r   c                     ddiddig} t               5 }|dz  }t        ||        t        |      j                  dd      5 }|j	                         d	k(  sJ 	 d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)
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`      s    g.D	 C8z)	It$)_!!#!7 	C1668BBBB	CC C	C 	CC Cs#   .A5A)A5)A2	.A55A>c                  "   ddiddig} d}t               5 }|dz  }t        ||        t        || d       t        |      j                  d	d
      5 }|j	                         |k(  sJ 	 d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)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      s    g.DUH	 (8z)	It$ItD1)_!!#!7 	(1668x'''	(	( (	( 	(	( (s#   <BA9(B9B	>BBc                  $   ddiddig} d}t               5 }|dz  }t        ||        t        || dd	       t        |      j                  d
d      5 }|j	                         |k(  sJ 	 d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)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      s    g.DSH	 (8z)	It$ItD%H)_!!#!7 	(1668x'''	(	( (	( 	(	( (s#   =BA:)B:B	?BBc                 n    ddiddig}t        d|       | j                         }|j                  dk(  sJ y )Nr"   r#   r;   r9   r2   r^   )r	   rM   rN   )rO   r   rP   s      r   test_write_jsonl_stdoutri      s@    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                 $    t        |       |k(  sJ y rk   )r   objrE   s     r   test_is_json_serializablerr      s      $000r   ))z-32i)32    )0r   )z-0r   c                 $    t        |       |k(  sJ y rk   r   rp   s     r   test_json_loads_number_stringrw      s     c?h&&&r   rq   )HIr2   z-?z?!zTHIS IS A STRINGc                 v    t        j                  t              5  t        |        d d d        y # 1 sw Y   y xY wrk   )r,   r-   r.   r   )rq   s    r   test_json_loads_raisesrz      s,    
 
z	" 3  s   /8c                      t        j                         } t        j                  t              5  t        |       }d d d        y # 1 sw Y   y xY wrk   )numpyfloat32r,   r-   	TypeErrorr   )rF   ss     r   test_unsupported_type_errorr      s7    A	y	! qM  s   AAc                  B   ddiddig} ddg}t               5 }|dz  }t        ||        t        j                  |d      5 }|j	                         D cg c]  }|j                  d	       c}|k(  sJ 	 d
d
d
       d
d
d
       y
c c}w # 1 sw Y   xY w# 1 sw Y   y
xY w)z,Tests writing data to a gzipped .jsonl file.r"   r#   r;   r9   {"hello":"world"}
{"test":123}
r!   r>   r?   Nr   r   rI   rB   	readlinesrJ   r   rE   r(   r)   rF   lines         r   test_write_jsonl_gzipr      s    g.D%'78H	 O8z)	D)YYy#& 	O!45KKMBDDKK'BhNNN	OO O C	O 	OO Os4   (BB	B*B	3BB		B	BBc                  ^   ddiddig} g d}t               5 }|dz  }t        ||        t        || d       t        j                  |d	      5 }|j	                         D cg c]  }|j                  d
       c}|k(  sJ 	 ddd       ddd       yc c}w # 1 sw Y   xY w# 1 sw Y   yxY w)z.Tests appending data to a gzipped .jsonl file.r"   r#   r;   r9   )r   r   
r   r   r!   Trb   r>   r?   Nr   r   s         r   test_write_jsonl_gzip_appendr      s    g.DH 
 O8z)	D)D6YYy#& 	O!45KKMBDDKK'BhNNN	O	O O
 C	O 	O	O Os5   6B#B B8BB#BB 	B##B,c            
      <   ddiddig} t               5 }|dz  }t        j                  |d      5 }|j                  | D cg c]  }t	        |      dz   j                  d      ! c}       d	d	d	       |j                         sJ t        |      }t        |d
      rJ t        |      }d	d	d	       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 y	c c}w # 1 sw Y   xY w# 1 sw Y   kxY w)z.Tests reading data from a gzipped .jsonl file.r"   r#   r;   r9   r!   wr   zutf-8NrT   r   r   r   )r   rI   rB   
writelinesr   encoder$   r
   rU   rV   r%   )r'   r(   r)   rF   r   r   s         r   test_read_jsonl_gzipr      s7   w'&#7M	 
8z)	YYy#& 	!LLGTUt*T"T)11':U	 !!!y)4+++Dz
 t9>>tAw<1tAw<177w&&&76?c!!! V	 	
 
s3   DD$D#D*>DDD	DD),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 "  +$!$(7	$" 
""C((? 	4 	t$	e	11 '' 	/	
	OO$"r   