o
    ŀg!                     @   s  d dl Z d dlmZ d dlmZ d dlmZ dfddZdfddZ	e j
dg d	d
d Ze j
dg ddd Ze j
ddg dfdg dfdg dfdg dfdg dfgdd Ze j
dddgfd d!gfd"d#gfd$d%gfd&g d'fgd(d) Ze j
d*g d+d,d- Ze j
d.g d/d0d1 Ze j
d2g d3d4d5 Ze j
d6d7d8d9d:d;fd<d=d:d;fd>d?d@d:d;fdAdBdCdDdEdFdGdHdHge j
dIddJgdKdL Ze j
dMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`daddbd:d;fdcgddde ZdS )g    N)
CSSWarningCSSResolverc                 C   s"   t  }|| |d}||ksJ d S N	inheritedr   )csspropsr   resolveactual r   T/var/www/html/myenv/lib/python3.10/site-packages/pandas/tests/io/formats/test_css.pyassert_resolves
   s   r   c                 C   s.   t  }|| |d}|||d}||ksJ d S r   r   )css1css2r   r
   	resolved1	resolved2r   r   r   assert_same_resolution   s   r   zname,norm,abnorm))
whitespacehello: world; foo: barz( 	 hello 	 :
  world 
  ;  
 foo: 	bar

)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   )namenorm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 d    d S 1 sw   Y  d S r   )tmassert_produces_warningr   r   )invalid_css	remainderr   r   r   test_css_parse_invalid(   s   "r$   zshorthand,expansionsmargin)z
margin-topzmargin-rightzmargin-bottomzmargin-leftpadding)zpadding-topzpadding-rightzpadding-bottomzpadding-leftzborder-width)zborder-top-widthzborder-right-widthzborder-bottom-widthborder-left-widthzborder-color)zborder-top-colorzborder-right-colorzborder-bottom-colorborder-left-colorzborder-style)z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 d    d S 1 s_w   Y  d S )
Nz: 1pt1ptz	: 1pt 4pt4ptz: 1pt 4pt 2pt2ptz: 1pt 4pt 2pt 0pt0ptz: 1pt 1pt 1pt 1pt 1pt)r   r    r!   r   )	shorthand
expansionstoprightbottomleftr   r   r   test_css_side_shorthandsD   s$   #"r4   zshorthand,sidesz
border-topr0   zborder-rightr1   zborder-bottomr2   zborder-leftr3   border)r0   r1   r2   r3   c                 C   s(   ddd}t |  d||ddd d S )Nc                 S   sN   i }| D ] }|r||d| d< |r||d| d< |r$||d| d< q|S )Nzborder-z-colorz-stylez-widthr   )sidescolorstylewidthresolved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.   r6   r<   r   r   r   test_css_border_shorthand_sides   s   
r@   zprop, expected))z1pt red solidr=   r>   r*   )zred 1pt solidrA   )zred solid 1ptrA   )zsolid 1pt redrA   )z	red solid)r=   r>   
1.500000pt)z	1pt solid)blackr>   r*   )z1pt red)r=   noner*   )r=   )r=   rD   rB   )r*   )rC   rD   r*   )r>   )rC   r>   rB   )1em)rC   rD   12ptc                 C   s&   |\}}}t d|  |||d d S )Nzborder-left: )r(   r)   r'   r?   )propexpectedr7   r8   r9   r   r   r   test_css_border_shorthands   s   
rI   zstyle,inherited,equiv))zmargin: 1px; margin: 2pxr   margin: 2px)margin: 1pxrJ   rK   )zmargin: 1px; margin: inheritrJ   rJ   )margin: 1px; margin-top: 2pxr   zHmargin-left: 1px; margin-right: 1px; margin-bottom: 1px; margin-top: 2px)margin-top: 2pxrK   rL   )rK   rM   rK   ) margin: 1px; margin-top: inheritrJ   rL   c                 C   s2   t  }||}|| |d}||}||ksJ d S r   r   )r8   r   equivr
   inherited_propsstyle_propsequiv_propsr   r   r   test_css_precedence   s
   rS   zstyle,equiv))rN   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   )r8   rO   r   r   r   test_css_none_absent   s   rT   zsize,resolved)zxx-small6ptzx-smallg      @fptsmallg333333#@)mediumrF   largeg      +@)zx-large18pt)zxx-large24pt)8pxrU   )z1.25pc15pt)z.25inr[   )z02.54cm72pt)z25.4mmr_   )z101.6qr_   relative_to16ptc                 C   2   |d u rd }nd|i}t d|  d|i|d d S Nz	font-sizezfont-size: r   r?   sizer`   r:   r   r   r   r   test_css_absolute_font_size   s   rf   zsize,relative_to,resolved)rE   NrF   )1.0emNrF   )1.25emNr^   )rE   ra   ra   )rg   ra   ra   )rh   ra   20pt)1remra   rF   )z1.0remra   rF   )z1.25remra   r^   )100%NrF   )125%Nr^   )rk   ra   ra   )rl   ra   ri   )2exNrF   )z2.0exNrF   )z2.50exNr^   )inheritra   ra   )smallerN10pt)ro   r[   r^   largerg,@)rq   r^   r[   c                 C   rb   rc   r?   rd   r   r   r   test_css_relative_font_size  s   rr   r   )pytestpandas.errorsr   pandas._testing_testingr    pandas.io.formats.cssr   r   r   markparametrizer   r$   r4   r@   rI   rS   rT   rf   rr   r   r   r   r   <module>   s    








"


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