a
    [Xh                     @   sT   d Z ddlmZ ddlZddlZddlmZ ddlmZ dd	 Z	d
d Z
dd ZdS )zApply CSS to SVG documents.    )urljoinN   )LOGGER   )	parse_urlc                 c   s   |D ]}|j dkr|jdkr|jdu rt|j}|j dvr>qtt||j}t	| 
|d }| }t| ||E dH  q|j dkr|V  qdS )z.Find rules among stylesheet rules and imports.zat-ruleimportN)stringurltext/csszqualified-rule)typeZlower_at_keywordcontenttinycss2Zparse_one_component_valuepreluder   r   valueparse_stylesheetZ	fetch_urldecodegeturlfind_stylesheets_rules)treeZstylesheet_rulesr	   ruleZ	url_tokenZcss_url
stylesheet r   W/var/www/viveiro_mudafortebrasil/venv/lib/python3.9/site-packages/weasyprint/svg/css.pyr      s    


r   c                 C   sd   g }g }t | D ]H}|jdkr|jdst |j }|jrF|n|}|	|j
|f q||fS )z+Parse declarations in a given rule content.declaration-)r   Zparse_blocks_contentsr   name
startswith	serializer   stripZ	importantappendZ
lower_name)inputnormal_declarationsimportant_declarationsr   r   Zdeclarationsr   r   r   parse_declarations"   s    


r#   c                 C   s  t  }t  }g }| j D ]<}|jdkr|dddkr|jr|tj	|jddd q|D ]}t
| ||D ]}t|j\}}	zt |j}
W nB t jjy } z&td| W Y d}~ q`W Y d}~n
d}~0 0 |
D ]6}|jdu r|js|r ||| |	r|||	 qqpq`||fS )z8Find stylesheets and return rule matchers in given tree.z!{http://www.w3.org/2000/svg}styler   r
   T)Zskip_commentsZskip_whitespacez(Failed to apply CSS rule in SVG rule: %sN)
cssselect2ZMatcherZetree_elementitertaggettextr   r   r   r   r#   r   Zcompile_selector_listr   parserZSelectorErrorr   warningZpseudo_elementZnever_matchesZadd_selector)r   r	   Znormal_matcherZimportant_matcherZstylesheetselementr   r   r!   r"   	selectors	exceptionselectorr   r   r   parse_stylesheets4   sJ    

$

r/   )__doc__urllib.parser   r$   r   loggerr   utilsr   r   r#   r/   r   r   r   r   <module>   s   