ó
šxŠ\c        
   @  sk  d  d l  m Z d  d l m Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l	 m
 Z
 d  d l Z d  d l m Z m Z m Z m Z m Z m Z m Z d  d l m Z d  d l j j Z d  d l m Z m Z m Z m Z m Z m  Z  m! Z! d  d l" j j# Z$ d  d l" m% Z& m' Z' d  d	 l( m) Z) m* Z* d  d l+ Z d  d
 l+ m, Z, e j- j. e/ ƒ Z0 e j1 d d d d d g ƒ d „  ƒ Z2 d „  Z3 e j4 d ƒ d „  ƒ Z5 d „  Z6 e j4 d ƒ e j4 d ƒ d „  ƒ ƒ Z7 e j8 j9 d e j: d d e j8 j; e j< d ƒ d d ƒƒe j: d d e j8 j; e j< d ƒ d d ƒƒg d d ƒd e= f d „  ƒ  Yƒ Z> d S(    iÿÿÿÿ(   t   print_function(   t   partialN(   t   rand(   t   PY3t   BytesIOt   StringIOt   is_platform_windowst   mapt   reloadt   zip(   t   ParserError(   t	   DataFramet   Indext
   MultiIndext   Seriest	   Timestampt
   date_ranget   read_csv(   t   makeCustomDataframet   network(   t   URLErrort   file_path_to_url(   t	   read_htmlt   paramss   chinese_utf-16.htmls   chinese_utf-32.htmls   chinese_utf-8.htmls   letz_latin1.htmlc         C  s   | d d d |  j  ƒ S(   s6   Parametrized fixture for HTML encoding test filenames.t   iot   datat   html_encoding(   t   param(   t   requestt   datapath(    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   html_encoding_file   s    c         O  s¿   t  |  ƒ t  | ƒ k s< t d j t  |  ƒ t  | ƒ ƒ ƒ ‚ d } t t d „  |  | ƒ ƒ } | so t | ƒ ‚ xI t |  | ƒ D]8 \ } } t j | | | | Ž | j s t d ƒ ‚ q Wd  S(   Ns@   lists are not of equal size len(list1) == {0}, len(list2) == {1}s$   not all list elements are DataFramesc         S  s   t  |  t ƒ o t  | t ƒ S(   N(   t
   isinstanceR   (   t   xt   y(    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   <lambda>.   s   s   frames are both empty(	   t   lent   AssertionErrort   formatt   allR   R	   t   tmt   assert_frame_equalt   empty(   t   list1t   list2t   argst   kwargst   msgt   both_framest   frame_it   frame_j(    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   assert_framelist_equal(   s    !	t   bs4c      	   C  s[   d d  l  } |  j | d d ƒ t j t d d ƒ! t | d d d ƒ d	 d
 ƒWd  QXd  S(   Niÿÿÿÿt   __version__s   4.2t   matchs   minimum versionR   R   s	   spam.htmlt   flavorR3   (   R3   t   setattrt   pytestt   raisest
   ValueErrorR   (   t   monkeypatchR   R3   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_bs4_version_fails6   s    c       	   C  sM   d }  d } d | d } t  j t d | ƒ t |  d d | ƒWd  QXd  S(   Ns
   google.coms   invalid flavors   \{s    \} is not a valid set of flavorsR5   t   googleR6   (   R8   R9   R:   R   (   t   urlR6   R.   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_invalid_flavor>   s
    t   lxmlc         C  sY   |  d d d ƒ } t  | d d d d g ƒ} t  | d d d d g ƒ} t | | ƒ d  S(	   NR   R   s   valid_markup.htmlt	   index_coli    R6   R@   R3   (   R   R2   (   R   t   filenamet   dfs_lxmlt   dfs_bs4(    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_same_orderingG   s    R6   t   markst   reasons   No bs4s   No lxmlt   scopet   classt   TestReadHtmlc           B  s.  e  Z e j d  e ƒ d „  ƒ Z e j d  e d d ƒ d „  ƒ Z d „  Z e d „  ƒ Z	 e d „  ƒ Z
 e j j d „  ƒ Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z  d „  Z! e d „  ƒ Z" e d „  ƒ Z# e j j d „  ƒ Z$ e j j d  „  ƒ Z% d! „  Z& e j j d" „  ƒ Z' e j j d# „  ƒ Z( e j j d$ „  ƒ Z) e j j d% „  ƒ Z* e j j d& „  ƒ Z+ e j j d' „  ƒ Z, e j j d( „  ƒ Z- d) „  Z. e d* „  ƒ Z/ e d+ „  ƒ Z0 e j j d, „  ƒ Z1 e j j d- „  ƒ Z2 d. „  Z3 d/ „  Z4 d0 „  Z5 d1 „  Z6 d2 „  Z7 d3 „  Z8 d4 „  Z9 e j j d5 „  ƒ Z: e j j d6 „  ƒ Z; d7 „  Z< d8 „  Z= d9 „  Z> d: „  Z? d; „  Z@ d< „  ZA d= „  ZB d> „  ZC d? „  ZD d@ „  ZE dA „  ZF dB „  ZG dC „  ZH dD „  ZI dE „  ZJ dF „  ZK dG „  ZL dH „  ZM dI „  ZN dJ „  ZO dK „  ZP e j j dL „  ƒ ZQ dM „  ZR e j jS dN e eT dO g ƒ dV f eV eT dP g ƒ eT dO g ƒ f g ƒ dQ „  ƒ ZW dR „  ZX dS „  ZY dT „  ZZ e j j dU „  ƒ Z[ RS(W   t   autousec         C  sM   | d d d ƒ |  _  i  |  _ t r4 d |  j d <n  | d d d ƒ |  _ d  S(   NR   R   s	   spam.htmls   UTF-8t   encodings   banklist.html(   t	   spam_datat   spam_data_kwargsR   t   banklist_data(   t   selfR   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt	   set_filesW   s
    	RH   t   functionc         c  s   t  t d | ƒ|  _ d  Vd  S(   NR6   (   R   R   (   RP   R6   R   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   set_defaults_   s    c      	   C  s   t  d d d d „  d t d t ƒj d j ƒ j t ƒ } | j ƒ  } |  j | d i d	 d
 6d d ƒd } t j	 | | ƒ d  S(   Ni   i   t
   data_gen_fc          W  s   t  ƒ  S(   N(   R   (   R,   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyR"   e   s    t   c_idx_namest   r_idx_namess   {0:.3f}t   attrst	   dataframeRI   RA   i    (
   t   mkdft   Falset   applymapR%   t   astypet   floatt   to_htmlR   R'   R(   (   RP   t   dft   outt   res(    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_to_html_compatd   s
    &c         C  sU   d } |  j  | d d i d d 6ƒ} |  j  | d d i d d 6ƒ} t | | ƒ d  S(   Ns8   http://www.fdic.gov/bank/individual/failed/banklist.htmls   First Federal Bank of FloridaRW   t   tablet   ids   Metcalf Bank(   R   R2   (   RP   R>   t   df1t   df2(    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_banklist_urlk   s
    c         C  s;   d } |  j  | d ƒ } |  j  | d ƒ } t | | ƒ d  S(   Nso   http://ndb.nal.usda.gov/ndb/foods/show/300772?fg=&man=&lfacet=&format=&count=&max=25&offset=&sort=&qlookup=spams	   .*Water.*t   Unit(   R   R2   (   RP   R>   Re   Rf   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_spam_urlt   s    c         C  sU   |  j  |  j d d i d d 6ƒ} |  j  |  j d d i d d 6ƒ} t | | ƒ d  S(   Ns   .*Florida.*RW   Rc   Rd   s   Metcalf Bank(   R   RO   R2   (   RP   Re   Rf   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_banklist}   s
    c         C  su   |  j  |  j d ƒ } |  j  |  j d ƒ } t | | ƒ | d j d d k sT t ‚ | d j d d k sq t ‚ d  S(   Ns	   .*Water.*Rh   i    t
   Proximatest   Nutrient(   i    i    (   R   RM   R2   t   ilocR$   t   columns(   RP   Re   Rf   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt	   test_spam†   s
    c         C  s<   |  j  |  j ƒ } x# | D] } t | t ƒ s t ‚ q Wd  S(   N(   R   RM   R   R   R$   (   RP   t   dfsR_   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_spam_no_matchŽ   s    c         C  sI   |  j  |  j d i d d 6ƒ} x# | D] } t | t ƒ s& t ‚ q& Wd  S(   NRW   Rc   Rd   (   R   RO   R   R   R$   (   RP   Rp   R_   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_banklist_no_match“   s    c         C  sL   |  j  |  j d d d ƒd } | j d d k s8 t ‚ | j sH t ‚ d  S(   Ns	   .*Water.*t   headeri   i    Rk   (   R   RM   Rn   R$   R)   (   RP   R_   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_spam_header˜   s    c         C  sG   |  j  |  j d d d ƒ} |  j  |  j d d d ƒ} t | | ƒ d  S(   Ns	   .*Water.*t   skiprowsi   Rh   (   R   RM   R2   (   RP   Re   Rf   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_skiprows_int   s    c         C  s^   |  j  |  j d d t d ƒ ƒd } |  j  |  j d d t d ƒ ƒd } t j | | ƒ d  S(   Ns	   .*Water.*Ru   i   i    Rh   (   R   RM   t   rangeR'   R(   (   RP   Re   Rf   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_skiprows_xrange£   s    %%c         C  sS   |  j  |  j d d d d g ƒ} |  j  |  j d d d d g ƒ} t | | ƒ d  S(   Ns	   .*Water.*Ru   i   i   Rh   (   R   RM   R2   (   RP   Re   Rf   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_skiprows_list¨   s    !!c         C  sS   |  j  |  j d d d d h ƒ} |  j  |  j d d d d h ƒ} t | | ƒ d  S(   Ns	   .*Water.*Ru   i   i   Rh   (   R   RM   R2   (   RP   Re   Rf   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_skiprows_set®   s    !!c         C  sG   |  j  |  j d d d ƒ} |  j  |  j d d d ƒ} t | | ƒ d  S(   Ns	   .*Water.*Ru   i   Rh   (   R   RM   R2   (   RP   Re   Rf   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_skiprows_slice´   s    c         C  sS   |  j  |  j d d t d ƒ ƒ} |  j  |  j d d t d ƒ ƒ} t | | ƒ d  S(   Ns	   .*Water.*Ru   i   Rh   (   R   RM   t   sliceR2   (   RP   Re   Rf   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_skiprows_slice_shortº   s    !!c         C  s\   |  j  |  j d d t d d ƒ ƒ} |  j  |  j d d t d d d ƒ ƒ} t | | ƒ d  S(	   Ns	   .*Water.*Ru   i   i   Rh   i   i   iÿÿÿÿ(   R   RM   R|   R2   (   RP   Re   Rf   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_skiprows_slice_longÀ   s    $'c         C  sY   |  j  |  j d d t j d ƒ ƒ} |  j  |  j d d t j d ƒ ƒ} t | | ƒ d  S(   Ns	   .*Water.*Ru   i   Rh   (   R   RM   t   npt   arangeR2   (   RP   Re   Rf   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_skiprows_ndarrayÆ   s    $c      	   C  s9   t  j t d d ƒ |  j |  j d d d ƒWd  QXd  S(   NR5   s%   is not a valid type for skipping rowss	   .*Water.*Ru   t   asdf(   R8   R9   t	   TypeErrorR   RM   (   RP   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_skiprows_invalidÍ   s    c         C  sG   |  j  |  j d d d ƒ} |  j  |  j d d d ƒ} t | | ƒ d  S(   Ns	   .*Water.*RA   i    Rh   (   R   RM   R2   (   RP   Re   Rf   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt
   test_indexÒ   s    c         C  sS   |  j  |  j d d d d d ƒ} |  j  |  j d d d d d ƒ} t | | ƒ d  S(   Ns	   .*Water.*Rs   i   RA   i    Rh   (   R   RM   R2   (   RP   Re   Rf   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_header_and_index_no_types×   s    	!c         C  sS   |  j  |  j d d d d d ƒ} |  j  |  j d d d d d ƒ} t | | ƒ d  S(   Ns	   .*Water.*Rs   i   RA   i    Rh   (   R   RM   R2   (   RP   Re   Rf   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt    test_header_and_index_with_typesÝ   s    	!c         C  sG   |  j  |  j d d d ƒ} |  j  |  j d d d ƒ} t | | ƒ d  S(   Ns	   .*Water.*RA   i    Rh   (   R   RM   R2   (   RP   Re   Rf   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_infer_typesã   s    c         C  s•   t  |  j |  j   } t | j ƒ  ƒ } Wd  QXt  |  j |  j   } t | j ƒ  ƒ } Wd  QX|  j | d ƒ } |  j | d ƒ } t | | ƒ d  S(   Ns	   .*Water.*Rh   (   t   openRM   RN   R   t   readR   R2   (   RP   t   ft   data1t   data2Re   Rf   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_string_ioê   s    c         C  s_   t  |  j |  j   } | j ƒ  } Wd  QX|  j | d ƒ } |  j | d ƒ } t | | ƒ d  S(   Ns	   .*Water.*Rh   (   R‰   RM   RN   RŠ   R   R2   (   RP   R‹   R   Re   Rf   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_stringõ   s
    c         C  sq   t  |  j |  j   } |  j | d ƒ } Wd  QXt  |  j |  j   } |  j | d ƒ } Wd  QXt | | ƒ d  S(   Ns	   .*Water.*Rh   (   R‰   RM   RN   R   R2   (   RP   R‹   Re   Rf   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_file_likeþ   s
    c         C  s-   t  j t ƒ  |  j d d d ƒWd  QXd  S(   Ns   git://github.comR5   s	   .*Water.*(   R8   R9   R   R   (   RP   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_bad_url_protocol  s    c         C  s_   y- t  j t ƒ  |  j d d d ƒWd  QXWn+ t k
 rZ } d t | ƒ k s[ t ‚ n Xd  S(   Ns   http://www.a23950sdfa908sd.comR5   s	   .*Water.*s   No tables found(   R8   R9   R   R   R:   t   strR$   (   RP   t   e(    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_invalid_url  s    c         C  sy   |  j  } |  j t t j j | ƒ ƒ d d i d d 6ƒ} t | t ƒ sO t ‚ x# | D] } t | t	 ƒ sV t ‚ qV Wd  S(   Nt   FirstRW   Rc   Rd   (
   RO   R   R   t   ost   patht   abspathR   t   listR$   R   (   RP   R>   Rp   R_   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_file_url  s    	c         C  sF   |  j  } t j t d d ƒ" |  j | d d i d d 6ƒWd  QXd  S(   NR5   s   No tables founds   First Federal Bank of FloridaRW   t	   tasdfableRd   (   RO   R8   R9   R:   R   (   RP   R>   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_invalid_table_attrs  s    	c         O  s&   |  j  |  j d d i d d 6| | ŽS(   Nt   MetcalfRW   Rc   Rd   (   R   RO   (   RP   R,   R-   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt
   _bank_data&  s    c         C  s8   |  j  d d d g ƒ d } t | j t ƒ s4 t ‚ d  S(   NRs   i    i   (   Rž   R   Rn   R   R$   (   RP   R_   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_multiindex_header*  s    c         C  s8   |  j  d d d g ƒ d } t | j t ƒ s4 t ‚ d  S(   NRA   i    i   (   Rž   R   t   indexR   R$   (   RP   R_   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_multiindex_index/  s    c         C  s\   |  j  d d d g d d d g ƒ d } t | j t ƒ s@ t ‚ t | j t ƒ sX t ‚ d  S(   NRs   i    i   RA   (   Rž   R   Rn   R   R$   R    (   RP   R_   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_multiindex_header_index4  s    (c         C  s`   t  j t d t ƒE |  j d d d g d d d t ƒ d } t | j t ƒ sV t	 ‚ Wd  QXd  S(   Nt   check_stacklevelRs   i    i   Ru   t   tupleize_cols(
   R'   t   assert_produces_warningt   FutureWarningRZ   Rž   t   TrueR   Rn   R   R$   (   RP   R_   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt&   test_multiindex_header_skiprows_tuples:  s    c         C  s>   |  j  d d d g d d ƒ d } t | j t ƒ s: t ‚ d  S(   NRs   i    i   Ru   (   Rž   R   Rn   R   R$   (   RP   R_   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_multiindex_header_skiprowsA  s    "c         C  sb   |  j  d d d g d d d g d d ƒ d } t | j t ƒ sF t ‚ t | j t ƒ s^ t ‚ d  S(   NRs   i    i   RA   Ru   (   Rž   R   R    R   R$   Rn   (   RP   R_   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt%   test_multiindex_header_index_skiprowsF  s    .c         C  sŽ   |  j  } |  j t t j j | ƒ ƒ d t j t j d ƒ ƒ d i d d 6ƒ} t | t	 ƒ sd t
 ‚ x# | D] } t | t ƒ sk t
 ‚ qk Wd  S(   NR5   t   FloridaRW   Rc   Rd   (   RO   R   R   R–   R—   R˜   t   ret   compileR   R™   R$   R   (   RP   R>   Rp   R_   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_regex_idempotencyL  s    	c      	   C  s?   d } t  j t d | ƒ |  j |  j d d d ƒWd  QXd  S(   Ns   \(you passed a negative value\)R5   t   WaterRu   iÿÿÿÿ(   R8   R9   R:   R   RM   (   RP   R.   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_negative_skiprowsV  s    c         C  s7   d } |  j  | d d ƒ} t | ƒ d k s3 t ‚ d  S(   Ns   https://docs.python.org/2/R5   t   Pythoni   (   R   R#   R$   (   RP   R>   Rp   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_multiple_matches[  s    c         C  sj   d } |  j  | d d ƒ} g  | D] } | j d d d !^ q" } t | ƒ t d d g ƒ k sf t ‚ d  S(	   Ns   https://docs.python.org/2/R5   R±   i    i   t   Repot   What(   i    i    (   R   Rm   t   sortedR$   (   RP   R>   Rp   R_   t   zz(    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_python_docs_tablea  s    'c         C  sk   d } | d d d ƒ } |  j  | d d d i d d	 6ƒ} | | } t d
 „  | j ƒ  Dƒ ƒ sg t ‚ d  S(   NiþÿÿÿR   R   s
   macau.htmlRA   i    RW   t   style1RI   c         s  s'   |  ] \ } } | j  ƒ  j ƒ  Vq d  S(   N(   t   isnat   any(   t   .0t   _t   s(    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pys	   <genexpr>p  s    (   R   Rº   t	   iteritemsR$   (   RP   R   t   all_non_nan_table_indext
   macau_dataRp   R_   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_thousands_macau_statsh  s    
c         C  sd   d } | d d d ƒ } |  j  | d d d d ƒ} | | } t d „  | j ƒ  Dƒ ƒ s` t ‚ d  S(	   NiþÿÿÿR   R   s
   macau.htmlRA   i    Rs   c         s  s'   |  ] \ } } | j  ƒ  j ƒ  Vq d  S(   N(   R¹   Rº   (   R»   R¼   R½   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pys	   <genexpr>y  s    (   R   Rº   R¾   R$   (   RP   R   R¿   RÀ   Rp   R_   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_thousands_macau_index_colr  s
    
c         C  s+   |  j  d ƒ } t | ƒ d k s' t ‚ d S(   s@   
        Make sure that read_html ignores empty tables.
        sà  
            <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>
        i   N(   R   R#   R$   (   RP   t   result(    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_empty_tables{  s    	c         C  sT   |  j  d ƒ d } t d d d g d d g g d d	 d
 g ƒ } t j | | ƒ d  S(   NsÎ  <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>i    R   i   i   i   i   Rn   t   At   B(   R   R   R'   R(   (   RP   RÃ   t   expected(    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_multiple_tbody–  s    -c         C  sF   |  j  d ƒ d } t d i d d 6d d g ƒ } t j | | ƒ d S(   st   
        Don't fail with bs4 when there is a header and only one column
        as described in issue #9178
        s3  <table>
                <thead>
                    <tr>
                        <th>Header</th>
                    </tr>
                </thead>
                <tbody>
                    <tr>
                        <td>first</td>
                    </tr>
                </tbody>
            </table>i    R   t   firstt   HeaderR    N(   R   R   R'   R(   (   RP   RÃ   RÇ   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_header_and_one_column²  s    c         C  sQ   |  j  d ƒ d } t d d d d g g d d d	 d
 g ƒ } t j | | ƒ d S(   sK   
        Ensure parser adds <tr> within <thead> on malformed HTML.
        sœ  <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>i    R   t   Ukrainet   Odessai˜  Rn   t   Countryt   Municipalityt   YearN(   R   R   R'   R(   (   RP   RÃ   RÇ   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_thead_without_trÈ  s
    c         C  sÅ   d } t  d d d g g d d d g ƒ } t  d d d g d d	 g g d d d g ƒ } | j d
 d ƒ } | j d
 d ƒ } |  j | ƒ d } |  j | ƒ d } t j | | ƒ t j | | ƒ d S(   sh   
        Make sure that read_html reads tfoot, containing td or th.
        Ignores empty tfoot
        s†  <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>R   t   bodyAt   bodyBRn   RÅ   RÆ   t   footAt   footBt   footert    s%   <tr><td>footA</td><th>footB</th></tr>i    N(   R   R%   R   R'   R(   (   RP   t   data_templatet	   expected1t	   expected2RŒ   R   t   result1t   result2(    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_tfoot_readâ  s    $		c         C  sH   |  j  d d d ƒd } t d d g g d d	 ƒ} t j | | ƒ d  S(
   Ns
  
            <table>
                <tr>
                    <td>S</td>
                    <td>I</td>
                </tr>
                <tr>
                    <td>text</td>
                    <td>1944</td>
                </tr>
            </table>
        Rs   i    t   texti˜  Rn   t   St   I(   Rß   Rà   (   R   R   R'   R(   (   RP   RÃ   RÇ   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt&   test_parse_header_of_non_string_column  s    c      
   C  s   | d d d ƒ } |  j  | d d d d d i d d	 6ƒd } t d
 d d d d g ƒ } d } | j d | k sx t ‚ t j | j | ƒ d  S(   NR   R   s   nyse_wsj.htmlRA   i    Rs   RW   t   mdcTableRI   s)   Issue(Roll over for charts and headlines)t   Volumet   Pricet   Chgs   % Chgid   (   R   R   t   shapeR$   R'   t   assert_index_equalRn   (   RP   R   R   R_   RÇ   t   nrows(    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_nyse_wsj_commas_table  s    c      
     sS  d d l  m ‰  ‡  f d †  } |  j |  j d d i d d 6ƒd } t | d	 d
 d ƒ d i t d 6t d 6ƒ} | j | j k s‰ t ‚ d d d d d d d d d d g
 } d d d d d d d d  d! d" g
 } | j | ƒ j	 | | ƒ } | j | ƒ } | j
 d# t d$ t ƒ }	 d d g }
 |	 |
 j
 d# t d% t ƒ |	 |
 <t j |	 | ƒ d  S(&   Niÿÿÿÿ(   t   _remove_whitespacec           s'   y ˆ  |  ƒ SWn t  k
 r" |  SXd  S(   N(   t   AttributeError(   R    (   Rê   (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   try_remove_ws+  s    R   RW   Rc   Rd   i    R   R   s   banklist.csvt
   converterss   Updated Dates   Closing Dates+   First Vietnamese American BankIn Vietnameses!   Westernbank Puerto RicoEn Espanols)   R-G Premier Bank of Puerto RicoEn Espanols   EurobankEn Espanols   Sanderson State BankEn EspanolsK   Washington Mutual Bank(Including its subsidiary Washington Mutual Bank FSB)s   Silver State BankEn Espanols$   AmTrade International BankEn Espanols   Hamilton Bank, NAEn Espanols5   The Citizens Savings BankPioneer Community Bank, Inc.s   First Vietnamese American Banks   Westernbank Puerto Ricos   R-G Premier Bank of Puerto Ricot   Eurobanks   Sanderson State Banks   Washington Mutual Banks   Silver State Banks   AmTrade International Banks   Hamilton Bank, NAs   The Citizens Savings Bankt   datetimet   numerict   coerce(   t   pandas.io.htmlRê   R   RO   R   R   Ræ   R$   R[   t   replacet   _convertR§   R'   R(   (   RP   R   Rì   R_   t   ground_trutht   oldt   newt   dfnewt   gtnewt	   convertedt	   date_cols(    (   Rê   s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_banklist_header'  s:    
	c         C  s   d } t  |  j d ƒ  } | j ƒ  } Wd  QX| | k s? t ‚ |  j |  j d d i d d 6ƒd } | | j ƒ  k s} t ‚ d  S(   Ns   Gold Canyont   rRW   Rc   Rd   i    (   R‰   RO   RŠ   R$   R   t	   to_string(   RP   t   gcR‹   t   raw_textR_   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_gold_canyonN  s    c         C  sF   |  j  d d d ƒd } |  j  d d d ƒd } t j | | ƒ d  S(   Ns  <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>RA   i    s¸  <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>(   R   R'   R(   (   RP   RÇ   RÃ   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_different_number_of_colsY  s
    c         C  sN   |  j  d ƒ d } t d d d g g d d d d	 g ƒ} t j | | ƒ d  S(
   NsZ  
            <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>
        i    t   at   bt   cRn   RÅ   RÆ   t   C(   R   R   R'   R(   (   RP   RÃ   RÇ   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_colspan_rowspan_1—  s    'c      	   C  sc   |  j  d d d ƒd } t d d d d d d g g d	 d
 d d d d g ƒ } t j | | ƒ d  S(   Ns…  
            <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>
        Rs   i    R   RÅ   RÆ   t   ZR  Rn   t   Xs   X.1t   Yt   W(   R   R   R'   R(   (   RP   RÃ   RÇ   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt    test_colspan_rowspan_copy_values¬  s
    c      	   C  sc   |  j  d d d ƒd } t d d d d d d g g d d d d	 d
 d g ƒ } t j | | ƒ d  S(   Ns(  
            <table>
                <tr>
                    <td rowspan="2">A</td>
                    <td rowspan="2" colspan="3">B</td>
                    <td>C</td>
                </tr>
                <tr>
                    <td>D</td>
                </tr>
            </table>
        Rs   i    R   RÅ   RÆ   t   DRn   s   B.1s   B.2R  (   R   R   R'   R(   (   RP   RÃ   RÇ   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_colspan_rowspan_both_not_1É  s
    c         C  sQ   |  j  d d d ƒd } t d d d g g d d d g ƒ } t j | | ƒ d  S(	   Nsñ   
            <table>
                <tr>
                    <td>A</td>
                    <td rowspan="2">B</td>
                </tr>
                <tr>
                    <td>C</td>
                </tr>
            </table>
        Rs   i    R   R  RÆ   Rn   RÅ   (   R   R   R'   R(   (   RP   RÃ   RÇ   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_rowspan_at_end_of_rowã  s    
$c         C  sZ   |  j  d d d ƒd } t d d d g d d g g d d d g ƒ } t j | | ƒ d  S(   Ns³   
            <table>
                <tr>
                    <td rowspan="3">A</td>
                    <td rowspan="3">B</td>
                </tr>
            </table>
        Rs   i    R   RÅ   RÆ   Rn   (   R   R   R'   R(   (   RP   RÃ   RÇ   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_rowspan_only_rowsû  s
    c         C  s~   |  j  d ƒ d } t d d d g d d g g d d d	 g d d	 g g ƒ } t d
 d	 d g g d | ƒ } t j | | ƒ d  S(   Nsm  
            <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>
        i    t   levelsRÅ   RÆ   R  R  t   codesi   R   i   Rn   (   R   R   R   R'   R(   (   RP   RÃ   Rn   RÇ   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt+   test_header_inferred_from_rows_with_only_th  s    c         C  s“   t  i t d d d ƒd 6ƒ } | j ƒ  } |  j | d d g d d ƒ} t j | | d ƒ |  j | d d g d d ƒ} t j | | d ƒ d  S(	   Ns   1/1/2001t   periodsi
   t   datet   parse_datesi   RA   i    (   R   R   R^   R   R'   R(   (   RP   R_   RÇ   Ra   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_parse_dates_list%  s    c         C  s£   t  t d d d ƒƒ } t i | j d „  ƒ d 6| j d „  ƒ d 6ƒ } |  j | j ƒ  d i d	 d
 g d 6d d	 ƒ} t i | d 6ƒ } t j | | d ƒ d  S(   Ns   1/1/2001R  i
   c         S  s   t  |  j ƒ  ƒ S(   N(   R’   R  (   R    (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyR"   /  s    R  c         S  s   t  |  j ƒ  ƒ S(   N(   R’   t   time(   R    (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyR"   0  s    R  R  i   i   Rï   RA   i    (   R   R   R   R   R   R^   R'   R(   (   RP   t	   raw_datesR_   Ra   t   newdf(    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_parse_dates_combine-  s    %	c      	   C  s„   | d d d ƒ } d } t  j t d | ƒ |  j | d d d g ƒWd  QX| d d d ƒ } |  j | d d d	 g ƒs€ t ‚ d  S(
   NR   R   s   computer_sales_page.htmlsG   Passed header=\[0,1\] are too many rows for this multi_index of columnsR5   Rs   i    i   i   (   R8   R9   R
   R   R$   (   RP   R   R   R.   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_computer_sales_page6  s    c         C  s˜   | d d d ƒ } t  j j | ƒ s4 t d | ƒ ‚ t  j j | ƒ sV t d | ƒ ‚ |  j | d d d ƒd	 } | d
 j t j d ƒ k s” t ‚ d  S(   NR   R   s   wikipedia_states.htmls   %r is not a files   %r is an empty filet   ArizonaRs   i   i    s   sq mit   float64(   R–   R—   t   isfileR$   t   getsizeR   t   dtypeR   (   RP   R   R   RÃ   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_wikipedia_states_table@  s
    ""c      	   C  s?   d } t  j t d | ƒ |  j d d d d g ƒWd  QXd  S(   NsG   Passed header=\[0,1\] are too many rows for this multi_index of columnsR5   sK  
                <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>
            Rs   i    i   (   R8   R9   R
   R   (   RP   R.   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt%   test_parser_error_on_empty_header_rowG  s    
c         C  sn   |  j  d d d ƒd } t d i d d 6d d g ƒ } | d j t j d	 ƒ k sZ t ‚ t j | | ƒ d  S(
   Ns  <html>
            <body>
             <table>
                <thead>
                    <tr>
                        <th>Header</th>
                    </tr>
                </thead>
                <tbody>
                    <tr>
                        <td>1100#101</td>
                    </tr>
                </tbody>
            </table>
            </body>
        </html>t   decimalt   #i    R   g–C‹lg0‘@RÊ   R    R  (   R   R   R!  R   R$   R'   R(   (   RP   RÃ   RÇ   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_decimal_rowsW  s
    "c      	   C  sG   x@ t  t g D]2 } t j t ƒ  |  j |  j d | ƒWd  QXq Wd  S(   NRs   (   R§   RZ   R8   R9   Rƒ   R   RM   (   RP   t   arg(    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_bool_header_argo  s    c         C  sM   |  j  d d i t d 6ƒd } t i d d g d 6ƒ } t j | | ƒ d  S(   Nsƒ  <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  i    s   0.763s   0.244(   R   R’   R   R'   R(   (   RP   RÃ   RÇ   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_convertersu  s    c         C  sL   |  j  d d d g ƒd } t i d t j g d 6ƒ } t j | | ƒ d  S(   Ns‚  <table>
                 <thead>
                   <tr>
                     <th>a</th>
                   </tr>
                 </thead>
                 <tbody>
                   <tr>
                     <td> 0.763</td>
                   </tr>
                   <tr>
                     <td> 0.244</td>
                   </tr>
                 </tbody>
               </table>t	   na_valuesg¬Zd;Ï?i    gÑ"Ûù~jè?R  (   R   R   R   t   nanR'   R(   (   RP   RÃ   RÇ   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_na_valuesŽ  s
    c         C  s”   d } t  i d d g d 6ƒ } |  j | d t ƒd } t j | | ƒ t  i t j t j g d 6ƒ } |  j | d t ƒd } t j | | ƒ d  S(   Nsé  <table>
                        <thead>
                            <tr>
                            <th>a</th>
                            </tr>
                        </thead>
                        <tbody>
                            <tr>
                            <td> N/A</td>
                            </tr>
                            <tr>
                            <td> NA</td>
                            </tr>
                        </tbody>
                    </table>s   N/At   NAR  t   keep_default_nai    (   R   R   RZ   R'   R(   R   R+  R§   (   RP   t	   html_datat   expected_dft   html_df(    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_keep_default_na¦  s    c         C  sZ   |  j  d ƒ d } t d d d g t j t j g g d d d g ƒ } t j | | ƒ d  S(	   Nsk  
            <table>
                <tr>
                    <th>A</th>
                    <th>B</th>
                </tr>
                <tr>
                    <td>a</td>
                    <td>b</td>
                </tr>
                <tr>
                    <td></td>
                    <td></td>
                </tr>
            </table>
        i    R   R  R  Rn   RÅ   RÆ   (   R   R   R   R+  R'   R(   (   RP   RÃ   RÇ   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_preserve_empty_rows¿  s
    $c         C  s~   |  j  d ƒ d } t d d d g d d g g d d d	 g d d	 g g ƒ } t d
 d	 d g g d | ƒ } t j | | ƒ d  S(   NsU  
            <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>
        i    R  RÅ   RÆ   R  R  R  i   R   i   Rn   (   R   R   R   R'   R(   (   RP   RÃ   Rn   RÇ   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt,   test_ignore_empty_rows_when_inferring_headerÖ  s    c         C  sr   t  d d d d g ƒ } d
 d d g d d d g g | _ | j d t ƒ } |  j | ƒ d } t j | | ƒ d  S(   NR   t   HillaryiD   R  t   BernieiJ   t   DonaldiE   t   Rs   Unnamed: 0_level_0t   Aget   Partyt   Names   Unnamed: 1_level_1s   Unnamed: 2_level_1R    i    (   R5  iD   R  (   R6  iJ   R  (   R7  iE   R8  (   R   Rn   R^   RZ   R   R'   R(   (   RP   R0  t   htmlR1  (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_multiple_header_rowsê  s    	c         C  sY   | d d d ƒ } |  j  | d d ƒ} t | t ƒ s< t ‚ t | d t ƒ sU t ‚ d  S(   NR   R   s   valid_markup.htmlRA   i    (   R   R   R™   R$   R   (   RP   R   RB   Rp   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_works_on_valid_markupö  s    c         C  s2   | d d d ƒ } |  j  | d d d d g ƒd  S(   NR   R   s   banklist.htmls	   .*Water.*R6   R@   t   html5lib(   R   (   RP   R   RO   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_fallback_successü  s    c         C  sU   t  d d d ƒ} t t j j d d ƒ d | ƒ} | j ƒ  } d | k sQ t ‚ d  S(   Ns
   2000-01-01R  i
   i   R    (   R   R   R   t   randomt   randnR^   R$   (   RP   t   rngR_   RÃ   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_to_html_timestamp  s    !s   displayed_only,exp0,exp1t   foos   foo  bar  baz  quxc         C  st   t  d ƒ } |  j | d | ƒ} t j | d | ƒ | d  k	 rX t j | d | ƒ n t | ƒ d k sp t ‚ d  S(   Ns  <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>t   displayed_onlyi    i   (   R   R   R'   R(   t   NoneR#   R$   (   RP   RF  t   exp0t   exp1R   Rp   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_displayed_only  s    	c         C  sF  t  j j t  j j | ƒ ƒ d j d ƒ \ } } yÉ t | d ƒ . } |  j | j ƒ  d | d d ƒj ƒ  } Wd  QXt | d ƒ 4 } |  j t	 | j ƒ  ƒ d | d d ƒj ƒ  } Wd  QX|  j | d | d d ƒj ƒ  } t
 j | | ƒ t
 j | | ƒ WnE t k
 rAt ƒ  rBd | k s+d | k r8t j ƒ  n  ‚  qBn Xd  S(   Ni    R¼   t   rbRL   RA   t   16t   32(   R–   R—   t   splitextt   basenamet   splitR‰   R   RŠ   t   popR   R'   R(   t	   ExceptionR   R8   t   skip(   RP   R   R¼   RL   t   fobjt   from_stringt   from_file_liket   from_filename(    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_encode)  s*    		c         C  s   |  j  j j d ƒ d k r+ t j d ƒ n  d t f d „  ƒ  Y} | d ƒ } |  j  | ƒ sb t ‚ t j t d d ƒ |  j  | ƒ Wd  QXd  S(	   NR6   R@   s   Not applicable for lxmlt   UnseekableStringIOc           B  s   e  Z d  „  Z RS(   c         S  s   t  S(   N(   RZ   (   RP   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   seekableK  s    (   t   __name__t
   __module__RZ  (    (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyRY  J  s   s?   
            <table><tr><td>spam<foobr />eggs</td></tr></table>R5   s#   passed a non-rewindable file object(	   R   t   keywordst   getR8   RS  R   R$   R9   R:   (   RP   RY  t   bad(    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_parse_failure_unseekableD  s    	
c         C  s\   d t  f d „  ƒ  Y} | d ƒ } | d ƒ } |  j | ƒ sC t ‚ |  j | ƒ sX t ‚ d  S(   Nt   MockFilec           B  s/   e  Z d  „  Z d d „ Z d „  Z d „  Z RS(   c         S  s   | |  _  t |  _ d  S(   N(   R   RZ   t   at_end(   RP   R   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   __init__[  s    	c         S  s%   |  j  r d n |  j } t |  _  | S(   NR×   (   Rb  R   R§   (   RP   t   sizeR   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyRŠ   _  s    	c         S  s   t  |  _ d  S(   N(   RZ   Rb  (   RP   t   offset(    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   seekd  s    c         S  s   t  S(   N(   R§   (   RP   (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyRZ  g  s    N(   R[  R\  Rc  RG  RŠ   Rf  RZ  (    (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyRa  Z  s   		s/   <table><tr><td>spam<br />eggs</td></tr></table>s2   <table><tr><td>spam<foobr />eggs</td></tr></table>(   t   objectR   R$   (   RP   Ra  t   goodR_  (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_parse_failure_rewindsW  s
    c           sÖ   d t  j f ‡  f d †  ƒ  Y‰  t t j j ƒ | d d d ƒ } ˆ  d |  j d | f ƒ } ˆ  d |  j d | f ƒ } | j ƒ  | j ƒ  x | j ƒ  sŽ | j ƒ  r© qŽ Wd  | j
 k oÇ | j
 k n sÒ t ‚ d  S(   Nt   ErrorThreadc             s   e  Z ‡  f d  †  Z RS(   c           sC   y t  ˆ  |  ƒ j ƒ  Wn t k
 r5 } | |  _ n
 Xd  |  _ d  S(   N(   t   supert   runRR  t   errRG  (   RP   R“   (   Rj  (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyRl  u  s
    (   R[  R\  Rl  (    (   Rj  (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyRj  t  s   R   R   s   valid_markup.htmlt   targetR,   (   t	   threadingt   ThreadR   t   pandasR   R<  R   t   startt   is_aliveRG  Rm  R$   (   RP   R   RB   t   helper_thread1t   helper_thread2(    (   Rj  s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   test_importcheck_thread_safetyp  s    


N(\   R[  R\  R8   t   fixtureR§   RQ   RS   Rb   R   Rg   Ri   t   markt   slowRj   Ro   Rq   Rr   Rt   Rv   Rx   Ry   Rz   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  R  R  R  R"  R#  R&  R(  R)  R,  R2  R3  R4  R=  R>  R@  RD  t   parametrizeR   RG  RZ   RJ  RX  R`  Ri  Rv  (    (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyRJ   P   s¤   !																											
	
	
						&		'	>										
												0			(?   t
   __future__R    t	   functoolsR   R–   R¬   Ro  t   numpyR   t   numpy.randomR   R8   t   pandas.compatR   R   R   R   R   R   R	   t   pandas.errorsR
   t   pandas.util._test_decoratorst   utilt   _test_decoratorst   tdRq  R   R   R   R   R   R   R   t   pandas.util.testingt   testingR'   R   RY   R   t   pandas.io.commonR   R   Rò   R   R—   t   dirnamet   __file__t   HERERw  R   R2   t
   skip_if_noR<   R?   RE   Rx  Rz  R   t   skipift   safe_importRg  RJ   (    (    (    s8   lib/python2.7/site-packages/pandas/tests/io/test_html.pyt   <module>   sB   44				(