o
    ;DiU                     @   s  d dl mZmZmZ d dlZd dlmZ d dlmZ d dl	m
Z
mZmZ d dlmZmZmZmZmZmZmZmZmZmZmZ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)d!d" Z*d#d$ Z+d%d& Z,d'd( Z-d)d* Z.d+d, Z/d-d. Z0d/d0 Z1d1d2 Z2d3d4 Z3d5d6 Z4d7d8 Z5d9d: Z6d;d< Z7d=d> Z8d?d@ Z9dAdB Z:dCdD Z;dEdF Z<dGdH Z=dIdJ Z>dKdL Z?dMdN Z@dOdP ZAdQdR ZBdSdT ZCdUdV ZDdWdX ZEdYdZ ZFd[d\ ZGd]d^ ZHd_d` ZIdS )a    )absolute_importprint_functiondivisionN)FieldSelectionError)ieq)expremptycoalesce)cutcataddfieldrowsliceheadtailcutoutskipcommentsannexaddrownumbers	addcolumnaddfieldusingcontext	movefieldstack	addfieldsc                  C   s   d} t | d}d}t|| t | dd}d}t|| t | dd}d}t|| t | dd}d	}t|| t | d
}d}t|| d S )NfoobarbazA      B23.4)r#   37.8TDxyz      "@ENr   r   r   r#   r1   )r)   )r-   r   r   r   )r   r!   )r#   r%   )r#   r'   )r)   r+   r,   r   r!   r   )r   r   r    r   )r$   r#   )r&   r#   )r*   r)   )Nr-   r3   r
   r   )tablecut1expectationcut2cut3cut4cut5 r>   X/var/www/Datamplify/venv/lib/python3.10/site-packages/petl/test/transform/test_basics.pytest_cut   s    





r@   c                  C   s    d} d}t | d}t|| d S )Nr   r   )r   r   r6   r7   expectactualr>   r>   r?   test_cut_emptyD   s   
rG   c                  C   D   d} t t t| dD ]}qW d    d S 1 sw   Y  d S Nr>   r   )pytestraisesr   r
   r7   ir>   r>   r?   test_cut_headerlessK      "rN   c                  C   sR   d} t | dd}d}t|| t | d}d}t|| t | d}d}t|| d S )Nr   r   r   r.   r2   r    )r   r   )r7   r8   r9   r:   r;   r>   r>   r?   test_cutoutR   s   



rP   c                  C   rH   rI   )rJ   rK   r   r   rL   r>   r>   r?   test_cutout_headerlessw   rO   rQ   c                  C   s`   d} d}t | |d d}d}t|| d}t |d d}d}t|| t | ||}d}t|| d S )NrB   r5   )r!   r#   r   r   )CT)r)   F)missing)r   r    r   Nr!   r#   NNrU   TNr)   Fr   )r   r   r"   r#   r&   r'   r(   r-   NN)
r   rW   rX   rY   rZ   r   r"   r[   r(   r\   r   r   )table1table2cat1r9   table3cat3cat4r>   r>   r?   test_cat~   s   


rd   c                  C   s^   d} d}t | g dd}d}t|| t|| t | |g dd}d}t|| t|| d S )N)r4   r   r    r#   r!   rS   r   r   r#   r   rU   )header)rg   Nr    Nr   NNr!   Nr#   N)rg   ri   rj   )NNNrU   N)NNNr)   Nr]   )r^   r_   rF   rE   r>   r>   r?   test_cat_with_header   s   


rk   c                  C   s$   d} d}d}t | |}t|| d S )NrR   )rT   )r   rW   rX   r]   r^   r_   rE   rF   r>   r>   r?   test_cat_empty   s
   
rm   c                  C   $   d} d}| }t | |}t|| d S NrR   r>   r]   rl   r>   r>   r?   test_cat_headerless   
   
rp   c                  C   :   d} t | }d}t|| d}t | |}d}t|| d S )Nr   r   r5   )r!   )   r#   T)rt   )r    r    )r!   r!   )ru   ru   r   r   r   )   rU   T)   r)   F)rw   )r    r    N)r!   r!   N)ru   ru   N)rx   rx   T)ry   ry   Fr]   r^   rF   rE   r_   r>   r>   r?   test_cat_dupfields   s   

r{   c                  C   rr   )Nrs   )rt   r5   r!   Nru   r#   rv   )rt   r5   r|   r}   )rx   rU   )ry   r)   r   r   rz   r>   r>   r?   test_stack_dupfields   s   

r   c                  C   rn   ro   r~   rl   r>   r>   r?   test_stack_headerless  rq   r   c                  C   s   d} t | dd}d}t|| t|| t | ddd }d}t|| t|| t | ddd }d	}t|| t|| t | dtd
}d	}t|| t|| t | dddd}d}t|| t|| d S )NrB   M   F"   -8   r   *   )r   r   r   r   r   r   r   r   r   r   c                 S      d| j | jf S Nz%s,%srB   rowr>   r>   r?   <lambda>1      ztest_addfield.<locals>.<lambda>)r   )r   r   M,12)r   r   F,34)r   r   -,56c                 S      | d d S Nr   r!   r>   recr>   r>   r?   r   9      )r   )r   r      )r   r   D   )r   r   p   z	{bar} * 2r   )index))r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   r7   resultr9   r>   r>   r?   test_addfield#  s*   








r   c                  C   s,   d} d}t | dd}t|| t|| d S )NrA   r   r   r   r   r   rD   r>   r>   r?   test_addfield_emptyR  s
   
r   c                  C   s,   d} d}t | dd}t|| t|| dS )zCWhen adding a field to a headerless table, implicitly add a header.r>   r/   r   r    Nr   rD   r>   r>   r?   test_addfield_headerlessZ  
   
r   c                  C   s`   d} t | dtddd}d}t|| t|| t | dtddd	}d}t|| t|| d S )
N)r   r   r   quux)r   r      ,   )r   Nr      )r   NNr   spongr   r   r   ))r   r   r   r   r   )r   r   r   r   r   )r   Nr   r   r   )r   NNr   r   r    r!   ru   )r   r	   r   )r7   r   rE   r>   r>   r?   test_addfield_coalescec  s   


r   c                  C   ,   d} t | dd}d}t|| t|| d S )NrB   )r   r   )r   r   r   r   r   )r   )r   Nr   r   r   r   r   r>   r>   r?   test_addfield_uneven_rowsz  s
   
r   c                  C   r   )N)rt   r   r   r   r   r   )rw   r   r   r   r   r   r>   r>   r?   test_addfield_dupfield  s
   
r   c                  C   sB   d} t | dddd fddd dfg}d	}t|| t|| d S )
Nr   r   r   quxc                 S   r   r   rB   r   r>   r>   r?   r     r   z test_addfields.<locals>.<lambda>fizc                 S   r   r   r>   r   r>   r>   r?   r     r   r   ))r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   r   r   r   r>   r>   r?   test_addfields  s   

r   c                  C   sT   d} t | g d}d}t|| t|| t | g d}d}t|| t|| d S )Nr   )r   )r   d   )r      ))r   r   r   r   r   )r   Nr   r   r   )r   r   r   r   r   )r   r   r   r   r   )r   )r   r   r   )r   r   r   ))r   r   r   r   r   )r   r   r   Nr   )r   r   r   r   r   )r   r   r   r   r   r   r   r>   r>   r?   test_addfields_uneven_rows  s   


r   c                  C   sV   d} t | d}d}t|| t | dd}d}t|| t | ddd}d}t|| d S )Nr   r!   )r   r   r"   r    )r   r"   ry   )r   r"   r(   r   r   r   r>   r>   r?   test_rowslice  s   


r   c                  C   "   d} d}t | dd}t|| d S )NrA   r    r!   r   rD   r>   r>   r?   test_rowslice_empty     r   c                  C   r   )Nr>   r    r!   r   rD   r>   r>   r?   test_rowslice_headerless  r   r   c                  C       d} t | d}d}t|| d S )NrB   ar    br!   cry   d   )fr   )r   ru   hZ   kr   lM   qr!   rx   )rB   r   r   r   r   )r   r   r^   r_   rE   r>   r>   r?   	test_head     
r   c                  C   sD   t tg } tt t|  W d    d S 1 sw   Y  d S N)iterr   rJ   rK   StopIterationnext)r7   r>   r>   r?   /test_head_raises_stop_iteration_for_empty_table  s   
"r   c                  C   sP   d} t t| }t| tt t| W d    d S 1 s!w   Y  d S )Nr   )r   r   r   rJ   rK   r   )r^   r7   r>   r>   r?   /test_head_raises_stop_iteration_for_header_only	  s   
"r   c                  C   r   )Nr   rx   )rB   r   r   r   r   r   r   r   r>   r>   r?   	test_tail  r   r   c                  C      d} d}t | }t|| d S )NrA   r   rD   r>   r>   r?   test_tail_empty(     r   c                  C   r   )Nr>   r   rD   r>   r>   r?   test_tail_headerless/  r   r   c                  C   s*   d} t | d}d}t|| t|| d S )N)z##aaabbbcccz##mmmz#foor   z##nnnr    r   r   ##)r   r   r   r   r   r^   r_   expect2r>   r>   r?   test_skipcomments6  s
   

r   c                  C   r   )N)r   r   r   r   r   )r   r   r   r>   r>   r?   test_skipcomments_emptyF  s   
r   c                  C   sP   d} d}d}t | |}t|| t|| d}t || }t|| t|| d S )NrB   r   	   rU   r!   )r   r    r3   )r#   ru   )r)   
   )r   r   r   r   r   r   r#   ru   rU   r!   r)   r   )r   r    NN))r   r   r   r   )r#   ru   r   r   )r)   r   rU   r!   )NNr   r    r   r   )r^   r_   rE   rF   expect21actual21r>   r>   r?   
test_annexQ  s   




r   c                  C   s.   d} d}d}t | |}t|| t|| d S )N)rB   )r   r   Tr   )r   r   )r   r   r   )r   NNNr   rl   r>   r>   r?   test_annex_uneven_rowsk  s   

r  c                  C   s.   d} d}| }t | |}t|| t|| d S )N)rB   r   r>   r   rl   r>   r>   r?   test_annex_headerless}  s   

r  c                  C   s(   d} d}t | }t|| t|| d S )Nr   ))r   r   r   r    r   r   r!   rU   r!   )ru   r   r    r   r   r^   rE   rF   r>   r>   r?   test_addrownumbers  s
   
r  c                  C   s,   d} d}t | dd}t|| t|| d S )N)rB   r   r   ))idr   r   r  r  r  fieldr  r  r>   r>   r?   test_addrownumbers_field_name  s
   
r  c                  C   s,   d} d}t | dd}t|| t|| dS )z#Adds a column row if there is none.r>   ))r  r  r	  Nr  rD   r>   r>   r?   test_addrownumbers_headerless  r   r  c            	      C   st   d} ddg}d}t | d|}t|| t|| d}d}t |d|}t|| g d}d	}t | d|}t|| d S )
NrB   re   rf   TF)r   r   r    Tr#   r!   Fr   )rB   re   rf   r   )r   r  r  )rU   r!   N)TFF)r   r  r  )NNFr   r   )	r^   colr   r_   ra   expect4table4expect5table5r>   r>   r?   test_addcolumn  s   


r  c                  C   sB   t  } t| dddg}t|dddg}d}t|| t|| d S )Nr   r   r#   r   r    r!   r  )r   r   r   )r^   r_   ra   rE   r>   r>   r?   test_empty_addcolumn  s   
r  c                  C   s0   d} d}t | dddg}t|| t|| dS )z!Adds a header row if none exists.r>   )r/   r0   r1   r   r   r#   Nr  r  r>   r>   r?   test_addcolumn_headerless  s
   
r  c                  C   H   d} d}dd }dd }t | d|}t |d|}t|| t|| d S )	NrB   re   )r#   rx   )rU   ry   )r)   r   )r   )r   r    Nru   )r#   rx   ru   r    )rU   ry   r    rx   )r)   r   rx   Nc                 S   s   | d u rd S |j | j  S r   rC   prvcurnxtr>   r>   r?   upstream     z+test_addfieldusingcontext.<locals>.upstreamc                 S   s   |d u rd S |j |j  S r   rC   r  r>   r>   r?   
downstream  r   z-test_addfieldusingcontext.<locals>.downstreamr   r   r   r   r^   rE   r  r!  r_   ra   r>   r>   r?   test_addfieldusingcontext  s   
r$  c                  C   r  )	Nr  )r   )r   r    r    ry   )r#   rx   ry   r   )rU   ry   r      )r)   r   r%  r%  c                 S   s   | d u r|j S |j | j S r   rT   r  r>   r>   r?   r    s   z4test_addfieldusingcontext_stateful.<locals>.upstreamc                 S   s.   |d u r| j S | d u r|j|j S |j| j  S r   )r   r   r  r>   r>   r?   r!    s
   z6test_addfieldusingcontext_stateful.<locals>.downstreamr   r   r"  r#  r>   r>   r?   "test_addfieldusingcontext_stateful	  s   
r&  c                  C   s6   t  } d}dd }t| d|}t|| t|| d S )Nr   c                 S      dS Nr   r>   r  r>   r>   r?   query/     z.test_addfieldusingcontext_empty.<locals>.queryr   )r   r   r   r7   rE   r)  rF   r>   r>   r?   test_addfieldusingcontext_empty+  s   
r,  c                  C   s4   d} d}dd }t | d|}t|| t|| d S )Nr>   r   c                 S   r'  r(  r>   r  r>   r>   r?   r)  ;  r*  z3test_addfieldusingcontext_headerless.<locals>.queryr   r"  r+  r>   r>   r?   $test_addfieldusingcontext_headerless7  s   
r-  c                  C   sL   d} d}t | dd}t|| t|| t | dd}t|| t|| d S )N)r   )r    r   T)r!   r#   F))r   r   r   r  r  r   r   r   r    )r   r   r  r>   r>   r?   test_movefieldC  s   


r.  )J
__future__r   r   r   rJ   petl.errorsr   petl.test.helpersr   	petl.utilr   r   r	   petl.transform.basicsr
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r@   rG   rN   rP   rQ   rd   rk   rm   rp   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r$  r&  r,  r-  r.  r>   r>   r>   r?   <module>   sf    D7%3

/	
	%"