U
    c!                     @   sP  d dl Z d dlmZ d dlmZ d dlmZ dddZdddZ	e j
dd	d
ddgdd Ze j
ddddddddddddgdd Ze j
dddd d!d"gfd#d$d%d&d'gfd(d)d*d+d,gfd-d.d/d0d1gfd2d3d4d5d6gfgd7d8 Ze j
d9d:d;gfd<d=gfd>d?gfd@dAgfdBd;d=d?dAgfgdCdD Ze j
dEdFdGdHdIdJdKdLdMdNdOdPgdQdR Ze j
dSdTdUdVdWdXdYdZgd[d\ Ze j
d]d^d_d`gdadb Ze j
dcdddedfdgdhfdidjdgdhfdkdldmdgdhfdndodpdqdrdsdtduduge j
dvddwgdxdy Ze j
dzd{d|d}d~dddddddddddddddddddgdhfdgdd ZdS )    N)
CSSWarning)CSSResolverc                 C   s"   t  }|| |d}||kstd S N	inheritedr   AssertionError)csspropsr   resolveactual r   D/tmp/pip-unpacked-wheel-g7fro6k3/pandas/tests/io/formats/test_css.pyassert_resolves
   s    r   c                 C   s.   t  }|| |d}|||d}||ks*td S r   r   )Zcss1Zcss2r   r   Z	resolved1Z	resolved2r   r   r   assert_same_resolution   s    r   zname,norm,abnorm)
whitespacehello: world; foo: barz( 	 hello 	 :
  world 
  ;  
 foo: 	bar

)Zcaser   zHello: WORLD; foO: bar)z
empty-declr   z; hello: world;; foo: bar;
; ;)z
empty-list ;c                 C   s   t || d S Nr   )nameZnormZabnormr   r   r   test_css_parse_normalisation   s    r   zinvalid_css,remainder)zhello-worldr   )z border-style: solid; hello-worldzborder-style: solid)z3border-style: solid; hello-world; font-weight: boldz&border-style: solid; font-weight: bold)zfont-size: blahfont-size: 1em)zfont-size: 1a2br   )zfont-size: 1e5ptr   )zfont-size: 1+6ptr   )zfont-size: 1unknownunitr   )zfont-size: 10r   )zfont-size: 10 ptr   )zborder-top: 1pt solid red greenzborder-top: 1pt solid greenc              	   C   s$   t t t| | W 5 Q R X d S r   )tmassert_produces_warningr   r   )Zinvalid_css	remainderr   r   r   test_css_parse_invalid(   s    r   zshorthand,expansionsmarginz
margin-topzmargin-rightzmargin-bottomzmargin-leftpaddingzpadding-topzpadding-rightzpadding-bottomzpadding-leftzborder-widthzborder-top-widthzborder-right-widthzborder-bottom-widthborder-left-widthzborder-colorzborder-top-colorzborder-right-colorzborder-bottom-colorborder-left-colorzborder-stylezborder-top-stylezborder-right-stylezborder-bottom-styleborder-left-stylec              
   C   s   |\}}}}t |  d|d|d|d|di t |  d|d|d|d|di t |  d|d|d|d|di t |  d|d|d|d|di tt t |  d	i  W 5 Q R X d S )
Nz: 1pt1ptz	: 1pt 4ptZ4ptz: 1pt 4pt 2ptZ2ptz: 1pt 4pt 2pt 0ptZ0ptz: 1pt 1pt 1pt 1pt 1pt)r   r   r   r   )	shorthandZ
expansionstoprightbottomleftr   r   r   test_css_side_shorthandsD   s&    #  r)   zshorthand,sidesz
border-topr%   zborder-rightr&   zborder-bottomr'   zborder-leftr(   Zborderc                 C   s(   ddd}t |  d||ddd d S )Nc                 S   sN   i }| D ]@}|r ||d| d< |r4||d| d< |r||d| d< q|S )Nzborder-z-colorz-stylez-widthr   )sidescolorstylewidthresolvedZsider   r   r   create_border_dict   s    z;test_css_border_shorthand_sides.<locals>.create_border_dictz: 1pt red solidredsolidr#   )NNNr   )r$   r*   r/   r   r   r   test_css_border_shorthand_sides   s
    
 r3   zprop, expected)z1pt red solidr0   r1   r#   )zred 1pt solidr4   )zred solid 1ptr4   )zsolid 1pt redr4   )z	red solid)r0   r1   
1.500000pt)z	1pt solid)blackr1   r#   )z1pt red)r0   noner#   )r0   )r0   r7   r5   )r#   )r6   r7   r#   )r1   )r6   r1   r5   )1em)r6   r7   12ptc                 C   s&   |\}}}t d|  |||d d S )Nzborder-left: )r!   r"   r    r2   )propexpectedr+   r,   r-   r   r   r   test_css_border_shorthands   s    
r<   zstyle,inherited,equiv)zmargin: 1px; margin: 2pxr   margin: 2px)margin: 1pxr=   r>   )zmargin: 1px; margin: inheritr=   r=   )margin: 1px; margin-top: 2pxr   zHmargin-left: 1px; margin-right: 1px; margin-bottom: 1px; margin-top: 2px)margin-top: 2pxr>   r?   )r>   r@   r>   ) margin: 1px; margin-top: inheritr=   r?   c                 C   s2   t  }||}|| |d}||}||ks.td S r   r   )r,   r   equivr   Zinherited_propsZstyle_propsZequiv_propsr   r   r   test_css_precedence   s
    rC   zstyle,equiv)rA   z7margin-bottom: 1px; margin-right: 1px; margin-left: 1px)zmargin-top: inheritr   )zmargin-top: initialr   c                 C   s   t | | d S r   r   )r,   rB   r   r   r   test_css_none_absent   s    rD   zsize,resolved)zxx-small6ptzx-smallg      @fptsmallg333333#@)Zmediumr9   Zlargeg      +@)zx-large18pt)zxx-largeZ24pt)Z8pxrE   )z1.25pc15pt)z.25inrI   )z02.54cm72pt)z25.4mmrK   )z101.6qrK   relative_to16ptc                 C   s2   |d krd }nd|i}t d|  d|i|d d S Nz	font-sizezfont-size: r   r2   sizerL   r.   r   r   r   r   test_css_absolute_font_size   s    rQ   zsize,relative_to,resolved)r8   Nr9   )1.0emNr9   )1.25emNrJ   )r8   rM   rM   )rR   rM   rM   )rS   rM   20pt)Z1remrM   r9   )z1.0remrM   r9   )z1.25remrM   rJ   )100%Nr9   )125%NrJ   )rU   rM   rM   )rV   rM   rT   )Z2exNr9   )z2.0exNr9   )z2.50exNrJ   )ZinheritrM   rM   )smallerNZ10pt)rW   rI   rJ   largerg,@)rX   rJ   rI   c                 C   s2   |d krd }nd|i}t d|  d|i|d d S rN   r2   rO   r   r   r   test_css_relative_font_size  s    rY   )N)N)ZpytestZpandas.errorsr   Zpandas._testingZ_testingr   Zpandas.io.formats.cssr   r   r   markZparametrizer   r   r)   r3   r<   rC   rD   rQ   rY   r   r   r   r   <module>   s,  





"





