
    ]hn                         d dl mZmZmZ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mZ d dlmZ 	 dgZd	Zd
Zd dlZej,                  d    dk\  reZneZd Z G d dej6                  j8                        Zy)    )unicode_literalsdivisionabsolute_importprint_functionN   )CSSVariablesDeclaration)CSSRule)_Namespaces_readUrl)
DeprecatedCSSStyleSheetrestructuredtextz$Id$   c                 <    t        | t              r| S t        |       S N)
isinstancelist)ps    /home/pod-website-builder.sw7ft.com/pod-website-builder/website-analyzer/venv/lib/python3.12/site-packages/css_parser/css/cssstylesheet.pyas_listr      s    !T7N    c                   n    e Zd ZdZ	 	 	 	 d% fd	Zd Zd Zd Zd Zd Z	d Z
 ed	 e
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 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:`~css_parser.css.CSSRuleList`.
    c
           
         t         t        |   d|||||||	       || _        t        j
                  j                         | _        t        | | j                        | _
        t               | _        || _        d| _        d| _        y)zP
        For parameters see :class:`~css_parser.stylesheets.StyleSheet`
        ztext/css)
validatingparentStyleSheetlogN)superr   __init__
_ownerRule
css_parsercssCSSRuleListcssRulesr
   _log_namespacesr   
_variables	_readonly _CSSStyleSheet__encodingOverride_fetcher)selfhrefmediatitledisabled	ownerNoder   readonly	ownerRuler   	__class__s             r   r   zCSSStyleSheet.__init__2   s     	mT+eUH'! 	, 	#
 $"224&$))L13! #'r   c              #   6   K   | j                   D ]  }|  yw)z'Generator which iterates over cssRules.N	_cssRulesr+   rules     r   __iter__zCSSStyleSheet.__iter__H   s     NN 	DJ	s   c           	          | j                   r| j                   j                  }nd }d| j                  j                  d| j                  d|d| j
                  d	S )Nzcss_parser.css.z(href=z, media=z, title=))r-   	mediaTextr3   __name__r,   r.   r+   r<   s     r   __repr__zCSSStyleSheet.__repr__M   sD    ::

,,IINN##IIy$**. 	.r   c           
         | j                   r| j                   j                  }nd }d| j                  j                  | j                  | j
                  || j                  | j                  j                  t        |       fz  S )NzV<css_parser.css.%s object encoding=%r href=%r media=%r title=%r namespaces=%r at 0x%x>)	r-   r<   r3   r=   encodingr,   r.   
namespacesidr>   s     r   __str__zCSSStyleSheet.__str__V   sf    ::

,,II:>>**DMM499djj$//*D*Dd8= 	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$   r   rB   itemslentypeNAMESPACE_RULEprefixnamespaceURI
deleteRule)r+   rulesnamespaceitemsir8   s        r   _cleanNamespaceszCSSStyleSheet._cleanNamespacesa   s     !6!6!89#e*n8DyyD///T../~E"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_RULErH   updateselectorList_getUsedUris
MEDIA_RULE)r+   usedurisr1r2s       r   _getUsedURIszCSSStyleSheet._getUsedURIsn   s    5 	HB}}' < < >?"'') HBww"--/ (D(D(FGH		H r   c                     | j                   |_        | j                   |_        | j                  |_        |D ]	  }| |_         || _        y)z1Set new cssRules and update contained rules refs.N)
insertRuleappendextendrL   __delitem___parentStyleSheetr6   )r+   r$   r8   s      r   _setCssRuleszCSSStyleSheet._setCssRulesz   sD    ////# 	*D%)D"	* "r   c                     | j                   S r   r5   r+   s    r   <lambda>zCSSStyleSheet.<lambda>   s
    T^^ r   zFAll Rules in this style sheet, a :class:`~css_parser.css.CSSRuleList`.c                 @    t         j                  j                  |       S )z9Textual representation of the stylesheet (a byte string).)r!   serdo_CSSStyleSheetrd   s    r   _getCssTextzCSSStyleSheet._getCssText   s    ~~..t44r   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   )r]   r!   r"   
CSSCommentrl   )rm   rn   ro   rp   r+   s       r   COMMENTz*CSSStyleSheet._setCssText.<locals>.COMMENT   s7    OOJNN55ugPT5UVq(-a((r   c                 .   t         j                  j                        }j                  ||      |_        | xs ddkD  r7j
                  j                  d|t        j                  j                         | S |j                  rj                  |       y)Nrs   r   zFCSSStylesheet: CSSCharsetRule only allowed at beginning of stylesheet.r   )r!   r"   CSSCharsetRule_tokensupto2cssTextr%   errorxmldomHierarchyRequestErr
wellformedr]   rm   rn   ro   rp   r8   r+   s        r   charsetrulez.CSSStyleSheet._setCssText.<locals>.charsetrule   s|    >>00$0GD,,Y>DLA"		 !> %sww'B'BD  %r   c                 .   t         j                  j                        }j                  ||      |_        | xs ddkD  r7j
                  j                  d|t        j                  j                         | S |j                  rj                  |       y)Nrs   r   r   z.CSSStylesheet: CSSImportRule not allowed here.)r!   r"   CSSImportRulerx   ry   r%   rz   r{   r|   r}   r~   r]   r   s        r   
importrulez-CSSStyleSheet._setCssText.<locals>.importrule   sz    >>///FD,,Y>DLA"		 !().0K0KM%r   c                 \   t         j                  j                  j                  ||            }| xs d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)ry   r   r      z1CSSStylesheet: CSSNamespaceRule not allowed here.F)_clean)r!   r"   CSSNamespaceRulerx   r%   rz   r{   r|   r}   r~   rJ   rB   r]   r$   rulesOfTyperI   _replaceNamespaceURIrK   r&   )rm   rn   ro   rp   r8   rr+   s         r   namespacerulez0CSSStyleSheet._setCssText.<locals>.namespacerule   s    >>22 --i?RV 3 XD A"		 !().0K0KM;;doo5OODO7 "]]66t7J7JK F88t{{22243D3DEF 150A0A  -r   c                 N   t         j                  j                        }j                  ||      |_        | xs ddkD  r7j
                  j                  d|t        j                  j                         | S |j                  r!j                  |       j                          y)Nrs   r   r   z1CSSStylesheet: CSSVariablesRule not allowed here.)r!   r"   CSSVariablesRulerx   ry   r%   rz   r{   r|   r}   r~   r]   _updateVariablesr   s        r   variablesrulez0CSSStyleSheet._setCssText.<locals>.variablesrule   s    >>22D2ID,,Y>DLA"		 !().0K0KM%%%'r   c                     t         j                  j                        }j                  ||      |_        |j
                  rj                  |       yNrs   r   )r!   r"   CSSFontFaceRulerx   ry   r~   r]   r   s        r   fontfacerulez/CSSStyleSheet._setCssText.<locals>.fontfacerule   sD    >>1141HD,,Y>DL%r   c                     t         j                  j                        }j                  ||      |_        |j
                  rj                  |       yr   )r!   r"   CSSMediaRulerx   ry   r~   r]   r   s        r   	mediarulez,CSSStyleSheet._setCssText.<locals>.mediarule   D    >>...ED,,Y>DL%r   c                     t         j                  j                        }j                  ||      |_        |j
                  rj                  |       yr   )r!   r"   CSSPageRulerx   ry   r~   r]   r   s        r   pagerulez+CSSStyleSheet._setCssText.<locals>.pagerule   sD    >>--t-DD,,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)
neverraisers   z#CSSStylesheet: Unknown @rule found.r   )r!   r"   
MarginRulemarginsr%   rz   rx   ry   warnCSSUnknownRuler~   r]   rl   r   s        r   unknownrulez.CSSStyleSheet._setCssText.<locals>.unknownrule  s    Qx:>>44<<<		 L %$   8!~~00$0G#00EB		D$  7!~~44d4K#00EB% q(-a((r   c                     t         j                  j                        }j                  ||      |_        |j
                  rj                  |       yr   )r!   r"   CSSStyleRulerx   ry   r~   r]   r   s        r   rulesetz*CSSStyleSheet._setCssText.<locals>.ruleset  r   r   r   c                       y r    ignoreds    r   re   z+CSSStyleSheet._setCssText.<locals>.<lambda>1      r   c                       y r   r   r   s    r   re   z+CSSStyleSheet._setCssText.<locals>.<lambda>2  r   r   )rq   ru   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%   rP   r6   r   )r+   ry   rB   rp   rq   ru   r   r   r   r   r   r   r   r   r   oldCssRulesoldNamespacesnewseqr~   rm   s   `                   r   _setCssTextzCSSStyleSheet._setCssText   sI    	"66w?OOG,		)
	)			.					)&	 mm(("224%13   ${{1fi127>3H3H;F=I:D=J8@9B=J9D,. 4;  +  <
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AttributeErrorr6   rA   
IndexErrorr   r*   r)   )r+   urlr   s      r   _resolveImportzCSSStyleSheet._resolveImportM  sx    
	&!//N T]])-)@)@'57 	7  	&&!%!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   ry   rA   r   )r+   ry   encodingOverriderA   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:`~css_parser.css.CSSCharsetRule` or if ``None``
        resulting in default ``utf-8`` encoding being used.r   zutf-8)r6   rA   r   r   rd   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:`~css_parser.css.CSSCharsetRule` with given `encoding`.
        If `encoding` is None removes charsetrule if present resulting in
        default encoding of utf-8.
        r   N)rA   )
r6   r   CHARSET_RULErH   rA   rL   r]   r!   r"   rw   )r+   rA   r8   s      r   _setEncodingzCSSStyleSheet._setEncoding  s    	>>!$D D%%2 ("OOJNN9989LaP   	D	s   A< <B
	B
zY(css_parser) Reflect encoding of an @charset rule or 'utf-8' (default) if set to ``None``c                     | j                   S r   )r&   rd   s    r   re   zCSSStyleSheet.<lambda>  s    t'7'7 r   z*All Namespaces used in this CSSStyleSheet.)docc                    | 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$   r   r	   IMPORT_RULE
styleSheet	variablesr'   setVariableVARIABLES_RULE)r+   r   svarvrs        r   r   zCSSStyleSheet._updateVariables  s     **7+>+>? 	GAA;; GCOO//Q[[5EFG	G --++G,B,BC 	DB|| D++Cc1BCD	Dr   c                     | j                   S r   )r'   rd   s    r   re   zCSSStyleSheet.<lambda>  
    doo r   zA :class:`css_parser.css.CSSVariablesDeclaration` containing all available variables in this CSSStyleSheet including the ones defined in imported sheets.c                 *    | j                  |dd      S )zoAdd `rule` to style sheet at appropriate position.
        Same as ``insertRule(rule, inOrder=True)``.
        NT)indexinOrder)r]   r7   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(  r|j                  ) }}| j                         }|j                  |v r=|j                  |j                        dk(  rt
        j                  j                  d      d|_        | j                  |= yc c}w # t         $ r9 t
        j                  j                  d|| j                  j"                  fz        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   r   r	   	enumerater$   r{   r|   IndexSizeErrr6   rH   rI   rK   r[   countNoModificationAllowedErrra   r   length)r+   r   rO   r   r8   urisrX   s          r   rL   zCSSStyleSheet.deleteRule  ss   * 	eW%!$--0 41A:E4
 gg** ,N-2,3 4 4	&>>%(D yyD///04 7166Q%5%55  7 7,,.$$0::d//0A5''::/0 0
 &*D"u%7  	>''&&$dnn&;&;<=> >	>s   *D9 ,D49AE;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 css_parser also a
            :class:`~css_parser.css.CSSRule` or :class:`~css_parser.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   r2   z@charset)r   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.)rz   z/CSSStylesheet: @charset must be the first rule.c              3   4   K   | ]  }|j                     y wr   rH   .0r   s     r   	<genexpr>z+CSSStyleSheet.insertRule.<locals>.<genexpr>t        6A 6   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   rG   r6   r   r{   r|   r   r   string_typer   r,   r-   r.   r   r2   r0   
_ownerNoder*   
startswithrH   r   ry   r&   r$   r!   r"   r	   r%   rz   ra   r#   r   r]   r~   rA   insertr}   UNKNOWN_RULEru   r   reversedrI   r   rW   	PAGE_RULErS   FONT_FACE_RULEr   rJ   rB   rK   rP   r^   	hrefFound)
r+   r8   r   r   r   	tempsheetnewrulescountnewruleindexrO   r   s
             r   r]   zCSSStyleSheet.insertRule  s
   D 	 ='EQY%$.."7"77''&&#($..*?*?AB B
 dK(%499,0JJ,0JJ7;7L7L04	@I
 $(>>I !%I ??:.DNN48NN14E4J4Jdnn]^N_NlNl4l.2+|~~a(0047.2+| "&t'7'7 8I9%%&-7
!!,/1G1GAI		 BT IJ%%l3D%)D" jnn889!$ .1519-.LIIOOKL 99)))NN NN1-22d6G6GG15DNN1%.NN))!T2! $q 1 6 6$:K:K K		2''55   7 %%eT2 YY4,,dll;;Gzdnn~~a %%):)::		E''55   7 %%eT2 YY$***99 6 66 )(4>>*B C "166TYY.$'$7!$;E!" ~~~~a(--$2C2C26,,2@ @ ! ! A:$..>>!$))T->->>IIOOC!gg99 $ ; / Avv!"2"2"#"2"2"#,,"#++"#,,"#"2"2"4 4 		= "" #&''"="= ( ?  NN!!%.!!# YY$---99 6 66 )(4>>*B C "166TYY.$'$7!$;E!" !*$.. 9 "166a&6&6&'kk1<<&'&6&6&'ii&1 1 %&E!" / Avv!..!--!@@		I!" #&''"="=	 ( ?
  / Avv!"2"2"#,,"#++"#,,"#"2"2	"4 4
 		0 "" #&''"="= ( ?  KK4??2OODKK0D4E4EE%%eT2))+ YY$---99 6 66 )(4>>*B C "166TYY.$'$7!$;E!" !*$.. 9 "166all&'kk&'ll&'&6&6&'nn&'ii&1 1 %&E!" / 
Avv!.."#--"#"2"2"4 4 		) "" #&''"="= ( ? 
 / Avv!,,"#++"#,,"#"2"2"4 4 		0 "" #&''"="= ( ?  NN!!%.!!# %%d+DNN+a// Avv!.."#--"#"2"2"4 4 		O#$+.77+F+F ( H  %%eT2 "&tyy(		DIr   c                     | j                   S r   )r    rd   s    r   re   zCSSStyleSheet.<lambda>  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  r7   s     r   	_getValidzCSSStyleSheet._getValid  s-    MM 	DtW%djj	 r   z)``True`` if all contained rules are validz5Use ``css_parser.setSerializer(serializer)`` instead.c                 d    t        |t        j                        r|t        _        yt	        d      )z9Set the css_parser global Serializer used for all output.z;Serializer must be an instance of css_parser.CSSSerializer.N)r   r!   CSSSerializerrg   
ValueError)r+   cssserializers     r   setSerializerzCSSStyleSheet.setSerializer*  s-     mZ%=%=>*JN 9 : :r   z-Set pref in ``css_parser.ser.prefs`` instead.c                 X    t         j                  j                  j                  ||       y)zSet a Preference of CSSSerializer used for output.
        See :class:`css_parser.serialize.Preferences` for possible
        preferences to be set.
        N)r!   rg   prefs__setattr__)r+   prefvalues      r   setSerializerPrefzCSSStyleSheet.setSerializerPref3  s     	((u5r   )	NN NNNFNT)NNr   )NFT)#r=   
__module____qualname____doc__r   r9   r?   rD   rP   r[   rb   propertyr$   ri   r   ry   r   r   r   r   r   rA   rB   r   r   r   rL   r]   r2   r  r  r   r	  r  __classcell__)r3   s   @r   r   r   #   sL    BFAF ,
.	
	" 3\@AH5{$z {KQSG7& IM15< Q$ l78H 7JLJD" 5,-I?5&nbH	 5./I YDFE GH: I: ?@6 A6r   )
__future__r   r   r   r   xml.domr{   css_parser.stylesheetsr!   cssvariablesdeclarationr   cssruler	   css_parser.utilr
   r   css_parser.helperr   __all____docformat____version__sysversion_infostrr   
basestringr   stylesheets
StyleSheetr   r   r   r   <module>r&     su    R R   <  1 ( 
" 
A!KKV6J**55 V6r   