o
    ;Di                     @   s  d dl mZmZmZ d dlmZ d dlmZ d dlZd dl	Z	d dl
mZ d dlmZmZmZm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dd Zdd Zdd Zdd Zdd  Ze	jd!d" Zd#d$ Z d%d& Z!d'd( Z"d)d* Z#d+d, Z$dS )-    )absolute_importprint_functiondivisionOrderedDict)NamedTemporaryFileN)ieq)fromjson	fromdictstojsontojsonarraysc                  C   P   t ddd} d}| | |   t| jddgd}d}t|| t|| d S )	NFwdeletemodezH[{"foo": "a", "bar": 1}, {"foo": "b", "bar": 2}, {"foo": "c", "bar": 2}]foobarheaderr   r   a   )b   cr   r   writecloser	   namer   fdataactualexpect r(   O/var/www/Datamplify/venv/lib/python3.10/site-packages/petl/test/io/test_json.pytest_fromjson_1      

r*   c                  C   sP   t ddd} d}| | |   t| jg dd}d}t|| t|| d S )NFr   r   K[{"foo": "a", "bar": 1}, {"foo": "b"}, {"foo": "c", "bar": 2, "baz": true}]r   bazr   r   r-   )r   Nr   )NNr   )r   Tr   r   r#   r(   r(   r)   test_fromjson_2    r+   r0   c                  C   r   )	NFr   r   r,   r   r   r   r   r   )r   Nr   r   r#   r(   r(   r)   test_fromjson_32   r+   r2   c                  C   sH   dddddddddg} t | ddgd	}d
}t|| t|| d S Nr   r   r   r   r   r   r   r   r   r   r
   r   r%   r&   r'   r(   r(   r)   test_fromdicts_1D   s   
r6   c                  C   sH   dddddidddd	g} t | g d
d}d}t|| t|| d S )Nr   r   r   r   r   r   r   Tr   r   r.   r-   r   r/   r4   r5   r(   r(   r)   test_fromdicts_2R      

r8   c                  C   sH   dddddidddd	g} t | dd
gd}d}t|| t|| d S )Nr   r   r   r   r   r   r   Tr7   r   r   r1   r4   r5   r(   r(   r)   test_fromdicts_3`   r9   r:   c                  C   sB   t dddddddddg} t| ddgd	}d
}t|| d S r3   )iterr
   r   r5   r(   r(   r)   test_fromdicts_onepassn   s   
r<   c                  C   s:   t ddgt dgt g dg} t| }d}t|| d S )Nr   r   r   r   r   r   r   r   r   r   )r.   T)r7   )r   r   N)r   NNr   r   Tr   r
   r   r5   r(   r(   r)   test_fromdicts_ordered|   s   

rE   c                  C   s>   t ddgt dgt g dg} t| dd}d}t|| d S )Nr=   r>   r?   r@   xmissing)r7   r   r   rF   )r   rF   rF   rC   rD   r5   r(   r(   r)   test_fromdicts_missing   s   

rJ   c                  C   s   d} t ddd}t| |j t|}t|dksJ |d d dks%J |d d	 d
ks/J |d
 d dks9J |d
 d	 dksCJ |d d dksMJ |d d	 dksWJ d S )Nr   Frr      r   r   r   r   r   r   r   r   )r   r   r"   jsonloadlentabler$   resultr(   r(   r)   test_tojson      
rS   c                  C   s   d} t ddd}t| |j t|}t|dksJ |d d dks%J |d d dks/J |d d d	ks9J |d d d
ksCJ |d
 d dksMJ |d
 d d
ksWJ d S )Nr   FrK   r   rL   r   r   r   r   r   r   )r   r   r"   rM   rN   rO   rP   r(   r(   r)   test_tojsonarrays   rT   rU   c                  C   s4   dddddddddg} t | }| sJ d S )Nr   r   r   r   r   r   )r
   r   )r%   r&   r(   r(   r)   $test_fromdicts_header_does_not_raise   s   rV   c                  C   sZ   t ddgt ddgt ddgg} t| }| }|dksJ d}t|| t|| d S )Nr=   r>   r?   rB   rA   r   r   )r   r
   r   r   )r%   r&   r   r'   r(   r(   r)   test_fromdicts_header_list   s   



rW   c                  C   s   dd } |  S )Nc                   s   s0    t ddgV  t ddgV  t ddgV  d S )Nr=   r>   r?   rB   rA   r   r(   r(   r(   r)   	generator      z"dicts_generator.<locals>.generatorr(   )rX   r(   r(   r)   dicts_generator   s   rZ   c                 C   s   t | }d}t|| d S Nr   r4   rZ   r&   r'   r(   r(   r)   test_fromdicts_generator_single   s   r]   c                 C   s$   t | }d}t|| t|| d S r[   r4   r\   r(   r(   r)   test_fromdicts_generator_twice   s   
r^   c                 C   s8   t | }| }|dksJ d}t|| t|| d S )Nr   r   )r
   r   r   )rZ   r&   r   r'   r(   r(   r)   test_fromdicts_generator_header   s   
r_   c            
      C   s   dd } t |  dd}| dksJ t|}t|}t|}t|}t|}t|}||ks1J ||ks7J t|}t|}	||	ksEJ t|| | dksRJ t|dksZJ d S )Nc                  s   s8    t dD ]} td| fdd|  fdd|  fgV  qd S )N   nr   d   r      )ranger   )ir(   r(   r)   rX      s   &z9test_fromdicts_generator_random_access.<locals>.generatorrL   )sample)ra   r   r      )r
   r   r;   nextr   rO   )
rX   r&   it1
first_row1
first_row2it2second_row1second_row2second_row3
first_row3r(   r(   r)   &test_fromdicts_generator_random_access   s"   
rq   c                  C   s(   dd } t |  dd}d}t|| d S )Nc                   s   s0    t ddgV  t ddgV  t ddgV  d S )Nr=   r>   r?   rB   rA   )r.   r   r   r(   r(   r(   r)   rX     rY   z3test_fromdicts_generator_missing.<locals>.generatorrF   rG   )r7   rI   )r   r   rF   )r   rF   r   r4   )rX   r&   r'   r(   r(   r)    test_fromdicts_generator_missing  s   rr   )%
__future__r   r   r   collectionsr   tempfiler   rM   pytestpetl.test.helpersr   petlr	   r
   r   r   r*   r0   r2   r6   r8   r:   r<   rE   rJ   rS   rU   rV   rW   fixturerZ   r]   r^   r_   rq   rr   r(   r(   r(   r)   <module>   s6   
	
