
     hу                         d Z dgZddlZddlZddlmZ ddlm	Z	m
Z
 ddlmZ ddlmZ  G d	 dej                  j                         Zy)
zCSSStyleSheet implements DOM Level 2 CSS CSSStyleSheet.

Partly also:
    - http://dev.w3.org/csswg/cssom/#the-cssstylesheet
    - http://www.w3.org/TR/2006/WD-css3-namespace-20060828/

TODO:
    - ownerRule and ownerNode
CSSStyleSheet    N)
Deprecated)_Namespaces_readUrl   )CSSRule)CSSVariablesDeclarationc                       e Zd ZdZ	 	 	 	 	 	 	 	 	 d# fd	Zd Zd Zd Zd Zd Z	e
d        Zej                  d	        Zd
 Zd Z e
eed      Zd Z	 d$dZd%dZd Zd Z e
eed      Ze
d        Zd Z e
d d      Zd Zd Zd&dZ e
d d      Zd Z e
ed      Z ed      d         Z  ed!      d"        Z! xZ"S )'r   a  CSSStyleSheet represents a CSS style sheet.

    Format::

        stylesheet
          : [ CHARSET_SYM S* STRING S* ';' ]?
            [S|CDO|CDC]* [ import [S|CDO|CDC]* ]*
            [ namespace [S|CDO|CDC]* ]* # according to @namespace WD
            [ [ ruleset | media | page ] [S|CDO|CDC]* ]*

    ``cssRules``
        All Rules in this style sheet, a :class:`~cssutils.css.CSSRuleList`.
    c
           
         t         
|   d|||||||	       || _        t        j                  j                         | _        t        | | j                        | _	        t               | _        || _        d| _        d| _        y)zN
        For parameters see :class:`~cssutils.stylesheets.StyleSheet`
        ztext/css)
validatingparentStyleSheetlogN)super__init__
_ownerRulecssutilscssCSSRuleListcssRulesr   _log_namespacesr	   
_variables	_readonly _CSSStyleSheet__encodingOverride_fetcher)selfhrefmediatitledisabled	ownerNoder   readonly	ownerRuler   	__class__s             Z/var/www/api/v1/venv_getwork_v1/lib/python3.12/site-packages/cssutils/css/cssstylesheet.pyr   zCSSStyleSheet.__init__&   s     	! 	 		
 $ 002&$))L13! #'    c              #   8   K   | j                   E d{    y7 w)z'Generator which iterates over cssRules.N	_cssRulesr   s    r&   __iter__zCSSStyleSheet.__iter__J   s     >>!!s   c           	          | j                   r| j                   j                  }nd }d| j                  j                   d| j                  d|d| j
                  d	S )Nzcssutils.css.z(href=z, media=z, title=))r   	mediaTextr%   __name__r   r    r   r/   s     r&   __repr__zCSSStyleSheet.__repr__N   sY    ::

,,IIt~~667vdii](S\R__ghlhrhrguuvwwr'   c           
         | j                   r| j                   j                  }nd }d| j                  j                  | j                  | j
                  || j                  | j                  j                  t        |       fz  S )NzT<cssutils.css.%s object encoding=%r href=%r media=%r title=%r namespaces=%r at 0x%x>)	r   r/   r%   r0   encodingr   r    
namespacesidr1   s     r&   __str__zCSSStyleSheet.__str__U   sl    ::

,,II7 ''		

**4
	
r'   c                 @   | j                   }t        | j                  j                               }d}|t	        |      k  r_||   }|j
                  |j                  k(  r,|j                  |j                  f|vr| j                  |       n|dz  }|t	        |      k  r^yy)z;Remove all namespace rules with same namespaceURI but last.r   r   N)
r   listr5   itemslentypeNAMESPACE_RULEprefixnamespaceURI
deleteRule)r   rulesnamespaceitemsirules        r&   _cleanNamespaceszCSSStyleSheet._cleanNamespacesh   s    doo3356#e*n8D		T000[[$"3"34NJ"Q #e*nr'   c                 v   t               }| D ]  }|j                  |j                  k(  r*|j                  |j                  j                                F|j                  |j                  k(  s`|D ]E  }|j                  |j                  k(  s|j                  |j                  j                                G  |S )z%Return set of URIs used in the sheet.)set
STYLE_RULEr<   updateselectorList_getUsedUris
MEDIA_RULE)r   usedurisr1r2s       r&   _getUsedURIszCSSStyleSheet._getUsedURIsw   s    5B}}' < < >?"'')Bww"--/ (D(D(FG 	  r'   c                     | j                   S )zDAll Rules in this style sheet, a :class:`~cssutils.css.CSSRuleList`.r)   r+   s    r&   r   zCSSStyleSheet.cssRules   s     ~~r'   c                     | j                   |_        | j                   |_        | j                  |_        |D ]	  }| |_         || _        y)z1Set new cssRules and update contained rules refs.N)
insertRuleappendextendr@   __delitem___parentStyleSheetr*   )r   r   rD   s      r&   r   zCSSStyleSheet.cssRules   sA     ////#D%)D"  "r'   c                 @    t         j                  j                  |       S )z9Textual representation of the stylesheet (a byte string).)r   serdo_CSSStyleSheetr+   s    r&   _getCssTextzCSSStyleSheet._getCssText   s    ||,,T22r'   c                      j                           j                  |      \  }} j                  |      }dd}d fd	} fd} fd} fd} fd}	 fd}
 fd	} fd
} fd} fd} j                  } j                  }t
        j                  j                          _        | _        t                _	        g } j                  d||||d d ||
|||||	|d|      \  }}|r-t          j                         _         j                          y| _        | _         j                           j                          y)a   Parse `cssText` and overwrites the whole stylesheet.

        :param cssText:
            a parseable string or a tuple of (cssText, dict-of-namespaces)
        :exceptions:
            - :exc:`~xml.dom.NamespaceErr`:
              If a namespace prefix is found which is not declared.
            - :exc:`~xml.dom.NoModificationAllowedErr`:
              Raised if the rule is readonly.
            - :exc:`~xml.dom.SyntaxErr`:
              Raised if the specified CSS string value has a syntax error and
              is unparsable.
        Nc                 "    t        d| xs d      S )Nr   r   )max)expectedseqtoken	tokenizers       r&   Sz$CSSStyleSheet._setCssText.<locals>.S   s     q(-a((r'   c                     j                  t        j                  j                  |g             t	        d| xs d      S )zspecial: sets parent*r   r   r   )rS   r   r   
CSSCommentr^   )r_   r`   ra   rb   r   s       r&   COMMENTz*CSSStyleSheet._setCssText.<locals>.COMMENT   s6    OOHLL33UGd3STq(-a((r'   c                 &   t         j                  j                        }j                  ||      |_        | dkD  r7j
                  j                  d|t        j                  j                         | S |j                  rj                  |       y)Nre   r   zFCSSStylesheet: CSSCharsetRule only allowed at beginning of stylesheet.r   )r   r   CSSCharsetRule_tokensupto2cssTextr   errorxmldomHierarchyRequestErr
wellformedrS   r_   r`   ra   rb   rD   r   s        r&   charsetrulez.CSSStyleSheet._setCssText.<locals>.charsetrule   sw    <<...ED,,Y>DL!|		2GG//	  %r'   c                 &   t         j                  j                        }j                  ||      |_        | dkD  r7j
                  j                  d|t        j                  j                         | S |j                  rj                  |       y)Nre   r   z.CSSStylesheet: CSSImportRule not allowed here.)r   r   CSSImportRulerj   rk   r   rl   rm   rn   ro   rp   rS   rq   s        r&   
importrulez-CSSStyleSheet._setCssText.<locals>.importrule   su    <<--t-DD,,Y>DL!|		GGG//
  %r'   c                 T   t         j                  j                  j                  ||            }| dkD  r7j                  j                  d|t        j                  j                         | S |j                  r|j                  j                  vrj                  |d       n_j                  j                  |j                        D ]7  }|j                  |j                  k(  s|j!                  |j"                         9 |j"                  j$                  |j                  <   y)N)rk   r      z1CSSStylesheet: CSSNamespaceRule not allowed here.F)_clean)r   r   CSSNamespaceRulerj   r   rl   rm   rn   ro   rp   r>   r5   rS   r   rulesOfTyper=   _replaceNamespaceURIr?   r   )r_   r`   ra   rb   rD   rr   s         r&   namespacerulez0CSSStyleSheet._setCssText.<locals>.namespacerule   s    <<00)))U;d 1 D !|		JGG//
  ;;doo5OODO7 "]]66t7J7JK88t{{22243D3DE L 150A0A  -r'   c                 F   t         j                  j                        }j                  ||      |_        | dkD  r7j
                  j                  d|t        j                  j                         | S |j                  r!j                  |       j                          y)Nre   rw   z1CSSStylesheet: CSSVariablesRule not allowed here.)r   r   CSSVariablesRulerj   rk   r   rl   rm   rn   ro   rp   rS   _updateVariablesrq   s        r&   variablesrulez0CSSStyleSheet._setCssText.<locals>.variablesrule   s    <<00$0GD,,Y>DL!|		JGG//
  %%%'r'   c                     t         j                  j                        }j                  ||      |_        |j
                  rj                  |       yNre      )r   r   CSSFontFaceRulerj   rk   rp   rS   rq   s        r&   fontfacerulez/CSSStyleSheet._setCssText.<locals>.fontfacerule  sD    <<///FD,,Y>DL%r'   c                     t         j                  j                        }j                  ||      |_        |j
                  rj                  |       yr   )r   r   CSSMediaRulerj   rk   rp   rS   rq   s        r&   	mediarulez,CSSStyleSheet._setCssText.<locals>.mediarule  D    <<,,d,CD,,Y>DL%r'   c                     t         j                  j                        }j                  ||      |_        |j
                  rj                  |       yr   )r   r   CSSPageRulerj   rk   rp   rS   rq   s        r&   pagerulez+CSSStyleSheet._setCssText.<locals>.pagerule  sD    <<++T+BD,,Y>DL%r'   c                    |d   t         j                  j                  j                  v rVj                  j                  d|d       t         j                  j                        }j                  ||      |_        nUj                  j                  d|d       t         j                  j                        }j                  ||      |_        |j                  rj                  |       t        d| xs d      S )Nr   z*CSSStylesheet: MarginRule out CSSPageRule.T)
neverraisere   z#CSSStylesheet: Unknown @rule found.r   )r   r   
MarginRulemarginsr   rl   rj   rk   warnCSSUnknownRulerp   rS   r^   rq   s        r&   unknownrulez.CSSStyleSheet._setCssText.<locals>.unknownrule  s    Qx8<<22:::		@%TX     ||...E#00EB		95T    ||22D2I#00EB% q(-a((r'   c                     t         j                  j                        }j                  ||      |_        |j
                  rj                  |       yr   )r   r   CSSStyleRulerj   rk   rp   rS   rq   s        r&   rulesetz*CSSStyleSheet._setCssText.<locals>.ruleset3  r   r'   r   c                       y N ignoreds    r&   <lambda>z+CSSStyleSheet._setCssText.<locals>.<lambda>O      r'   c                       y r   r   r   s    r&   r   z+CSSStyleSheet._setCssText.<locals>.<lambda>P  r   r'   )rc   rg   CDOCDCCHARSET_SYMFONT_FACE_SYM
IMPORT_SYMNAMESPACE_SYMPAGE_SYM	MEDIA_SYMVARIABLES_SYM	ATKEYWORD)defaultr   r   )_checkReadonly_splitNamespacesOff
_tokenize2r   r   r   r   r   r	   r   _parser   r   rE   r*   r   )r   rk   r5   rb   rc   rg   rr   ru   r}   r   r   r   r   r   r   oldCssRulesoldNamespacesnewseqrp   r_   s   `                   r&   _setCssTextzCSSStyleSheet._setCssText   sL    	"66w?OOG,		)
	)	$	"	6	$				)*	 mm(( 002%13   ${{",,*!-(!.$&!.( %  +  

H* *DdiiPD!!# )DN,D!!#!!#r'   z8Textual representation of the stylesheet (a byte string)c                     	 | j                   }t        || j                  | j                  |      S # t        $ r5 	 | j                  d   j                  }n# t        t        f$ r d}Y nw xY wY `w xY w)zORead (encoding, enctype, decodedContent) from `url` for @import
        sheets.r   N)fetcheroverrideEncodingparentEncoding)_CSSStyleSheet__newEncodingAttributeErrorr*   r4   
IndexErrorr   r   r   )r   urlr   s      r&   _resolveImportzCSSStyleSheet._resolveImporto  sz    
	&!//N MM!44)	
 	
  	&&!%!2!;!;/ &!%&		&s2   1 	A/AA/A)&A/(A))A/.A/c                     |r|| _         |r|| _        || _        |r| j                   | _        d| _         y|r|| _        	 | `yy# t        $ r Y yw xY w)zSet `cssText` but use `encodingOverride` to overwrite detected
        encoding. This is used by parse and @import during setting of cssText.

        If `encoding` is given use this but do not save as `encodingOverride`.
        N)r   r   rk   r4   r   )r   rk   encodingOverrider4   s       r&   _setCssTextWithEncodingOverridez-CSSStyleSheet._setCssTextWithEncodingOverride  sg     &6D#!)D 33DM&*D#$DM&	 
 " s   A 	AAc                     || _         y)z4Set @import URL loader, if None the default is used.N)r   )r   r   s     r&   _setFetcherzCSSStyleSheet._setFetcher  s	    r'   c                 `    	 | j                   d   j                  S # t        t        f$ r Y yw xY w)zEncoding set in :class:`~cssutils.css.CSSCharsetRule` or if ``None``
        resulting in default ``utf-8`` encoding being used.r   zutf-8)r*   r4   r   r   r+   s    r&   _getEncodingzCSSStyleSheet._getEncoding  s3    	>>!$---N+ 		s    --c                    	 | j                   d   }|r5|j                  |j                  k(  r|r||_        y| j                  d       y|r1| j                  t        j                  j                  |      d       yy# t        $ r d}Y xw xY w)zSet `encoding` of charset rule if present in sheet or insert a new
        :class:`~cssutils.css.CSSCharsetRule` with given `encoding`.
        If `encoding` is None removes charsetrule if present resulting in
        default encoding of utf-8.
        r   N)r4   )
r*   r   CHARSET_RULEr<   r4   r@   rS   r   r   ri   )r   r4   rD   s      r&   _setEncodingzCSSStyleSheet._setEncoding  s    	>>!$D D%%2 ("OOHLL777JAN   	D	s   A< <B
	B
zW(cssutils) Reflect encoding of an @charset rule or 'utf-8' (default) if set to ``None``c                     | j                   S )z*All Namespaces used in this CSSStyleSheet.)r   r+   s    r&   r5   zCSSStyleSheet.namespaces  s     r'   c                    | j                   j                  t        j                        D ]K  }|j                  }|s|j
                  D ]+  }| j                  j                  ||j
                  |          - M | j                   j                  t        j                        D ]<  }|j
                  D ]+  }| j                  j                  ||j
                  |          - > y)zdUpdates self._variables, called when @import or @variables rules
        is added to sheet.
        N)	r   rz   r   IMPORT_RULE
styleSheet	variablesr   setVariableVARIABLES_RULE)r   r|   svarvrs        r&   r   zCSSStyleSheet._updateVariables  s     **7+>+>?AA;;COO//Q[[5EF ' @ --++G,B,BCB||++Cc1BC $ Dr'   c                     | j                   S r   )r   r+   s    r&   r   zCSSStyleSheet.<lambda>      T__r'   zA :class:`cssutils.css.CSSVariablesDeclaration` containing all available variables in this CSSStyleSheet including the ones defined in imported sheets.)docc                 *    | j                  |dd      S )zoAdd `rule` to style sheet at appropriate position.
        Same as ``insertRule(rule, inOrder=True)``.
        NT)indexinOrder)rS   r   rD   s     r&   addzCSSStyleSheet.add  s     t4>>r'   c                    | j                          t        |t              rHt        | j                        D ]  \  }}||k(  s|} n# t
        j                  j                  d|z        	 | j                  |   }|j                  |j                  k(  r| D cg c](  }|j                  |j                  k(  s|j                  * }}| j                         }|j                  |v r=|j                  |j                        dk(  rt
        j                  j                  d      d|_        | j                  |= yc c}w # t         $ r>}t
        j                  j                  d|| j                  j"                  fz        |d}~ww xY w)a~  Delete rule at `index` from the style sheet.

        :param index:
            The `index` of the rule to be removed from the StyleSheet's rule
            list. For an `index` < 0 **no** :exc:`~xml.dom.IndexSizeErr` is
            raised but rules for normal Python lists are used. E.g.
            ``deleteRule(-1)`` removes the last rule in cssRules.

            `index` may also be a CSSRule object which will then be removed
            from the StyleSheet.

        :exceptions:
            - :exc:`~xml.dom.IndexSizeErr`:
              Raised if the specified index does not correspond to a rule in
              the style sheet's rule list.
            - :exc:`~xml.dom.NamespaceErr`:
              Raised if removing this rule would result in an invalid StyleSheet
            - :exc:`~xml.dom.NoModificationAllowedErr`:
              Raised if this style sheet is readonly.
        z<CSSStyleSheet: Not a rule in this sheets'a cssRules list: %sr   zHCSSStyleSheet: NamespaceURI defined in this rule is used, cannot remove.NzCCSSStyleSheet: %s is not a valid index in the rulelist of length %i)r   
isinstancer   	enumerater   rm   rn   IndexSizeErrr*   r<   r=   r?   rP   countNoModificationAllowedErrrW   r   length)r   r   rC   r|   rD   urisrM   errs           r&   r@   zCSSStyleSheet.deleteRule  sk   * 	eW%!$--01A:E 1
 gg**79>? 
	&>>%(D yyD///04S1!BRBR8RS,,.$$0TZZ@Q@Q5RVW5W''::/  &*D"u% T  	''&&$dnn&;&;<= 	s$   *D: D55D5:	F9E<<Fc           	         | j                          |t        | j                        }nX|dk  s|| j                  j                  kD  r:t        j
                  j                  d|d| j                  j                  d      t        |t              rmt        | j                  | j                  | j                  | j                  | j                        }| j                  |_        | j"                  |_        |j%                  d      sa| j                  rU| j                  d   j&                  | j                  d   j(                  k(  r"d\  }}| j                  d   j*                  |z   }nd	\  }}|| j,                  f|_        t        |j.                        |k7  s1t        |j.                  |   t0        j2                  j4                        s| j6                  j9                  d
|z         y|j.                  |   }d|_        nNt        |t0        j2                  j<                        r*t?        |      D ]  \  }}	| jA                  |	||z           |S |jB                  s| j6                  j9                  d       y|j&                  |j(                  k(  r|rrd}| j                  rF| j                  d   j&                  |j(                  k(  r |jD                  | j                  d   _"        n| j                  jG                  d|       n|dk7  s2| j                  r\| j                  d   j&                  |j(                  k(  r6| j6                  j9                  dt        j
                  jH                         y| j                  jG                  ||       n?|j&                  |jJ                  |jL                  fv r|s|dk(  rh| j                  r\| j                  d   j&                  |j(                  k(  r6| j6                  j9                  dt        j
                  jH                         y| j                  jG                  ||       n|j&                  |jN                  k(  r|r|j&                  d | D        v r\t?        tQ        | j                              D ]9  \  }}	|	j&                  |j&                  k(  s t        | j                        |z
  } nS nP| j                  r5| j                  d   j&                  |j(                  |jL                  fv rd}nd}n|dk(  rh| j                  r\| j                  d   j&                  |j(                  k(  r6| j6                  j9                  dt        j
                  jH                         y| j                  d| D ]  }	|	j&                  |	jR                  |	jT                  |	jV                  |	jX                  |	jZ                  |	j\                  fv sT| j6                  j9                  d|z  t        j
                  jH                          y | j                  jG                  ||       | j_                          n|j&                  |jR                  k(  rg|r|j&                  d | D        v r\t?        tQ        | j                              D ]9  \  }}	|	j&                  |j&                  k(  s t        | j                        |z
  } n nt?        | j                        D ]e  \  }}	|	j&                  |	jT                  |	jV                  |	jX                  |	jZ                  |	j\                  |	jJ                  |	jL                  fv sb|} n n| j                  |d D ]`  }	|	j&                  |	j(                  |	jN                  fv s(| j6                  j9                  d|z  t        j
                  jH                          y | j                  d| D ]  }	|	j&                  |	jT                  |	jV                  |	jX                  |	jZ                  |	j\                  fv sI| j6                  j9                  d|z  t        j
                  jH                          y |j`                  | jb                  v r'| jb                  |j`                     |jd                  k(  s3| j                  jG                  ||       |r| jg                          n|j&                  |jT                  k(  r|r|j&                  d | D        v r\t?        tQ        | j                              D ]9  \  }}	|	j&                  |j&                  k(  s t        | j                        |z
  } n| nyt?        | j                        D ]Z  \  }}	|	j&                  |	jV                  |	jX                  |	jZ                  |	j\                  |	jJ                  |	jL                  fv sW|} n n| j                  |d D ]k  }	|	j&                  |	j(                  |	jN                  |	jR                  fv s3| j6                  j9                  d|z  t        j
                  jH                          y | j                  d| D ]v  }	|	j&                  |	jV                  |	jX                  |	jZ                  |	j\                  fv s>| j6                  j9                  d|z  t        j
                  jH                          y | j                  jG                  ||       | j_                          n|r4| j                  ji                  |       t        | j                        dz
  }n| j                  |d D ]k  }	|	j&                  |	j(                  |	jN                  |	jR                  fv s3| j6                  j9                  d|z  t        j
                  jH                          y | j                  jG                  ||       | |_        |jN                  |j&                  k(  r|jj                  s|j                  |_
        |S )a(  
        Used to insert a new rule into the style sheet. The new rule now
        becomes part of the cascade.

        :param rule:
            a parsable DOMString, in cssutils also a
            :class:`~cssutils.css.CSSRule` or :class:`~cssutils.css.CSSRuleList`
        :param index:
            of the rule before the new rule will be inserted.
            If the specified `index` is equal to the length of the
            StyleSheet's rule collection, the rule will be added to the end
            of the style sheet.
            If `index` is not given or ``None`` rule will be appended to rule
            list.
        :param inOrder:
            if ``True`` the rule will be put to a proper location while
            ignoring `index` and without raising
            :exc:`~xml.dom.HierarchyRequestErr`.
            The resulting index is returned nevertheless.
        :returns: The index within the style sheet's rule collection
        :Exceptions:
            - :exc:`~xml.dom.HierarchyRequestErr`:
              Raised if the rule cannot be inserted at the specified `index`
              e.g. if an @import rule is inserted after a standard rule set
              or other at-rule.
            - :exc:`~xml.dom.IndexSizeErr`:
              Raised if the specified `index` is not a valid insertion point.
            - :exc:`~xml.dom.NoModificationAllowedErr`:
              Raised if this style sheet is readonly.
            - :exc:`~xml.dom.SyntaxErr`:
              Raised if the specified rule has a syntax error and is
              unparsable.
        Nr   zCSSStyleSheet: Invalid index z" for CSSRuleList with a length of .)r   r   r    r   r$   z@charset)rw   r   )r   r   z CSSStyleSheet: Not a CSSRule: %sz-CSSStyleSheet: Invalid rules cannot be added.zKCSSStylesheet: @charset only allowed once at the beginning of a stylesheet.)rl   z/CSSStylesheet: @charset must be the first rule.c              3   4   K   | ]  }|j                     y wr   r<   .0r|   s     r&   	<genexpr>z+CSSStyleSheet.insertRule.<locals>.<genexpr>        6A   r   z)CSSStylesheet: Found @charset at index 0.zwCSSStylesheet: Cannot insert @import here, found @namespace, @variables, @media, @page or CSSStyleRule before index %s.c              3   4   K   | ]  }|j                     y wr   r   r   s     r&   r   z+CSSStyleSheet.insertRule.<locals>.<genexpr>  r   r   zWCSSStylesheet: Cannot insert @namespace here, found @charset or @import after index %s.znCSSStylesheet: Cannot insert @namespace here, found @variables, @media, @page or CSSStyleRule before index %s.c              3   4   K   | ]  }|j                     y wr   r   r   s     r&   r   z+CSSStyleSheet.insertRule.<locals>.<genexpr>  r   r   zcCSSStylesheet: Cannot insert @variables here, found @charset, @import or @namespace after index %s.zbCSSStylesheet: Cannot insert @variables here, found @media, @page or CSSStyleRule before index %s.z^CSSStylesheet: Cannot insert rule here, found @charset, @import or @namespace before index %s.)6r   r;   r*   r   rm   rn   r   r   strr   r   r   r    r   r$   r"   
_ownerNoder   
startswithr<   r   rk   r   r   r   r   r   r   rl   rW   r   r   rS   rp   r4   insertro   UNKNOWN_RULErg   r   reversedr=   r   rL   	PAGE_RULErH   FONT_FACE_RULEr   r>   r5   r?   rE   rT   	hrefFound)
r   rD   r   r   rx   	tempsheetnewrulescountnewruleindexrC   r|   s
             r&   rS   zCSSStyleSheet.insertRule%  s	   D 	 ='EQY%$.."7"77''&&#($..*?*?A  dC %YYjjjj!%!6!6..I $(>>I !%I ??:.NN1%**dnnQ.?.L.LL /3+|~~a(0047.2+| "&t'7'7 8I9%%&-7y11,?AUAUV		 BT IJ%%l3D%)D" hll667!$1519- (LIIOOKL 99)))>>dnnQ&7&<&<@Q@Q&Q15DNN1%.NN))!T2!4>>!#4#9#9T=N=N#N		2''55   
 %%eT2 YY4,,dll;;G
NNNN1%**d.?.??		E''55    %%eT2 YY$***99 6 66 )(4>>*B C166TYY.$'$7!$;E! !D ~~$..*;*@*@))E + !" ! QJq)..$2C2CCIIOOC!gg99 $  /Avv(((((("  		=?DE #&''"="=	 (   0  NN!!%.!!# YY$---99 6 66 )(4>>*B C166TYY.$'$7!$;E! !D !*$.. 9166,,LLKKLL,,NNII&  %&E! !: /Avv!..!--!@@		IKPQ"%''"="= ( 
  0 /Avv(((("  		0278 #&''"="=	 (   0" t.OODKK0D4E4EE %%eT2))+ YY$---99 6 66 )(4>>*B C166TYY.$'$7!$;E! !D !*$.. 9166LLKKLL,,NNII&  %&E! !: /Avv!..!--AQAQ!RR		)+01 #&''"="=	 (   0 /Avv((	"  		0278 #&''"="=	 (   0 NN!!%.!!# %%d+DNN+a//Avv!..!--AQAQ!RR		OQVW"%''"="= ( 
  0 %%eT2 "&tyy(		DIr'   c                     | j                   S r   )r   r+   s    r&   r   zCSSStyleSheet.<lambda>f  r   r'   z:A ref to an @import rule if it is imported, else ``None``.c                 \    | j                   D ]  }t        |d      s|j                  r y y)z&Check if each contained rule is valid.validFT)r   hasattrr   r   s     r&   	_getValidzCSSStyleSheet._getValidj  s(    MMDtW%djj " r'   z)``True`` if all contained rules are validz3Use ``cssutils.setSerializer(serializer)`` instead.c                 d    t        |t        j                        r|t        _        yt	        d      )z7Set the cssutils global Serializer used for all output.z9Serializer must be an instance of cssutils.CSSSerializer.N)r   r   CSSSerializerrY   
ValueError)r   cssserializers     r&   setSerializerzCSSStyleSheet.setSerializert  s+     mX%;%;<(HLN r'   z+Set pref in ``cssutils.ser.prefs`` instead.c                 X    t         j                  j                  j                  ||       y)zSet a Preference of CSSSerializer used for output.
        See :class:`cssutils.serialize.Preferences` for possible
        preferences to be set.
        N)r   rY   prefs__setattr__)r   prefvalues      r&   setSerializerPrefzCSSStyleSheet.setSerializerPref~  s     	&&tU3r'   )	NN NNNFNT)NNr   )NFT)#r0   
__module____qualname____doc__r   r,   r2   r7   rE   rP   propertyr   setterr[   r   rk   r   r   r   r   r   r4   r5   r   r   r   r@   rS   r$   r   r   r   r  r  __classcell__)r%   s   @r&   r   r      sa     "H"x
&
   __	" 	"3O$b BG
. 8<> O$ 	'H    D" $I?6&p~@
 $KI
 Y$OPEEF G =>4 ?4r'   )r  __all__xml.domrm   cssutils.stylesheetsr   cssutils.helperr   cssutils.utilr   r   cssruler   cssvariablesdeclarationr	   stylesheets
StyleSheetr   r   r'   r&   <module>r     s@    
   & /  <m4H((33 m4r'   