
    Bh                     T    S r SSKJr  SSKJr  SSKJr  SSKJr  S=r	r
 " S S	5      rg
)zCSS4 selectors for Python.

cssselect2 is a straightforward implementation of CSS4 Selectors for markup
documents (HTML, XML, etc.) that can be read by ElementTree-like parsers
(including cElementTree, lxml, html5lib, etc.)

    )ascii_lower   )compile_selector_list)SelectorError)ElementWrapperz0.8.0c                   :    \ rS rSrSrS rS rS r\S 5       r	Sr
g)	Matcher   z=A CSS selectors storage that can match against HTML elements.c                 f    0 U l         0 U l        0 U l        0 U l        / U l        / U l        SU l        g )Nr   )id_selectorsclass_selectorslower_local_name_selectorsnamespace_selectorslang_attr_selectorsother_selectorsorder)selfs    E/var/www/html/env/lib/python3.13/site-packages/cssselect2/__init__.py__init__Matcher.__init__   s9    !*,'#% #% !
    c                 X   U =R                   S-  sl         UR                  (       a  gUR                  UR                  U R                   UR                  U4nUR
                  b6  U R                  R                  UR
                  / 5      R                  U5        gUR                  b6  U R                  R                  UR                  / 5      R                  U5        gUR                  b6  U R                  R                  UR                  / 5      R                  U5        gUR                  b6  U R                  R                  UR                  / 5      R                  U5        gUR                   (       a  U R"                  R                  U5        gU R$                  R                  U5        g)a  Add a selector and its payload to the matcher.

:param selector:
    A :class:`compiler.CompiledSelector` object.
:param payload:
    Some data associated to the selector,
    such as :class:`declarations <tinycss2.ast.Declaration>`
    parsed from the :attr:`tinycss2.ast.QualifiedRule.content`
    of a style rule.
    It can be any Python object,
    and will be returned as-is by :meth:`match`.

r   N)r   never_matchestestspecificitypseudo_elementidr   
setdefaultappend
class_namer   
local_namer   lower_local_name	namespacer   requires_lang_attrr   r   )r   selectorpayloadentrys       r   add_selectorMatcher.add_selector   sB    	

a
!! MM8//X=T=T ;;"((b9@@G  ,  ++H,?,?DKKER  ,++66))2//5ve}+$$//0B0BBGNNuU(($$++E2  ''.r   c                     / nUR                   bC  UR                   U R                  ;   a)  U R                  XR                  UR                      U5        UR                   H3  nX0R                  ;   d  M  U R                  XR                  U   U5        M5     [        UR                  5      nX@R                  ;   a  U R                  XR                  U   U5        UR                  U R                  ;   a)  U R                  XR                  UR                     U5        SUR                  R                  ;   a  U R                  XR                  U5        U R                  XR                  U5        UR                  5         U$ )aj  Match selectors against the given element.

:param element:
    An :class:`ElementWrapper`.
:returns:
    A list of the payload objects associated to selectors that match
    element, in order of lowest to highest
    :attr:`compiler.CompiledSelector` specificity and in order of
    addition with :meth:`add_selector` among selectors of equal
    specificity.

lang)r   r   add_relevant_selectorsclassesr   r   r!   r   namespace_urlr   etree_elementattribr   r   sort)r   elementrelevant_selectorsr    
lower_names        r   matchMatcher.matchB   sY     ::!gjjD4E4E&E''**7::68JL "//J111++11*=?QS *
 !!3!34
888''88D"$   D$<$<<''11'2G2GH"$ W**111''113EG 	##G-A-ACUV!!!r   c                 b    U H)  u  p4pVnU" U 5      (       d  M  UR                  XEXg45        M+     g )N)r   )r2   	selectorsr3   r   r   r   pseudor&   s           r   r,   Matcher.add_relevant_selectorsm   s0    9B5DugG}}"));v*OP :Cr   )r   r   r   r   r   r   r   N)__name__
__module____qualname____firstlineno____doc__r   r(   r5   staticmethodr,   __static_attributes__ r   r   r	   r	      s,    G"/H)"V Q Qr   r	   N)r?   webencodingsr   compilerr   parserr   treer   VERSION__version__r	   rB   r   r   <module>rI      s2    % , !   +^Q ^Qr   