
    3vj                     Z    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l	m
Z
 d	 Zd
 Zd Zy)zApply CSS to SVG documents.    )urljoinN   )preprocess_descriptors)LOGGER   )	parse_urlc           	   #   D  K   |D ]  }|j                   dk(  rl|j                  dk(  r|j                  t        j                  |j
                        }|j                   dvr]t        t        ||j                              }t        j                  | j                  |d      j                               }|j                         }t        | ||||      E d{    |j                  dk(  s||t        j                  |j                        }	t        t!        d||	            }
dD ]E  }||
vst#        j$                  d|j'                  d	d
      |j(                  |j*                          k |j-                  |
|       |j                   dk(  s|  y7 ǭw)z.Find rules among stylesheet rules and imports.zat-ruleimportN)stringurltext/cssz	font-face)srcfont_familyz3Missing %s descriptor in '@font-face' rule at %d:%d_-zqualified-rule)typelower_at_keywordcontenttinycss2parse_one_component_valuepreluder   r   valueparse_stylesheet	fetch_urldecodegeturlfind_stylesheets_rulesparse_blocks_contentsdictr   r   warningreplacesource_linesource_columnadd_font_face)treestylesheet_rulesr   font_configurl_fetcherrule	url_tokencss_url
stylesheetr   rule_descriptorskeys               E/root/.hermes/venv/lib/python3.12/site-packages/weasyprint/svg/css.pyr   r      s      99	!$$0T\\5I$>>t||L	>>)::#GC$AB%66NN7J7>>@B
nn&1*c;E E E&&+5*{/F&<<T\\JG'+.{CI(K$5 Q&66"NN!(),S#)> $ 0 0$2D2DF "Q $112BKP YY**J=Es1   CF FF ,F /F 2>F 1A#F 	F c                 R   g }g }t        j                  |       D ]  }|j                  dk(  s|j                  j	                  d      r/t        j
                  |j                        j                         }|j                  r|n|}|j                  |j                  |f        ||fS )z+Parse declarations in a given rule content.declarationr   )r   r   r   name
startswith	serializer   strip	importantappend
lower_name)inputnormal_declarationsimportant_declarationsr1   r   declarationss         r/   parse_declarationsr=   2   s    55e< 
A -$$//4&&{'8'89??AE*5*?*?&(  !7!7 ?@
A  666    c                     t        j                         }t        j                         }g }| j                  j                         D ]f  }|j                  dk(  s|j                  dd      dk(  s)|j                  s6|j                  t        j                  |j                  dd             h |D ]  }t        | ||||      D ]  }	t        |	j                        \  }
}	 t        j                  |	j                        }|D ]E  }|j&                  |j(                  r|
r|j+                  ||
       |s4|j+                  ||       G   ||fS # t         j                  j                   $ r!}t#        j$                  d|       Y d}~ d}~ww xY w)z8Find stylesheets and return rule matchers in given tree.z!{http://www.w3.org/2000/svg}styler   r   T)skip_commentsskip_whitespacez(Failed to apply CSS rule in SVG rule: %sN)
cssselect2Matcheretree_elementitertaggettextr7   r   r   r   r=   r   compile_selector_listr   parserSelectorErrorr   r    pseudo_elementnever_matchesadd_selector)r%   r   r'   r(   normal_matcherimportant_matcherstylesheetselementr,   r)   r:   r;   	selectors	exceptionselectors                  r/   parse_stylesheetsrV   D   s   '')N"**, K%%**, 	IKK>>FJ/:= x88D$ H I	I " >
*j#{KA 	>D:L;7!7&<<T\\J	
 & >++3$22*&33$&9;-)66$&<>>	>>* ,,, $$22 >	Ks   EF,FF)__doc__urllib.parser   rB   r   css.validation.descriptorsr   loggerr   utilsr   r   r=   rV    r>   r/   <module>r]      s*    !     ?   J7$)-r>   