o
    ôT·jÝ!  ã                   @   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   úc/home/dinkstrade/pdmp-scanner/venv/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Î    

þ
þ


þ
þ
þëþ
"
ûþ

þ
þ
þ
òþëþ