HOME


sh-3ll 1.0
DIR:/usr/local/lib64/python3.6/site-packages/pandas/tests/io/__pycache__/
Upload File :
Current File : //usr/local/lib64/python3.6/site-packages/pandas/tests/io/__pycache__/test_html.cpython-36.pyc
3

���h6��@s�ddlmZddlmZddlmZmZddlZddlZddl	Z	ddl
mZddlZ
ddlmZddlZddlmZddlmZddljjZdd	lmZmZmZmZmZmZddl j!Z"dd
l#m$Z$ddl%Zddl%m&Z&ej'j(e)�Z*ej+dd
ddgd�dd��Z,dd�Z-ej.d�dd��Z/dd�Z0ej.d�ej.d�dd���Z1ej2j3dej4dej.d�d�ej4dej.d�d�gdd �Gd!d"�d"��Z5dS)#�)�partial)�reload)�BytesIO�StringION)�URLError)�rand)�is_platform_windows)�ParserError)�	DataFrame�
MultiIndex�Series�	Timestamp�
date_range�read_csv)�file_path_to_url)�	read_htmlzchinese_utf-16.htmlzchinese_utf-32.htmlzchinese_utf-8.htmlzletz_latin1.html)�paramscCs|ddd|j�S)z6Parametrized fixture for HTML encoding test filenames.�io�dataZ
html_encoding)�param)�request�datapath�r�;/tmp/pip-build-5_djhm0z/pandas/pandas/tests/io/test_html.py�html_encoding_files
rcOs�t|�t|�ks,tdt|��dt|�����d}ttdd�||��}|sPt|��x:t||�D],\}}tj||f|�|�|js\td��q\WdS)Nz*lists are not of equal size len(list1) == z, len(list2) == z$not all list elements are DataFramescSst|t�ot|t�S)N)�
isinstancer
)�x�yrrr�<lambda>1sz(assert_framelist_equal.<locals>.<lambda>zframes are both empty)�len�AssertionError�all�map�zip�tm�assert_frame_equal�empty)Zlist1Zlist2�args�kwargs�msgZboth_framesZframe_iZframe_jrrr�assert_framelist_equal(sr*�bs4c
CsJddl}|j|dd�tjtdd��t|dddd	�d
d�WdQRXdS)Nr�__version__z4.2zPandas requires version)�matchrr�htmlz	spam.htmlr+)�flavor)r+�setattr�pytest�raises�ImportErrorr)Zmonkeypatchrr+rrr�test_bs4_version_fails<sr4cCs@d}d}d|d}tjt|d��t|d|d�WdQRXdS)Nz
google.comzinvalid flavorz\{z \} is not a valid set of flavors)r-Zgoogle)r-r/)r1r2�
ValueErrorr)�urlr/r)rrr�test_invalid_flavorEs
r7�lxmlcCs<|dddd�}t|ddgd�}t|ddgd�}t||�dS)	Nrrr.zvalid_markup.htmlrr8)�	index_colr/r+)rr*)r�filenameZdfs_lxmlZdfs_bs4rrr�test_same_orderingNsr;r/)Zmarks�class)�scopec@sheZdZejdd�dd��Zejddd�dd��Zd	d
�Zej	dd��Z
ej	d
d��Zej	dd��Zej
jdd��Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Z d5d6�Z!d7d8�Z"d9d:�Z#ej	d;d<��Z$ej	ej
jd=d>���Z%ej
jd?d@��Z&ej
jdAdB��Z'dCdD�Z(ej
jdEdF��Z)ej
jdGdH��Z*ej
jdIdJ��Z+ej
jdKdL��Z,ej
jdMdN��Z-ej
jdOdP��Z.ej
jdQdR��Z/dSdT�Z0ej	dUdV��Z1ej	dWdX��Z2dYdZ�Z3d[d\�Z4d]d^�Z5d_d`�Z6dadb�Z7dcdd�Z8ej
jdedf��Z9ej
jdgdh��Z:didj�Z;dkdl�Z<dmdn�Z=dodp�Z>dqdr�Z?dsdt�Z@dudv�ZAdwdx�ZBdydz�ZCd{d|�ZDd}d~�ZEdd��ZFd�d��ZGd�d��ZHd�d��ZId�d��ZJd�d��ZKd�d��ZLd�d��ZMd�d��ZNd�d��ZOej
jd�d���ZPd�d��ZQej
jRd�deSd�g�d�fd�eSd�g�eSd�g�fg�d�d���ZTd�d��ZUd�d��ZVd�d��ZWej
jd�d���ZXd�S)��TestReadHtmlT)�autousecCs4|dddd�|_i|_d|jd<|dddd�|_dS)Nrrr.z	spam.htmlzUTF-8�encodingz
banklist.html)�	spam_data�spam_data_kwargs�
banklist_data)�selfrrrr�	set_files`s
zTestReadHtml.set_files�function)r?r=ccstt|d�|_dVdS)N)r/)rr)rDr/rrrr�set_defaultsgszTestReadHtml.set_defaultscCsVtjdddd�ddd�jdj�jt�}|j�}|j|dd	id
d�d
}tj||�dS)N��cWst�S)N)r)r'rrrrqsz2TestReadHtml.test_to_html_compat.<locals>.<lambda>F)Z
data_gen_fZc_idx_namesZr_idx_namesz{0:.3f}r<Z	dataframer)�attrsr9)	r$ZmakeCustomDataframe�applymap�formatZastype�float�to_htmlrr%)rD�df�out�resrrr�test_to_html_compatlsz TestReadHtml.test_to_html_compatcCsfd}tjt��|j|dddid�}WdQRXtjt��|j|dddid�}WdQRXt||�dS)Nz8http://www.fdic.gov/bank/individual/failed/banklist.htmlzFirst Federal Bank of Florida�id�table)rJzMetcalf Bank)r$Zassert_produces_warning�
FutureWarningrr*)rDr6�df1�df2rrr�"test_banklist_url_positional_match|sz/TestReadHtml.test_banklist_url_positional_matchcCs:d}|j|dddid�}|j|dddid�}t||�dS)Nz8http://www.fdic.gov/bank/individual/failed/banklist.htmlzFirst Federal Bank of FloridarSrT)r-rJzMetcalf Bank)rr*)rDr6rVrWrrr�test_banklist_url�s
zTestReadHtml.test_banklist_urlcCs.d}|j|dd�}|j|dd�}t||�dS)Nz^https://raw.githubusercontent.com/pandas-dev/pandas/master/pandas/tests/io/data/html/spam.htmlz	.*Water.*)r-�Unit)rr*)rDr6rVrWrrr�
test_spam_url�szTestReadHtml.test_spam_urlcCs:|j|jdddid�}|j|jdddid�}t||�dS)Nz.*Florida.*rSrT)r-rJzMetcalf Bank)rrCr*)rDrVrWrrr�
test_banklist�s
zTestReadHtml.test_banklistcCsZ|j|jdd�}|j|jdd�}t||�|djddks@t�|djddksVt�dS)Nz	.*Water.*)r-rZr�
ProximatesZNutrient)rr)rrAr*�ilocr �columns)rDrVrWrrr�	test_spam�s

zTestReadHtml.test_spamcCs,|j|j�}x|D]}t|t�st�qWdS)N)rrArr
r )rD�dfsrOrrr�test_spam_no_match�s
zTestReadHtml.test_spam_no_matchcCs4|j|jddid�}x|D]}t|t�st�qWdS)NrSrT)rJ)rrCrr
r )rDrarOrrr�test_banklist_no_match�s
z#TestReadHtml.test_banklist_no_matchcCs8|j|jddd�d}|jddks(t�|js4t�dS)Nz	.*Water.*�)r-�headerrr])rrAr_r r&)rDrOrrr�test_spam_header�szTestReadHtml.test_spam_headercCs2|j|jddd�}|j|jddd�}t||�dS)Nz	.*Water.*�)r-�skiprowsrZ)rrAr*)rDrVrWrrr�test_skiprows_int�szTestReadHtml.test_skiprows_intcCs:|j|jdtd�d�}|j|jdtd�d�}t||�dS)Nz	.*Water.*rd)r-rhrZ)rrA�ranger*)rDrVrWrrr�test_skiprows_range�sz TestReadHtml.test_skiprows_rangecCs:|j|jdddgd�}|j|jdddgd�}t||�dS)Nz	.*Water.*rgrd)r-rhrZ)rrAr*)rDrVrWrrr�test_skiprows_list�szTestReadHtml.test_skiprows_listcCs:|j|jdddhd�}|j|jdddhd�}t||�dS)Nz	.*Water.*rgrd)r-rhrZ)rrAr*)rDrVrWrrr�test_skiprows_set�szTestReadHtml.test_skiprows_setcCs2|j|jddd�}|j|jddd�}t||�dS)Nz	.*Water.*rg)r-rhrZ)rrAr*)rDrVrWrrr�test_skiprows_slice�sz TestReadHtml.test_skiprows_slicecCs:|j|jdtd�d�}|j|jdtd�d�}t||�dS)Nz	.*Water.*rd)r-rhrZ)rrA�slicer*)rDrVrWrrr�test_skiprows_slice_short�sz&TestReadHtml.test_skiprows_slice_shortcCs@|j|jdtdd�d�}|j|jdtddd�d�}t||�dS)	Nz	.*Water.*rd�)r-rhrZrHrg���)rrAror*)rDrVrWrrr�test_skiprows_slice_long�sz%TestReadHtml.test_skiprows_slice_longcCs>|j|jdtjd�d�}|j|jdtjd�d�}t||�dS)Nz	.*Water.*rd)r-rhrZ)rrA�npZaranger*)rDrVrWrrr�test_skiprows_ndarray�sz"TestReadHtml.test_skiprows_ndarraycCs0tjtdd��|j|jddd�WdQRXdS)Nz%is not a valid type for skipping rows)r-z	.*Water.*Zasdf)r-rh)r1r2�	TypeErrorrrA)rDrrr�test_skiprows_invalid�sz"TestReadHtml.test_skiprows_invalidcCs2|j|jddd�}|j|jddd�}t||�dS)Nz	.*Water.*r)r-r9rZ)rrAr*)rDrVrWrrr�
test_index�szTestReadHtml.test_indexcCs6|j|jdddd�}|j|jdddd�}t||�dS)Nz	.*Water.*rgr)r-rer9rZ)rrAr*)rDrVrWrrr�test_header_and_index_no_types�sz+TestReadHtml.test_header_and_index_no_typescCs6|j|jdddd�}|j|jdddd�}t||�dS)Nz	.*Water.*rgr)r-rer9rZ)rrAr*)rDrVrWrrr� test_header_and_index_with_types�sz-TestReadHtml.test_header_and_index_with_typescCs2|j|jddd�}|j|jddd�}t||�dS)Nz	.*Water.*r)r-r9rZ)rrAr*)rDrVrWrrr�test_infer_typesszTestReadHtml.test_infer_typescCszt|jf|j��}t|j��}WdQRXt|jf|j��}t|j��}WdQRX|j|dd�}|j|dd�}t||�dS)Nz	.*Water.*)r-rZ)�openrArBr�readrr*)rD�f�data1�data2rVrWrrr�test_string_io
szTestReadHtml.test_string_iocCsNt|jf|j��}|j�}WdQRX|j|dd�}|j|dd�}t||�dS)Nz	.*Water.*)r-rZ)r|rArBr}rr*)rDr~rrVrWrrr�test_strings
zTestReadHtml.test_stringcCsbt|jf|j��}|j|dd�}WdQRXt|jf|j��}|j|dd�}WdQRXt||�dS)Nz	.*Water.*)r-rZ)r|rArBrr*)rDr~rVrWrrr�test_file_likes
zTestReadHtml.test_file_likecCs(tjt��|jddd�WdQRXdS)Nzgit://github.comz	.*Water.*)r-)r1r2rr)rDrrr�test_bad_url_protocol'sz"TestReadHtml.test_bad_url_protocolcCs`y(tjt��|jddd�WdQRXWn2tk
rZ}zdt|�ksJt�WYdd}~XnXdS)Nzhttp://www.a23950sdfa908sd.comz	.*Water.*)r-zNo tables found)r1r2rrr5�strr )rD�errr�test_invalid_url,s
zTestReadHtml.test_invalid_urlcCsT|j}|jttjj|��dddid�}t|t�s4t�x|D]}t|t	�s:t�q:WdS)NZFirstrSrT)r-rJ)
rCrr�os�path�abspathr�listr r
)rDr6rarOrrr�
test_file_url5s
zTestReadHtml.test_file_urlcCs8|j}tjtdd��|j|dddid�WdQRXdS)NzNo tables found)r-zFirst Federal Bank of FloridarSZ	tasdfable)r-rJ)rCr1r2r5r)rDr6rrr�test_invalid_table_attrs?sz%TestReadHtml.test_invalid_table_attrscOs"|j|jf|�dddid�|��S)N�MetcalfrSrT)r-rJ)rrC)rDr'r(rrr�
_bank_dataGszTestReadHtml._bank_datacCs(|jddgd�d}t|jt�s$t�dS)Nrrg)re)r�rr_rr )rDrOrrr�test_multiindex_headerLsz#TestReadHtml.test_multiindex_headercCs(|jddgd�d}t|jt�s$t�dS)Nrrg)r9)r�r�indexrr )rDrOrrr�test_multiindex_indexQsz"TestReadHtml.test_multiindex_indexcCs>|jddgddgd�d}t|jt�s*t�t|jt�s:t�dS)Nrrg)rer9)r�rr_rr r�)rDrOrrr�test_multiindex_header_indexVsz)TestReadHtml.test_multiindex_header_indexcCs*|jddgdd�d}t|jt�s&t�dS)Nrrg)rerh)r�rr_rr )rDrOrrr�&test_multiindex_header_skiprows_tuples\sz3TestReadHtml.test_multiindex_header_skiprows_tuplescCs*|jddgdd�d}t|jt�s&t�dS)Nrrg)rerh)r�rr_rr )rDrOrrr�test_multiindex_header_skiprowsasz,TestReadHtml.test_multiindex_header_skiprowscCs@|jddgddgdd�d}t|jt�s,t�t|jt�s<t�dS)Nrrg)rer9rh)r�rr�rr r_)rDrOrrr�%test_multiindex_header_index_skiprowsfsz2TestReadHtml.test_multiindex_header_index_skiprowscCs`|j}|jttjj|��tjtjd��ddid�}t|t	�s@t
�x|D]}t|t�sFt
�qFWdS)NZFloridarSrT)r-rJ)rCrrr�r�r��re�compilerr�r r
)rDr6rarOrrr�test_regex_idempotencyls
z#TestReadHtml.test_regex_idempotencycCs4d}tjt|d��|j|jddd�WdQRXdS)Nz\(you passed a negative value\))r-ZWaterrg)r-rhrr)r1r2r5rrA)rDr)rrr�test_negative_skiprowsxsz#TestReadHtml.test_negative_skiprowscCs&d}|j|dd�}t|�dks"t�dS)Nzhttps://docs.python.org/2/�Python)r-rg)rrr )rDr6rarrr�test_multiple_matches}sz"TestReadHtml.test_multiple_matchescCs<d}|j|dd�}dd�|D�}t|�tddg�ks8t�dS)Nzhttps://docs.python.org/2/r�)r-cSsg|]}|jddd��qS)rrH)rr)r^)�.0rOrrr�
<listcomp>�sz7TestReadHtml.test_python_docs_table.<locals>.<listcomp>ZRepoZWhat)r�sortedr )rDr6ra�zzrrr�test_python_docs_table�sz#TestReadHtml.test_python_docs_tablecCs"d}|j|�}t|�dkst�dS)z@
        Make sure that read_html ignores empty tables.
        a�
            <table>
                <thead>
                    <tr>
                        <th>A</th>
                        <th>B</th>
                    </tr>
                </thead>
                <tbody>
                    <tr>
                        <td>1</td>
                        <td>2</td>
                    </tr>
                </tbody>
            </table>
            <table>
                <tbody>
                </tbody>
            </table>
        rgN)rrr )rDr.�resultrrr�test_empty_tables�s
zTestReadHtml.test_empty_tablescCs:|jd�d}tddgddggddgd	�}tj||�dS)
Na�<table>
            <thead>
                <tr>
                    <th>A</th>
                    <th>B</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td>1</td>
                    <td>2</td>
                </tr>
            </tbody>
            <tbody>
                <tr>
                    <td>3</td>
                    <td>4</td>
                </tr>
            </tbody>
        </table>rrgrdrIrH�A�B)rr_)rr
r$r%)rDr��expectedrrr�test_multiple_tbody�s
z TestReadHtml.test_multiple_tbodycCs0|jd�d}tddidgd�}tj||�dS)zt
        Don't fail with bs4 when there is a header and only one column
        as described in issue #9178
        a3<table>
                <thead>
                    <tr>
                        <th>Header</th>
                    </tr>
                </thead>
                <tbody>
                    <tr>
                        <td>first</td>
                    </tr>
                </tbody>
            </table>r�Header�first)rr�N)rr
r$r%)rDr�r�rrr�test_header_and_one_column�s
z'TestReadHtml.test_header_and_one_columncCs8|jd�d}tdddggdddgd	�}tj||�d
S)zK
        Ensure parser adds <tr> within <thead> on malformed HTML.
        a�<table>
            <thead>
                <tr>
                    <th>Country</th>
                    <th>Municipality</th>
                    <th>Year</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td>Ukraine</td>
                    <th>Odessa</th>
                    <td>1944</td>
                </tr>
            </tbody>
        </table>rZUkraineZOdessai�ZCountryZMunicipalityZYear)rr_N)rr
r$r%)rDr�r�rrr�test_thead_without_tr�s
z"TestReadHtml.test_thead_without_trcCs�d}tddggddgd�}tddgddggddgd�}|jd	d
�}|jdd
�}|j|�d}|j|�d}tj||�tj||�d
S)zh
        Make sure that read_html reads tfoot, containing td or th.
        Ignores empty tfoot
        a�<table>
            <thead>
                <tr>
                    <th>A</th>
                    <th>B</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td>bodyA</td>
                    <td>bodyB</td>
                </tr>
            </tbody>
            <tfoot>
                {footer}
            </tfoot>
        </table>ZbodyAZbodyBr�r�)rr_ZfootAZfootB�)�footerz%<tr><td>footA</td><th>footB</th></tr>rN)r
rLrr$r%)rDZ
data_templateZ	expected1Z	expected2rr�Zresult1Zresult2rrr�test_tfoot_read�szTestReadHtml.test_tfoot_readcCs4|jddd�d}tddggd	d�}tj||�dS)
Na

            <table>
                <tr>
                    <td>S</td>
                    <td>I</td>
                </tr>
                <tr>
                    <td>text</td>
                    <td>1944</td>
                </tr>
            </table>
        r)re�texti��S�I)r_)r�r�)rr
r$r%)rDr�r�rrr�&test_parse_header_of_non_string_columnsz3TestReadHtml.test_parse_header_of_non_string_columnc
s�ddlm��fdd�}|j|jdddid�d}t|d	d
dd�ttd
�d�}|j|jks^t�ddddddddddg
}dddddddd d!d"g
}|j|�j	||�}|j|�}|j
d#d#d$�}	d%d&g}
|	|
j
d#d#d'�|	|
<tj|	|�dS)(Nr)�_remove_whitespacecs"y�|�Stk
r|SXdS)N)�AttributeError)r)r�rr�
try_remove_ws:sz8TestReadHtml.test_banklist_header.<locals>.try_remove_wsr�rSrT)r-rJrr�csvzbanklist.csv)zUpdated DatezClosing Date)�
convertersz+First Vietnamese American BankIn Vietnamesez!Westernbank Puerto RicoEn Espanolz)R-G Premier Bank of Puerto RicoEn EspanolzEurobankEn EspanolzSanderson State BankEn EspanolzKWashington Mutual Bank(Including its subsidiary Washington Mutual Bank FSB)zSilver State BankEn Espanolz$AmTrade International BankEn EspanolzHamilton Bank, NAEn Espanolz5The Citizens Savings BankPioneer Community Bank, Inc.zFirst Vietnamese American BankzWesternbank Puerto RicozR-G Premier Bank of Puerto RicoZEurobankzSanderson State BankzWashington Mutual BankzSilver State BankzAmTrade International BankzHamilton Bank, NAzThe Citizens Savings BankT)�datetime�numericzClosing DatezUpdated Date)r�Zcoerce)
�pandas.io.htmlr�rrCrr
�shaper rK�replace�_convertr$r%)rDrr�rOZground_truth�old�newZdfnewZgtnewZ	convertedZ	date_colsr)r�r�test_banklist_header6sD
z!TestReadHtml.test_banklist_headercCs^d}t|jd��}|j�}WdQRX||ks0t�|j|jdddid�d}||j�ksZt�dS)NzGold Canyon�rrSrT)r-rJr)r|rCr}r rZ	to_string)rD�gcr~Zraw_textrOrrr�test_gold_canyonhszTestReadHtml.test_gold_canyoncCs4|jddd�d}|jddd�d}tj||�dS)Na�<table>
                        <thead>
                            <tr style="text-align: right;">
                            <th></th>
                            <th>C_l0_g0</th>
                            <th>C_l0_g1</th>
                            <th>C_l0_g2</th>
                            <th>C_l0_g3</th>
                            <th>C_l0_g4</th>
                            </tr>
                        </thead>
                        <tbody>
                            <tr>
                            <th>R_l0_g0</th>
                            <td> 0.763</td>
                            <td> 0.233</td>
                            <td> nan</td>
                            <td> nan</td>
                            <td> nan</td>
                            </tr>
                            <tr>
                            <th>R_l0_g1</th>
                            <td> 0.244</td>
                            <td> 0.285</td>
                            <td> 0.392</td>
                            <td> 0.137</td>
                            <td> 0.222</td>
                            </tr>
                        </tbody>
                    </table>r)r9a�<table>
                    <thead>
                        <tr style="text-align: right;">
                        <th></th>
                        <th>C_l0_g0</th>
                        <th>C_l0_g1</th>
                        <th>C_l0_g2</th>
                        <th>C_l0_g3</th>
                        <th>C_l0_g4</th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr>
                        <th>R_l0_g0</th>
                        <td> 0.763</td>
                        <td> 0.233</td>
                        </tr>
                        <tr>
                        <th>R_l0_g1</th>
                        <td> 0.244</td>
                        <td> 0.285</td>
                        <td> 0.392</td>
                        <td> 0.137</td>
                        <td> 0.222</td>
                        </tr>
                    </tbody>
                 </table>)rr$r%)rDr�r�rrr�test_different_number_of_colstsz*TestReadHtml.test_different_number_of_colscCs8|jd�d}tdddggdddgd	�}tj||�dS)
NaZ
            <table>
                <tr>
                    <th>A</th>
                    <th colspan="1">B</th>
                    <th rowspan="1">C</th>
                </tr>
                <tr>
                    <td>a</td>
                    <td>b</td>
                    <td>c</td>
                </tr>
            </table>
        r�a�b�cr�r��C)r_)rr
r$r%)rDr�r�rrr�test_colspan_rowspan_1�s
z#TestReadHtml.test_colspan_rowspan_1cCsD|jddd�d}tdddddggdd	d
ddgd�}tj||�dS)
Na�
            <table>
                <tr>
                    <td colspan="2">X</td>
                    <td>Y</td>
                    <td rowspan="2">Z</td>
                    <td>W</td>
                </tr>
                <tr>
                    <td>A</td>
                    <td colspan="2">B</td>
                    <td>C</td>
                </tr>
            </table>
        r)rer�r��Zr��XzX.1�Y�W)rr_)rr
r$r%)rDr�r�rrr� test_colspan_rowspan_copy_values�s z-TestReadHtml.test_colspan_rowspan_copy_valuescCsD|jddd�d}tdddddggddddd	gd
�}tj||�dS)Na(
            <table>
                <tr>
                    <td rowspan="2">A</td>
                    <td rowspan="2" colspan="3">B</td>
                    <td>C</td>
                </tr>
                <tr>
                    <td>D</td>
                </tr>
            </table>
        r)rer�r��DzB.1zB.2r�)rr_)rr
r$r%)rDr�r�rrr�test_colspan_rowspan_both_not_1�s z,TestReadHtml.test_colspan_rowspan_both_not_1cCs8|jddd�d}tddggddgd�}tj||�dS)Nz�
            <table>
                <tr>
                    <td>A</td>
                    <td rowspan="2">B</td>
                </tr>
                <tr>
                    <td>C</td>
                </tr>
            </table>
        r)rer�r�r�)rr_)rr
r$r%)rDr�r�rrr�test_rowspan_at_end_of_rowsz'TestReadHtml.test_rowspan_at_end_of_rowcCs>|jddd�d}tddgddggddgd�}tj||�dS)Nz�
            <table>
                <tr>
                    <td rowspan="3">A</td>
                    <td rowspan="3">B</td>
                </tr>
            </table>
        r)rer�r�)rr_)rr
r$r%)rDr�r�rrr�test_rowspan_only_rows)sz#TestReadHtml.test_rowspan_only_rowscCsT|jd�d}tddgddggddgddggd�}tdd	gg|d
�}tj||�dS)Nam
            <table>
                <tr>
                    <th>A</th>
                    <th>B</th>
                </tr>
                <tr>
                    <th>a</th>
                    <th>b</th>
                </tr>
                <tr>
                    <td>1</td>
                    <td>2</td>
                </tr>
            </table>
        rr�r�r�r�rg)�levels�codesrd)rr_)rrr
r$r%)rDr�r_r�rrr�+test_header_inferred_from_rows_with_only_th<s$z8TestReadHtml.test_header_inferred_from_rows_with_only_thcCsdtdtddd�i�}|j�}|j|dgdd�}tj||d�|j|dgdd�}tj||d�dS)N�datez1/1/2001�
)�periodsrgr)�parse_datesr9)r
rrNrr$r%)rDrOr�rQrrr�test_parse_dates_listVsz"TestReadHtml.test_parse_dates_listcCsnttddd��}t|jdd��|jdd��d��}|j|j�dd	d
gid	d�}td|i�}tj||d�dS)
Nz1/1/2001r�)r�cSst|j��S)N)r�r�)rrrrrbsz7TestReadHtml.test_parse_dates_combine.<locals>.<lambda>cSst|j��S)N)r��time)rrrrrcs)r�r�r�rgrd)r�r9r)rrr
r"rrNr$r%)rDZ	raw_datesrOrQZnewdfrrr�test_parse_dates_combine^sz%TestReadHtml.test_parse_dates_combinecCs�|dddd�}tjj|�s,tt|��d���tjj|�sJtt|��d���|j|ddd	�d
}|jdkslt�d
|jdks~t�|dj	t
j	d�ks�t�t
j|jdd�s�t�dS)Nrrr.zwikipedia_states.htmlz is not a filez is an empty file�Arizonarg)r-rer�<��Unnamed�sq mi�float64gH�zPN$A)r�r�rr)rr�)
r�r��isfiler �repr�getsizerr�r_�dtypert�allclose�loc)rDrrr�rrr�test_wikipedia_states_tablelsz(TestReadHtml.test_wikipedia_states_tablecCsp|dddd�}|j|ddd�d}|jdks0t�d
|jddksFt�|jjdksVt�tj|jdd�slt�dS)Nrrr.zwikipedia_states.htmlr�r)r-r9r��r�rgrd�Alaska�
Total area[2]�sq migH�zPN$A)r�r�rr�r�r�)r�r�)rr�r r_Znlevelsrtr�r�)rDrrr�rrr� test_wikipedia_states_multiindexvsz-TestReadHtml.test_wikipedia_states_multiindexcCs4d}tjt|d��|jdddgd�WdQRXdS)NzGPassed header=\[0,1\] are too many rows for this multi_index of columns)r-aK
                <table>
                    <thead>
                        <tr><th></th><th></tr>
                        <tr><th>A</th><th>B</th></tr>
                    </thead>
                    <tbody>
                        <tr><td>a</td><td>b</td></tr>
                    </tbody>
                </table>
            rrg)re)r1r2r	r)rDr)rrr�%test_parser_error_on_empty_header_row~s
z2TestReadHtml.test_parser_error_on_empty_header_rowcCsL|jddd�d}tddidgd�}|djtjd�ks<t�tj||�dS)	Na�<html>
            <body>
             <table>
                <thead>
                    <tr>
                        <th>Header</th>
                    </tr>
                </thead>
                <tbody>
                    <tr>
                        <td>1100#101</td>
                    </tr>
                </tbody>
            </table>
            </body>
        </html>�#)�decimalrr�g�C�lg0�@)rr�r�)rr
r�rtr r$r%)rDr�r�rrr�test_decimal_rows�szTestReadHtml.test_decimal_rowscCs8x2dD]*}tjt��|j|j|d�WdQRXqWdS)NTF)re)TF)r1r2rvrrA)rD�argrrr�test_bool_header_arg�s
z!TestReadHtml.test_bool_header_argcCs6|jddtid�d}tdddgi�}tj||�dS)Na�<table>
                 <thead>
                   <tr>
                     <th>a</th>
                    </tr>
                 </thead>
                 <tbody>
                   <tr>
                     <td> 0.763</td>
                   </tr>
                   <tr>
                     <td> 0.244</td>
                   </tr>
                 </tbody>
               </table>r�)r�rz0.763z0.244)rr�r
r$r%)rDr�r�rrr�test_converters�s
zTestReadHtml.test_converterscCs6|jddgd�d}tddtjgi�}tj||�dS)Na�<table>
                 <thead>
                   <tr>
                     <th>a</th>
                   </tr>
                 </thead>
                 <tbody>
                   <tr>
                     <td> 0.763</td>
                   </tr>
                   <tr>
                     <td> 0.244</td>
                   </tr>
                 </tbody>
               </table>g�Zd;�?)Z	na_valuesrr�g�"�~j�?)rr
rt�nanr$r%)rDr�r�rrr�test_na_values�szTestReadHtml.test_na_valuescCshd}tdddgi�}|j|dd�d}tj||�tdtjtjgi�}|j|dd�d}tj||�dS)	Na�<table>
                        <thead>
                            <tr>
                            <th>a</th>
                            </tr>
                        </thead>
                        <tbody>
                            <tr>
                            <td> N/A</td>
                            </tr>
                            <tr>
                            <td> NA</td>
                            </tr>
                        </tbody>
                    </table>r�zN/AZNAF)Zkeep_default_narT)r
rr$r%rtr�)rDZ	html_data�expected_df�html_dfrrr�test_keep_default_na�sz!TestReadHtml.test_keep_default_nacCs>|jd�d}tddgtjtjggddgd�}tj||�dS)Nak
            <table>
                <tr>
                    <th>A</th>
                    <th>B</th>
                </tr>
                <tr>
                    <td>a</td>
                    <td>b</td>
                </tr>
                <tr>
                    <td></td>
                    <td></td>
                </tr>
            </table>
        rr�r�r�r�)rr_)rr
rtr�r$r%)rDr�r�rrr�test_preserve_empty_rows�s
 z%TestReadHtml.test_preserve_empty_rowscCsT|jd�d}tddgddggddgddggd�}tdd	gg|d
�}tj||�dS)NaU
            <table>
                <thead>
                    <tr><th></th><th></tr>
                    <tr><th>A</th><th>B</th></tr>
                    <tr><th>a</th><th>b</th></tr>
                </thead>
                <tbody>
                    <tr><td>1</td><td>2</td></tr>
                </tbody>
            </table>
        rr�r�r�r�rg)r�r�rd)rr_)rrr
r$r%)rDr�r_r�rrr�,test_ignore_empty_rows_when_inferring_headers$z9TestReadHtml.test_ignore_empty_rows_when_inferring_headercCsPtdddgd	�}d
ddgd
ddgg|_|jdd�}|j|�d}tj||�dS)N�Hillary�Dr��Bernie�J�Donald�E�R)rzUnnamed: 0_level_0ZAgeZParty�NamezUnnamed: 1_level_1zUnnamed: 2_level_1F)r�r)r�r�r�)rrr�)rrr)r
r_rNrr$r%)rDr�r.r�rrr�test_multiple_header_rows,sz&TestReadHtml.test_multiple_header_rowscCs@|dddd�}|j|dd�}t|t�s*t�t|dt�s<t�dS)Nrrr.zvalid_markup.htmlr)r9)rrr�r r
)rDrr:rarrr�test_works_on_valid_markup9sz'TestReadHtml.test_works_on_valid_markupcCs&|dddd�}|j|dddgd�dS)	Nrrr.z
banklist.htmlz	.*Water.*r8�html5lib)r-r/)r)rDrrCrrr�test_fallback_success?sz"TestReadHtml.test_fallback_successcCs:tddd�}ttjjdd�|d�}|j�}d|ks6t�dS)Nz
2000-01-01r�)r�rH)r�)rr
rt�randomZrandnrNr )rD�rngrOr�rrr�test_to_html_timestampDsz#TestReadHtml.test_to_html_timestampzdisplayed_only,exp0,exp1ZfooNFzfoo  bar  baz  quxcCsTtd�}|j||d�}tj|d|�|dk	r@tj|d|�nt|�dksPt�dS)Na<html>
          <body>
            <table>
              <tr>
                <td>
                  foo
                  <span style="display:none;text-align:center">bar</span>
                  <span style="display:none">baz</span>
                  <span style="display: none">qux</span>
                </td>
              </tr>
            </table>
            <table style="display: none">
              <tr>
                <td>foo</td>
              </tr>
            </table>
          </body>
        </html>)�displayed_onlyrrg)rrr$r%rr )rDr
Zexp0Zexp1rrarrr�test_displayed_onlyKs	z TestReadHtml.test_displayed_onlyc
Cs�tjj|�}tjj|�d}|jd�\}}y�t|d��}|j|j�|dd�j�}WdQRXt|d��"}|jt	|j��|dd�j�}WdQRX|j||dd�j�}	t
j||�t
j||	�Wn4tk
r�t
�r�d|ks�d|kr�tj��YnXdS)Nr�_�rb)r@r9Z16Z32)r�r��basename�splitext�splitr|rr}�poprr$r%�	Exceptionrr1�skip)
rDr�	base_path�rootrr@�fobjZfrom_stringZfrom_file_like�
from_filenamerrr�test_encoders&"zTestReadHtml.test_encodec	Csj|jjjd�dkrtjd�Gdd�dt�}|d�}|j|�sBt�tjtdd��|j|�WdQRXdS)	Nr/r8zNot applicable for lxmlc@seZdZdd�ZdS)zFTestReadHtml.test_parse_failure_unseekable.<locals>.UnseekableStringIOcSsdS)NFr)rDrrr�seekable�szOTestReadHtml.test_parse_failure_unseekable.<locals>.UnseekableStringIO.seekableN)�__name__�
__module__�__qualname__rrrrr�UnseekableStringIO�sr z?
            <table><tr><td>spam<foobr />eggs</td></tr></table>z#passed a non-rewindable file object)r-)	r�keywords�getr1rrr r2r5)rDr �badrrr�test_parse_failure_unseekable�s
z*TestReadHtml.test_parse_failure_unseekablecCs>Gdd�d�}|d�}|d�}|j|�s,t�|j|�s:t�dS)Nc@s.eZdZdd�Zd
dd�Zdd�Zdd	�ZdS)z9TestReadHtml.test_parse_failure_rewinds.<locals>.MockFilecSs||_d|_dS)NF)r�at_end)rDrrrr�__init__�szBTestReadHtml.test_parse_failure_rewinds.<locals>.MockFile.__init__NcSs|jr
dn|j}d|_|S)Nr�T)r%r)rD�sizerrrrr}�sz>TestReadHtml.test_parse_failure_rewinds.<locals>.MockFile.readcSs
d|_dS)NF)r%)rD�offsetrrr�seek�sz>TestReadHtml.test_parse_failure_rewinds.<locals>.MockFile.seekcSsdS)NTr)rDrrrr�szBTestReadHtml.test_parse_failure_rewinds.<locals>.MockFile.seekable)N)rrrr&r}r)rrrrr�MockFile�s
r*z/<table><tr><td>spam<br />eggs</td></tr></table>z2<table><tr><td>spam<foobr />eggs</td></tr></table>)rr )rDr*Zgoodr#rrr�test_parse_failure_rewinds�s
z'TestReadHtml.test_parse_failure_rewindscCs�Gdd�dtj�}ttjj�|dddd�}||j|fd�}||j|fd�}|j�|j�x|j�s^|j�rpq^Wd|j	ko�|j	kns�t
�dS)NcseZdZ�fdd�Z�ZS)z@TestReadHtml.test_importcheck_thread_safety.<locals>.ErrorThreadcsByt�j�Wn(tk
r6}z||_WYdd}~XnXd|_dS)N)�super�runr�err)rDr.)�	__class__rrr-�s
zDTestReadHtml.test_importcheck_thread_safety.<locals>.ErrorThread.run)rrrr-�
__classcell__rr)r/r�ErrorThread�sr1rrr.zvalid_markup.html)�targetr')�	threading�Threadr�pandasrr.r�start�is_aliver.r )rDrr1r:Zhelper_thread1Zhelper_thread2rrr�test_importcheck_thread_safety�s
z+TestReadHtml.test_importcheck_thread_safety)Yrrrr1�fixturerErGrRr$�networkrXrYr[�markZslowr\r`rbrcrfrirkrlrmrnrprsrurwrxryrzr{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�r�r�r�r�r�rrr	r�parametrizer
rrr$r+r8rrrrr>Ws�	

		
&2D!

"#r>)6�	functoolsr�	importlibrrrrr�r�r3�urllib.errorrZnumpyrtZnumpy.randomrr1Z
pandas.compatrZ
pandas.errorsr	Zpandas.util._test_decorators�utilZ_test_decorators�tdr5r
rrr
rrZpandas._testingZ_testingr$Zpandas.io.commonrr�rr��dirname�__file__ZHEREr9rr*Z
skip_if_nor4r7r;r;r<rr>rrrr�<module>sB