o
    ;Dih8                     @   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	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 d	d
 Zdd Zdd Zdd Zdd Zdd Zdd ZdbddZdbddZdbddZdbddZdcd d!Zd"d# Z ddd%d&Z!d'Z"d(Z#e"e# Z$d)d* Z%d+d, Z&d-d. Z'd/d0 Z(d1d2 Z)d3d4 Z*d5d6 Z+d7d8 Z,d9d: Z-d;d< Z.d=d> Z/d?d@dAZ0dBdC Z1dDdE Z2dFdG Z3dHdI Z4dJdK Z5dLZ6dMZ7e6e# e7 Z8e"e6 e# e7 Z9dNZ:dOZ;dPZ<dQZ=dRdS Z>dTdU Z?dVdW Z@dXdY ZAdZd[ ZBd\d] ZCd^d_ ZDd`da ZEdS )e    )absolute_importprint_functiondivisionN)OrderedDict)NamedTemporaryFile)ieq)nrowslook)fromxmltoxml)urlopenc                  C   sL   t ddd} d}| | |   t| jdd}d}t|| t|| d S )NFwtdeletemodea
  <table>
        <tr>
            <td>foo</td><td>bar</td>
        </tr>
        <tr>
            <td>a</td><td>1</td>
        </tr>
        <tr>
            <td>b</td><td>2</td>
        </tr>
        <tr>
            <td>c</td><td>2</td>
        </tr>
      </table>trtdfoobara1b2)cr   r   writecloser
   namer   fdataactualexpect r'   N/var/www/Datamplify/venv/lib/python3.10/site-packages/petl/test/io/test_xml.pytest_fromxml   s   

r)   c                  C   sN   t ddd} d}| | |   t| jddd}d}t|| t|| d S )	NFr   r   a  <table>
        <tr>
            <td v='foo'/><td v='bar'/>
        </tr>
        <tr>
            <td v='a'/><td v='1'/>
        </tr>
        <tr>
            <td v='b'/><td v='2'/>
        </tr>
        <tr>
            <td v='c'/><td v='2'/>
        </tr>
      </table>r   r   vr   r   r"   r'   r'   r(   test_fromxml_2.   s   

r+   c                  C   R   t ddd} d}| | |   t| jdddd}d	}t|| t|| d S )
NFr   r   z<table>
        <row>
            <foo>a</foo><baz><bar v='1'/></baz>
        </row>
        <row>
            <foo>b</foo><baz><bar v='2'/></baz>
        </row>
        <row>
            <foo>c</foo><baz><bar v='2'/></baz>
        </row>
      </table>rowr   zbaz/barr*   r   )r   r   )r   r   r   r   r   r   r   r"   r'   r'   r(   test_fromxml_3L      

r2   c                  C   r,   )
NFr   r   a	  <table>
        <row>
            <foo>a</foo><baz><bar>1</bar><bar>3</bar></baz>
        </row>
        <row>
            <foo>b</foo><baz><bar>2</bar></baz>
        </row>
        <row>
            <foo>c</foo><baz><bar>2</bar></baz>
        </row>
      </table>r-   r   z.//barr   r/   ))r   3r   r0   r1   r   r"   r'   r'   r(   test_fromxml_4h   r3   r6   c                  C   r,   )
NFr   r   a	  <table>
        <row>
            <foo>a</foo><baz><bar v='1'/><bar v='3'/></baz>
        </row>
        <row>
            <foo>b</foo><baz><bar v='2'/></baz>
        </row>
        <row>
            <foo>c</foo><baz><bar v='2'/></baz>
        </row>
      </table>r-   r   r.   r   r4   r   r"   r'   r'   r(   test_fromxml_5   r3   r7   c                  C   sX   d} t ddd}||  |  t|jdd}tt| d}t|| t|| d S )Na  <table class='petl'>
        <thead>
        <tr>
        <th>foo</th>
        <th>bar</th>
        </tr>
        </thead>
        <tbody>
        <tr>
        <td>a</td>
        <td style='text-align: right'>2</td>
        </tr>
        <tr>
        <td>b</td>
        <td style='text-align: right'>1</td>
        </tr>
        <tr>
        <td>c</td>
        <td style='text-align: right'>3</td>
        </tr>
        </tbody>
      </table>Fr   r   .//trthr   )r   )r   r   )r   r   r   r5   )r   r   r    r
   r!   printr	   r   )r$   r#   r%   r&   r'   r'   r(   test_fromxml_6   s   

r=   c               
   C   s   zd} t |  dd l}|dd}W n ty, } ztd|  W Y d }~d S d }~ww t| dddd	}t|dks>J t|dddd	}t|| d S )
NzYhttp://raw.githubusercontent.com/petl-developers/petl/master/petl/test/resources/test.xmlr   petlztest/resources/test.xmlzSKIP test_fromxml_url: %spydev_property).r!   r@   )r!   prop)	r   pkg_resourcesresource_filename	Exceptionpytestskipr
   r   r   )urlrB   filenameer%   r&   r'   r'   r(   test_fromxml_url   s   rJ   c                 C   st   t ddd}||  |j}|  W d    n1 sw   Y  |d ur8|r+tjntj}td|| f |d |S )NFr   r   zTEST %s:
%sfile)r   r   r!   r    sysstderrstdoutr<   )contentoutr#   resoutfr'   r'   r(   _write_temp_file   s   

rT   c                 C   s8   |d ur|r	t jnt j}tdt|   |d d S d S )NzFILE:
%srK   )rM   rN   rO   r<   openread)rH   rQ   rS   r'   r'   r(   
_dump_file   s   rW   c                 C   sD   |d ur |r	t jnt j}tdt| |d tdt||d d S d S )Nz
EXPECTED:
rK   zACTUAL:
)rM   rN   rO   r<   r	   )expectedr%   rQ   rS   r'   r'   r(   
_dump_both   s
   rY   c              
   C   sF   zt | || t| | W d S  ty" } zt | |d |d }~ww )NF)rY   r   rD   )rX   r%   rQ   exr'   r'   r(   _compare   s   r[    c                 C   s   |d |  | d }t |S )Nz<table>z</table>)rT   )r$   preposrP   r'   r'   r(   _write_test_file   s   r_   c                  C   s  d} d}d}d}d}t | }t|dd}t|| zdd	lm} W n   Y d S t|}|| }	|d
 }
d}d}t | |	|d}t | |
|d}|jdd}|jdd}t|dd|d}t|| t|dd}t|| | t|dd|d}t|| | t|dd|d}t|| | t|dd}t|| | t|dd|d}t|| | zt|dd|d}|D ]}qW n |jy   Y d S w d S )Nz
        <tr><td>foo</td><td>bar</td></tr>
        <tr><td>a</td><td>1</td></tr>
        <tr><td>b</td><td>2</td></tr>
        <tr><td>c</td><td>3</td></tr>
        z<td>X</td><td>9</td>z<?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE foo [  
        <!ELEMENT table ANY >
        <!ENTITY inserted SYSTEM "file://%s" >]>
        z<tr>&inserted;</tr>)r   r   r   r;   r   r   r   )etreez/tmp/doesnotexist))X9))NN)r]   r^   F)resolve_entitiesT)parser)r_   r
   r[   lxmlr`   rT   	XMLParserXMLSyntaxError)_DATA1_DATA2_DOCTYPE	_INSERTED_TABLE1
temp_file1actual11r`   data_file_tmpdoc_type_tempdoc_type_miss
_EXPECT_IT
_EXPECT_NO
temp_file2
temp_file3
parser_off
parser_onnactual12actual21actual22actual23actual31actual32actual33_r'   r'   r(   test_fromxml_entity   sT   

r   r'   c           	   
   K   s   t ddd}|j}W d    n1 sw   Y  t| |fi | t|| |rNzt|g|R  }t||| W d S  tyM } zt|d |d }~ww d S )NTz.xml)r   suffixF)r   r!   r   rW   r
   r[   rD   )	tablerX   checkdumpkwargsr#   rH   r%   rZ   r'   r'   r(   _check_toxmlG  s   

r   )ABCDN123)r   r   r;   c                   C   s   t ttdd d S )Nr8   r9   )r   r   rl   r'   r'   r'   r(   test_toxml00]  s   
r   c                   C      t ttddddd d S )Nr   r   thead/tr/thtbody/tr/tdr   rootheadrowsr   r'   r'   r'   r(   test_toxml01d     
r   c                   C   s   t ttdddd d S )Nz.//rowcolmatrixrow/col)r   r   r   r   rl   _BODY1r'   r'   r'   r(   test_toxml02n  s   
r   c                   C      t ttddd d S )N)linecellzplan/line/cellr   r   r   r'   r'   r'   r(   test_toxml03w  
   
r   c                   C   r   )Nz.//liner   zdir/file/book/plan/line/cellr   r   r'   r'   r'   r(   test_toxml04  r   r   c                   C   r   )N)z.//xyr   zh/k/x/yzr/v/x/yr   r   r'   r'   r'   r(   test_toxml05  r   r   c                   C   r   )Nr   r   zhead/row/colr   r   r   r'   r'   r'   r(   test_toxml06  r   r   c                   C   r   )N)z.//field-listz
field-namezroot-tagzhead-tag/field-list/field-namezbody-row/field-list/field-namer   r   r'   r'   r'   r(   test_toxml07  r   r   c                   C   r   )N)z.//field.listz
field.namezroot.tagzhead.tag/field.list/field.namezbody.row/field.list/field.namer   r   r'   r'   r'   r(   test_toxml08  r   r   c                   C      t ttddddd d S )N.//tr/td*r!   r   r   r   styler   r   r   r'   r'   r'   r(   test_toxml09  r   r   c                	   C   s   t ttdddddd d S )Nr   r!   r   r   r   r   r   r   r   r   r   r'   r'   r'   r(   test_toxml10     
r   )r@   r   )r@   r   r   c                   C   s   t ttdtfdddd d S )Nr   	attributer   r   r   r   rl   _ATTRIB_COLSr'   r'   r'   r(   test_toxml11  s   
r   c                	   C   s   t ttdtfddddd d S )Nr   r   r   r   r   r   r   r'   r'   r'   r(   test_toxml12  s   
r   c                   C   r   )N)r8   )r   r:   ) <tr><td>{ABCD}</td><td>{N123}</td></tr>
r   tbodyr   r   r'   r'   r'   r(   test_toxml13  r   r   c                	   C   s   t ttdddddd d S )Nr   r   r   zthead/tr/tdr   r   r   r'   r'   r'   r(   test_toxml131  r   r   c                  C   s:   ddgddgddgg} t | | ddd	 t | | d
dd	 d S )Nr   r   r      r      r   r   )r   r   r!   )r   )table1r'   r'   r(   test_toxml14  s   
r   ))A0))Zrb   z$ <row><col>A</col><col>0</col></row>z$ <row><col>Z</col><col>9</col></row>z<table>
z	
</table>c                	   C   s   t ttdddttd d S )Nr-   r   r   r   )r   r   r   prologueepilogue)r   rl   _TAB_ABZ_TAG_A0_TAG_Z9r'   r'   r'   r(   test_toxml15  r   r   c                
   C   s   t ttddddttd d S )Nr   r   thead/row/coltbody/row/colr   r   r   r   r   r   )r   rl   _TAB_HAZr   r   r'   r'   r'   r(   test_toxml16  s   
r   c                   C       t ttddtt tt d d S )Nr   r   r   r   r   r   )r   rl   r   _TAG_TOPr   r   _TAG_ENDr'   r'   r'   r(   test_toxml17#     
r   c               	   C   s2   t t t t } tt| dddtt tt	 d d S )Nr   r   r   )r   r   r   r   r   )
_ROW_A0_HEAD1r   _ROW_Z9r   rl   r   r   r   r   )_TAB_AHZr'   r'   r(   test_toxml18-  s   
r   c                   C   r   )Nr   tbody/line/cellr   )r   rl   r   r   r   r   r   r'   r'   r'   r(   test_toxml199  r   r   c                
   C   s$   t ttddddtt tt d d S )Nr   bookzthead/line/cellr   r   )r   rl   r   r   r   r   r'   r'   r'   r(   test_toxml20C     
r   c                
   C   s$   t ttddddtt tt d d S )Nr   r   r   r   r   )r   rl   r   r   r   r   r   r'   r'   r'   r(   test_toxml21O  r   r   c                
   C   s    t ttdtfdddddd d S )Nr   r   r   r   z<td ABCD="A" N123="0" />z<td ABCD="Z" N123="9" />)r   r   r   r   r   r   )r   rl   r   r   r'   r'   r'   r(   test_toxml22[  s   
r   )N)r\   r\   )r'   N)F
__future__r   r   r   rM   collectionsr   tempfiler   rE   petl.test.helpersr   	petl.utilr   r	   petl.io.xmlr
   r   petl.compatr   r)   r+   r2   r6   r7   r=   rJ   rT   rW   rY   r[   r_   r   r   r   r   rl   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>   sv   &




	
K
	









