
    j                     D    d Z ddlZddlZddlmZ d Zd Zd Zd Zd	 Z	dS )
z
Handle CSS stylesheets.

    N   )	parse_urlc              #      K   d}| j                                         D ]L}|j        dk    r?|                    d|          dk    r%|j        rt          j        |j        dd          V  MdS )z*Find the stylesheets included in ``tree``.text/cssz!{http://www.w3.org/2000/svg}styletypeTskip_commentsskip_whitespaceN)xml_treeitertaggettexttinycss2parse_stylesheet)treedefault_typeelements      S/home/ubuntu/budget-transfer-bot/.venv/lib/python3.11/site-packages/cairosvg/css.pyfind_stylesheetsr      s       L=%%'' 	H 	HK>>>FL11Z?? @
 +D$H H H H H H	H 	H    c              #     K   |D ]}|j         dk    r|j        dk    r|j        t          j        |j                  }|j         dvrBt          |j        |          }t          j        | 	                    |d          
                    d                    }t          | ||                                          D ]}|V  |j         dk    r|V  dS )zFind the rules in a stylesheet.zat-ruleimportN)stringurlr   zutf-8qualified-rule)r   lower_at_keywordcontentr   parse_one_component_valuepreluder   valuer   	fetch_urldecodefind_stylesheets_rulesgeturl)r   stylesheet_rulesr   rule	url_tokencss_url
stylesheets          r   r$   r$      s         9	!!$00T\5I$>t|LL	>):::#IOS99%6NN7J77>>wGGI I
2j'..*:*:< <  DJJJJ 9(((JJJ! r   c                 .   g }g }t          j        |           D ]y}|j        dk    rl|j                            d          sRt          j        |j                                                  }|j        r|n|}|	                    |j
        |f           z||fS )Ndeclaration-)r   parse_declaration_listr   name
startswith	serializer!   strip	importantappend
lower_name)inputnormal_declarationsimportant_declarationsr,   r!   declarationss         r   parse_declarationsr:   3   s    6u== 
A 
A --$//44 . &{'899??AAE*5*? )&&(  !7 ?@@@ 666r   c                    t          j                    }t          j                    }t          |           D ]}t          | ||          D ]s}t	          |j                  \  }}t          j        |j                  D ]@}|j        7|j	        s0|r|
                    ||           |r|
                    ||           At||fS )zFind and parse the stylesheets in ``tree``.

    Return two :class:`cssselect2.Matcher` objects,
    for normal and !important declarations.

    )
cssselect2Matcherr   r$   r:   r   compile_selector_listr    pseudo_elementnever_matchesadd_selector)	r   r   normal_matcherimportant_matcherr*   r'   r7   r8   selectors	            r   parse_stylesheetsrE   D   s     '))N"*,,&t,, > >
*4SAA 	> 	>D:L; ;7!7&<T\JJ > >+3$2 4* ;&33$&9; ; ;- >)66$&<> > >>	> ,,,r   c              #      K   | j         dk    rTt          j        | j        dd          D ]9}d                    d |j        D                       }|j        ||j        fV  8dS dS )z!Get the declarations in ``rule``.r   Tr    c              3   >   K   | ]}|                                 V  d S )N)r1   ).0parts     r   	<genexpr>z#get_declarations.<locals>.<genexpr>b   s,      KKDNN,,KKKKKKr   N)r   r   r.   r   joinr!   r5   r3   )r'   r,   r!   s      r   get_declarationsrM   ]   s      y$$$#:D$H H H 	G 	GKGGKK9JKKKKKE(%1FFFFFF %$	G 	Gr   )
__doc__r<   r   r   r   r   r$   r:   rE   rM    r   r   <module>rP      s    
           H H H   .7 7 7"- - -2G G G G Gr   