a
    Qh?                     @   sT  d dl mZ dgZh dZd7ddZd8ddZd	d
 Zdd Zdd Zdd Z	dd Z
d9ddZG dd deZG dd dZG dd dZG dd dZG dd dZG dd  d ZG d!d" d"ZG d#d$ d$ZG d%d& d&ZG d'd( d(ZG d)d* d*ZG d+d, d,ZG d-d. d.ZG d/d0 d0ZG d1d2 d2ZG d3d4 d4ZG d5d6 d6ZdS ):    )parse_component_value_listparse>   postfixztarget-textzfootnote-callafterzfootnote-markerfirst-letterplaceholdercontentzspelling-error
first-linezfile-selector-buttonZshadowprefixbeforezgrammar-errormarkerZ	selectionNFc              
   c   s   t | trt| } t| }|p i }zt|||V  W n: tyn } z"|rVW Y d}~dS |W Y d}~n
d}~0 0 | }|du rdS |dkrzt|||V  W q ty } z|s|W Y d}~qd}~0 0 qp|spt|d|j dqpdS )zYield tinycss2 selectors found in given ``input``.

    :param input:
        A string, or an iterable of tinycss2 component values.

    N,unexpected  token.)
isinstancestrr   TokenStreamparse_selectorSelectorErrornexttype)input
namespaces	forgivingrelativetokens	exceptionr    r   J/var/www/sistema_ama/venv/lib/python3.9/site-packages/cssselect2/parser.pyr      s*    
c                 C   s   |    |r8|  }|dv r,|j}|   nd}|    t| |\}}|  }|  rd|  p`|}qNt||}|r|t||}|d ur|S |  }|d u s|dkr|S |dv r|j}	|   n|rd}	n|S t| |\}
}t	||	|
}qFd S )N)>+~ r   )
skip_whitespace_and_commentpeekvaluer   parse_compound_selectorskip_whitespaceskip_commentSelectorRelativeSelectorCombinedSelector)r   r   r   r$   Zinitial_combinatorresultpseudo_elementZhas_whitespaceselector
combinatorZcompoundr   r   r   r   1   s8    



r   c                 C   s   t | |}|d ur|ng }t| |\}}|d usF|d u r:qF|| q|sV||fdkrbt||fS |  }|rt|jnd}t|d| d S )NNNEOFz"expected a compound selector, got )parse_type_selectorparse_simple_selectorappendCompoundSelectorr$   r   r   )r   r   Ztype_selectorssimple_selectorssimple_selectorr-   r$   Z	peek_typer   r   r   r&   S   s    
r&   c                 C   sZ   |    t| |}|d u rd S g }|\}}|d ur@|t| |d urV|t| |S N)r'   parse_qualified_namer4   LocalNameSelectorNamespaceSelector)r   r   qualified_namer6   	namespace
local_namer   r   r   r2   e   s    
r2   c                 C   s  |   }|d u rdS |jdkr:|jr:|   t|jd fS |dkr|   |  }|d u sd|jdkrtt|d| t|jd fS |jdkr|   tt	|j
|}|d fS |dkr|   |  }|dkr$|  }|d u s|jdk rt|d| |j}|tvrt|d	| d |fS |d ur`|jdkr`|j}|d
v rRd |fS t|d fS nZ|d ur|jdkr|j}|dv rt|||d fS t||jd fS nt|d| dndS d S )Nr0   hash.identzExpected a class name, got z[] block:z$Expected a pseudo-element name, got z)Expected a supported pseudo-element, got )r   r   r	   r   function)iswherenothasr   r   )r$   r   is_identifierr   
IDSelectorr%   r   ClassSelectorparse_attribute_selectorr   r   lower_valueSUPPORTED_PSEUDO_ELEMENTSPseudoClassSelector
lower_nameparse_logical_combinationFunctionalPseudoClassSelector	arguments)r   r   r$   r   attrr%   namer   r   r   r3   t   sR    






r3   c                 C   sh   d}d}|dkrt }n0|dkr$t}n"|dkr6d}t}n|dkrFd}t}dd t| j|||D }||S )	NTFrD   rE   rF   rG   c                 S   s   g | ]}|j d u r|qS r8   )r-   .0r.   r   r   r   
<listcomp>   s   
z-parse_logical_combination.<locals>.<listcomp>)MatchesAnySelectorSpecificityAdjustmentSelectorNegationSelectorRelationalSelectorr   rR   )Zmatches_any_tokenr   rT   r   r   Zselector_class	selectorsr   r   r   rP      s     rP   c                 C   sV  |    t| |dd}|d u r6|  }t|d| |\}}|    |  }|d u r`d }d }nr|dv r|j}|   |    |  }|d u s|jdvr|d u rdn|j}	t|d|	 |j}nt|d| |    |  }d }
|d urF|jd	kr|j d
krd}
n4|jd	kr4|j dkr4d}
nt|d|j t|||||
S )NT)is_attributezexpected attribute name, got )=z~=z|=z^=z$=z*=)rA   stringNonezexpected attribute value, got z*expected attribute selector operator, got rA   iFszexpected ], got )	r'   r9   r   r   r$   r%   r   lowerAttributeSelector)r   r   r<   r   r=   r>   r$   operatorr%   Z	next_typecase_sensitiver   r   r   rK      s>    
rK   c                 C   sJ  |   }|du rdS |jdkr|  }|   }|dkrZ|r>dn
|dd}||j|jffS |   ||j}|du rt|d|j nn|dkr|  }|   }|dkr|rt|d|j |dddfS |   d}n|dkr|   d}ndS |  }|jdkr||j|jffS |dkr4|s4|dfS t|d|j dS )zReturn ``(namespace, local)`` for given tokens.

    Can also return ``None`` for a wildcard.

    The empty string for ``namespace`` means "no namespace".

    NrA   | zundefined namespace prefix: *zexpected local name, got )r$   r   r   getr%   rL   r   )r   r   r]   r$   Zfirst_identr=   r   r   r   r   r9      sD    
r9   c                   @   s   e Zd ZdZdS )r   z3A specialized ``ValueError`` for invalid selectors.N)__name__
__module____qualname____doc__r   r   r   r   r     s   r   c                   @   sD   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dS )r   c                 C   s   t || _g | _d S r8   )iterr   peeked)selfr   r   r   r   __init__  s    
zTokenStream.__init__c                 C   s    | j r| j  S t| jd S d S r8   )rp   popr   r   rq   r   r   r   r     s    
zTokenStream.nextc                 C   s$   | j s| j t| jd  | j d S )N)rp   r4   r   r   rt   r   r   r   r$     s    zTokenStream.peekc                 C   s2   d}|   }|d u s.|j|vr q.|   d}q|S )NFT)r$   r   r   )rq   Z
skip_typesfoundr$   r   r   r   skip!  s    zTokenStream.skipc                 C   s   |  dgS )N
whitespacerw   rt   r   r   r   r'   +  s    zTokenStream.skip_whitespacec                 C   s   |  dgS )Ncommentry   rt   r   r   r   r(   .  s    zTokenStream.skip_commentc                 C   s   |  ddgS )Nrz   rx   ry   rt   r   r   r   r#   1  s    z'TokenStream.skip_whitespace_and_commentN)
rk   rl   rm   rr   r   r$   rw   r'   r(   r#   r   r   r   r   r     s   
r   c                   @   s   e Zd ZdddZdd ZdS )r)   Nc                 C   s>   || _ || _|d u r|j| _n|j\}}}|||d f| _d S )N   )parsed_treer-   specificity)rq   treer-   abcr   r   r   rr   6  s    
zSelector.__init__c                 C   s$   | j rd| j  nd}| j| S )Nz::rh   )r-   r|   )rq   pseudor   r   r   __repr__@  s    zSelector.__repr__)N)rk   rl   rm   rr   r   r   r   r   r   r)   5  s   

r)   c                   @   s4   e Zd Zdd Zedd Zedd Zdd Zd	S )
r*   c                 C   s   || _ || _d S r8   r/   r.   )rq   r/   r.   r   r   r   rr   F  s    zRelativeSelector.__init__c                 C   s   | j jS r8   )r.   r}   rt   r   r   r   r}   J  s    zRelativeSelector.specificityc                 C   s   | j jS r8   )r.   r-   rt   r   r   r   r-   N  s    zRelativeSelector.pseudo_elementc                 C   s$   | j dkr| jS | j  d| jS )Nr"   r   rt   r   r   r   r   R  s    zRelativeSelector.__repr__N)rk   rl   rm   rr   propertyr}   r-   r   r   r   r   r   r*   E  s   

r*   c                   @   s(   e Zd Zdd Zedd Zdd ZdS )r+   c                 C   s   || _ || _|| _d S r8   leftr/   right)rq   r   r/   r   r   r   r   rr   Y  s    zCombinedSelector.__init__c                 C   s2   | j j\}}}| jj\}}}|| || || fS r8   )r   r}   r   )rq   a1b1c1a2b2c2r   r   r   r}   a  s    zCombinedSelector.specificityc                 C   s   | j | j | jS r8   r   rt   r   r   r   r   g  s    zCombinedSelector.__repr__Nrk   rl   rm   rr   r   r}   r   r   r   r   r   r+   X  s   
r+   c                   @   s(   e Zd Zdd Zedd Zdd ZdS )r5   c                 C   s
   || _ d S r8   )r6   )rq   r6   r   r   r   rr   l  s    zCompoundSelector.__init__c                 C   s,   | j r$ttttdd | j D  S dS d S )Nc                 s   s   | ]}|j V  qd S r8   r}   rV   selr   r   r   	<genexpr>u      z/CompoundSelector.specificity.<locals>.<genexpr>r   r   r   )r6   tuplemapsumziprt   r   r   r   r}   o  s
    zCompoundSelector.specificityc                 C   s   d tt| jS )Nrh   )joinr   reprr6   rt   r   r   r   r   y  s    zCompoundSelector.__repr__Nr   r   r   r   r   r5   k  s   
	r5   c                   @   s    e Zd ZdZdd Zdd ZdS )r:   )r   r   r{   c                 C   s   |\| _ | _d S r8   )r>   lower_local_name)rq   r>   r   r   r   rr     s    zLocalNameSelector.__init__c                 C   s   | j S r8   )r>   rt   r   r   r   r     s    zLocalNameSelector.__repr__Nrk   rl   rm   r}   rr   r   r   r   r   r   r:   }  s   r:   c                   @   s    e Zd ZdZdd Zdd ZdS )r;   r   c                 C   s
   || _ d S r8   r=   )rq   r=   r   r   r   rr     s    zNamespaceSelector.__init__c                 C   s   | j dkrdS d| j  dS )Nrh   rg   {z}|r   rt   r   r   r   r     s    zNamespaceSelector.__repr__Nr   r   r   r   r   r;     s   r;   c                   @   s    e Zd ZdZdd Zdd ZdS )rI   )r{   r   r   c                 C   s
   || _ d S r8   rA   )rq   rA   r   r   r   rr     s    zIDSelector.__init__c                 C   s   d| j  S )N#r   rt   r   r   r   r     s    zIDSelector.__repr__Nr   r   r   r   r   rI     s   rI   c                   @   s    e Zd ZdZdd Zdd ZdS )rJ   r   r{   r   c                 C   s
   || _ d S r8   
class_name)rq   r   r   r   r   rr     s    zClassSelector.__init__c                 C   s   d| j  S )Nr@   r   rt   r   r   r   r     s    zClassSelector.__repr__Nr   r   r   r   r   rJ     s   rJ   c                   @   s    e Zd ZdZdd Zdd ZdS )rd   r   c                 C   s(   || _ |\| _| _|| _|| _|| _d S r8   )r=   rT   rO   re   r%   rf   )rq   r=   rT   re   r%   rf   r   r   r   rr     s
    zAttributeSelector.__init__c                 C   s`   | j d u rdnd| j  d}| jd u r*dnd| jr6dnd }d| | j | j | j| d	S )
Nz*|r   }rh   r"   rb   ra   [])r=   rf   rT   re   r%   )rq   r=   rf   r   r   r   r     s    zAttributeSelector.__repr__Nr   r   r   r   r   rd     s   rd   c                   @   s    e Zd ZdZdd Zdd ZdS )rN   r   c                 C   s
   || _ d S r8   rT   )rq   rT   r   r   r   rr     s    zPseudoClassSelector.__init__c                 C   s
   d| j  S NrB   r   rt   r   r   r   r     s    zPseudoClassSelector.__repr__Nr   r   r   r   r   rN     s   rN   c                   @   s    e Zd ZdZdd Zdd ZdS )rQ   r   c                 C   s   || _ || _d S r8   )rT   rR   )rq   rT   rR   r   r   r   rr     s    z&FunctionalPseudoClassSelector.__init__c                 C   s   d| j  t| jS r   )rT   r   rR   rt   r   r   r   r     s    z&FunctionalPseudoClassSelector.__repr__Nr   r   r   r   r   rQ     s   rQ   c                   @   s(   e Zd Zdd Zedd Zdd ZdS )rZ   c                 C   s
   || _ d S r8   selector_listrq   r   r   r   r   rr     s    zNegationSelector.__init__c                 C   s"   | j rtdd | j D S dS d S )Nc                 s   s   | ]}|j V  qd S r8   r   rU   r   r   r   r     r   z/NegationSelector.specificity.<locals>.<genexpr>r   r   maxrt   r   r   r   r}     s    zNegationSelector.specificityc                 C   s   dd dd | jD  dS )Nz:not(, c                 s   s   | ]}t |V  qd S r8   r   r   r   r   r   r     r   z,NegationSelector.__repr__.<locals>.<genexpr>)r   r   rt   r   r   r   r     s    zNegationSelector.__repr__Nr   r   r   r   r   rZ     s   
rZ   c                   @   s(   e Zd Zdd Zedd Zdd ZdS )r[   c                 C   s
   || _ d S r8   r   r   r   r   r   rr     s    zRelationalSelector.__init__c                 C   s"   | j rtdd | j D S dS d S )Nc                 s   s   | ]}|j V  qd S r8   r   rU   r   r   r   r     r   z1RelationalSelector.specificity.<locals>.<genexpr>r   r   rt   r   r   r   r}     s    zRelationalSelector.specificityc                 C   s   dd dd | jD  dS )Nz:has(r   c                 s   s   | ]}t |V  qd S r8   r   r   r   r   r   r     r   z.RelationalSelector.__repr__.<locals>.<genexpr>r   r   rt   r   r   r   r     s    zRelationalSelector.__repr__Nr   r   r   r   r   r[     s   
r[   c                   @   s(   e Zd Zdd Zedd Zdd ZdS )rX   c                 C   s
   || _ d S r8   r   r   r   r   r   rr     s    zMatchesAnySelector.__init__c                 C   s"   | j rtdd | j D S dS d S )Nc                 s   s   | ]}|j V  qd S r8   r   rU   r   r   r   r     r   z1MatchesAnySelector.specificity.<locals>.<genexpr>r   r   rt   r   r   r   r}     s    zMatchesAnySelector.specificityc                 C   s   dd dd | jD  dS )Nz:is(r   c                 s   s   | ]}t |V  qd S r8   r   r   r   r   r   r     r   z.MatchesAnySelector.__repr__.<locals>.<genexpr>r   r   rt   r   r   r   r     s    zMatchesAnySelector.__repr__Nr   r   r   r   r   rX     s   
rX   c                   @   s(   e Zd Zdd Zedd Zdd ZdS )rY   c                 C   s
   || _ d S r8   r   r   r   r   r   rr     s    z&SpecificityAdjustmentSelector.__init__c                 C   s   dS )Nr   r   rt   r   r   r   r}     s    z)SpecificityAdjustmentSelector.specificityc                 C   s   dd dd | jD  dS )Nz:where(r   c                 s   s   | ]}t |V  qd S r8   r   r   r   r   r   r   
  r   z9SpecificityAdjustmentSelector.__repr__.<locals>.<genexpr>r   r   rt   r   r   r   r   	  s    z&SpecificityAdjustmentSelector.__repr__Nr   r   r   r   r   rY     s   
rY   )NFF)F)F)tinycss2r   __all__rM   r   r   r&   r2   r3   rP   rK   r9   
ValueErrorr   r   r)   r*   r+   r5   r:   r;   rI   rJ   rd   rN   rQ   rZ   r[   rX   rY   r   r   r   r   <module>   s6   
 
"/&
/$



