o
    ;Di)"                     @   sT  d dl mZmZmZ d dlZd dlmZ d dlmZm	Z	 d dl
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 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. Z+d/d0 Z,d1d2 Z-d3d4 Z.d5d6 Z/d7d8 Z0d9d: Z1d;d< Z2dS )=    )absolute_importprint_functiondivisionN)FieldSelectionError)ieqeq_)PY3next)
header
fieldnamesdatadictsrecordsnamedtuples
itervaluesvalues
rowgroupbyexprc                  C   sF   d} t | }d}t|| ddgddgddgf} t | }t|| d S )	Nfoobara   b   r   r   r   r   r   r   r   )r
   r   tableactualexpect r"   Q/var/www/Datamplify/venv/lib/python3.10/site-packages/petl/test/util/test_base.pytest_header   s   
r$   c                  C   s^   d} t | }d}t|| G dd dt}|dd|ddfd	d
f} t | }d}t|| d S )Nr   r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )z$test_fieldnames.<locals>.CustomFieldc                 S   s   || _ || _d S Nkeydescription)selfr'   r(   r"   r"   r#   __init__   s   
z-test_fieldnames.<locals>.CustomField.__init__c                 S   s   | j S r%   )r'   r)   r"   r"   r#   __str__"   s   z,test_fieldnames.<locals>.CustomField.__str__c                 S   s   d| j | jf S )NzCustomField(%r, %r)r&   r+   r"   r"   r#   __repr__%   s   z-test_fieldnames.<locals>.CustomField.__repr__N)__name__
__module____qualname__r*   r,   r-   r"   r"   r"   r#   CustomField   s    r1   r   zGet some foo.r   zA lot of bar.r   r   )r   r   object)r   r    r!   r1   r"   r"   r#   test_fieldnames   s   
r3   c                  C   s   d} t | }d}t|| d S )Nr   )r   r   r   r   r   r"   r"   r#   	test_data1      r5   c                  C      g } t | }g }t|| d S r%   r4   r   r"   r"   r#   test_data_headerless8   r6   r8   c                  C   s.   d} t | }ddddddf}t|| d S )Nr   r   r   r   r   r   r   r   r   r"   r"   r#   
test_dicts?      r:   c                  C   r7   r%   r9   r   r"   r"   r#   test_dicts_headerlessF   r6   r<   c                  C   s.   d} t | }ddddd df}t|| d S )N)r   r   r   r   r   r   r   r9   r   r"   r"   r#   test_dicts_shortrowsM   r;   r>   c                  C   s   d} t | }t|}t|}td|d  td|d  t|}td|d  td|d  t|}t|}td|j td|j t|}td|j td|j t|}t|}td|d td|d td |d td	|jdd	d
 d S )N)r   r   r   )c   r   r   r   r   r   r   bazqux)default)r   iterr	   r   r   r   getr   r    itor"   r"   r#   test_recordsT   s,   rI   c                  C   r7   r%   )r   r   r   r"   r"   r#   test_records_headerlessp   r6   rJ   c                  C   sh   d} t | }t|}t|}z	|d  W td ty    Y nw z|j W td ty3   Y d S w )Nr   rA   zexpected exception not raised)r   rD   r	   KeyError	ExceptionrA   AttributeErrorrF   r"   r"   r#   test_records_errorsw   s    
rN   c                  C   s   d} t | }t|}t|}td|d  td|d  t|}td|d  td |d  t|}t|}td|j td|j t|}td|j td |j d S )Nr   r   r   Tr=   r   r   r   r   r   )r   rD   r	   r   r   r   rF   r"   r"   r#   test_records_unevenrows   s    rQ   c                  C   sX   d} t | }t|}t|}td|j td|j t|}td|j td|j d S )Nr   r   r   r   r   r   rD   r	   r   r   r   rF   r"   r"   r#   test_namedtuples      rS   c                  C   r7   r%   )r   r   r   r"   r"   r#   test_namedtuples_headerless   r6   rU   c                  C   sX   d} t | }t|}t|}td|j td|j t|}td|j td |j d S )NrO   r   r   r   rR   rF   r"   r"   r#   test_namedtuples_unevenrows   rT   rV   c                  C   s   d} t | d}d}t|| t | d}d}t|| t | d}d}t|| t | d}d	}t|| t | d
}d}t|| d S )Nr   r   rA   rP   r   )r      Fr   r   r   r   r   r   r   rY   r   r   r   )r   rY   rA   TNF)r   rA   ))r   T)r   N)r   F)r   r   r   r"   r"   r#   test_itervalues   s    








r^   c                  C   H   g } t | d}tt |D ]}qW d    d S 1 sw   Y  d S Nr   )r   pytestraisesr   r   r    ir"   r"   r#   test_itervalues_headerless      
"re   c                  C   s   d} t | d}d}t|| t|| t | d}d}t|| t|| t | d}d}t|| t|| t | dd}d}t|| t|| t | d}d	}t|| t|| d S )
NrW   r   rZ   r   r[   r   r\   rA   r]   )r   r   r   r"   r"   r#   test_values   s*   












rg   c                  C   r_   r`   )r   ra   rb   r   rc   r"   r"   r#   test_values_headerless  rf   rh   c                  C   s  d} t | d}t|\}}t|}td| tdt| td|d  t|\}}t|}td| tdt| td	|d  td
|d  t | dd}t|\}}t|}td| tdt| td|d  t|\}}t|}td| tdt| td|d  td|d  t | dd dd }t|\}}t|}td| tdt| td|d  t|\}}t|}td| tdt| td|d  td |d  d S )N)rX   rP   r   r   Tr   r@   r   r   r   rP   r   r   r   ri   rj   r   r@   c                 S      | d S r`   r"   rr"   r"   r#   <lambda>9      z!test_rowgroupby.<locals>.<lambda>c                 S   rk   )NrA   r"   rl   r"   r"   r#   rn   9  ro   T)r   r	   listr   len)r   gr'   valsr"   r"   r#   test_rowgroupby  sJ   






rt   c                  C   s>   g } t t t| d W d    d S 1 sw   Y  d S r`   )ra   rb   r   r   )r   r"   r"   r#   test_rowgroupby_headerlessI  s   "ru   c                  C   s$   t d} | ddd}td| d S Nz{foo} * {bar}r@   r   r      )r   r   furesr"   r"   r#   test_expr_okO  s   r{   c                  C   sV   t ddd} tt}| ddd |d usJ W d    d S 1 s$w   Y  d S Nz{foo2} * {bar2}Ttrustedr@   r   r   )r   ra   rb   rK   ry   exc_infor"   r"   r#   test_expr_nokU  s
   "r   c                  C   sV   t t} tdd d}|ddd | d usJ W d    d S 1 s$w   Y  d S )N__import__('os').system('ls')r}   r@   r   r   )ra   rb   rL   r   )r   ry   r"   r"   r#   test_expr_inject\  s
   "r   c                  C   s,   t rzdd l} W dS  ty   Y dS w dS )Nr   TF)r   astevalImportError)r   r"   r"   r#   _has_astevald  s   r   c                  C   sl   t  r4tttf } tddd}|d ur|ddd | d us"J W d    d S 1 s-w   Y  d S d S )Nr   Fr}   r@   r   r   )r   ra   rb   
ValueError	TypeErrorr   )r   _fur"   r"   r#   test_expr_untrustedn  s   "r   c                  C   s.   t  rtd} | ddd}td| d S d S rv   )r   r   r   rx   r"   r"   r#   test_expr_ok_untrustedw  s
   r   c                  C   s`   t  r.tddd} tt}| ddd |d usJ W d    d S 1 s'w   Y  d S d S r|   )r   r   ra   rb   rK   r   r"   r"   r#   test_expr_nok_untrusted~  s   "r   )3
__future__r   r   r   ra   petl.errorsr   petl.test.helpersr   r   petl.compatr   r	   petl.util.baser
   r   r   r   r   r   r   r   r   r   r$   r3   r5   r8   r:   r<   r>   rI   rJ   rN   rQ   rS   rU   rV   r^   re   rg   rh   rt   ru   r{   r   r   r   r   r   r   r"   r"   r"   r#   <module>   sB    0
#;
	