a
    [Xh?                     @   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>   before
first-linezfile-selector-buttonprefixfirst-letterZpostfixplaceholderzspelling-errorztarget-textzfootnote-markerZ	selectionafterzgrammar-errorzfootnote-callZshadowmarkercontentNFc              
   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   V/var/www/viveiro_mudafortebrasil/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_selectorsZ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_namer3   LocalNameSelectorNamespaceSelector)r   r   qualified_namer5   	namespace
local_namer   r   r   r1   e   s    
r1   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 )Nr/   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   Z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   r2   t   sR    






r2   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 )	NTFrB   rC   rD   rE   c                 S   s   g | ]}|j d u r|qS r6   )r,   .0r-   r   r   r   
<listcomp>   s   
z-parse_logical_combination.<locals>.<listcomp>)MatchesAnySelectorSpecificityAdjustmentSelectorNegationSelectorRelationalSelectorr   rO   )Zmatches_any_tokenr   rQ   r   r   Zselector_class	selectorsr   r   r   rM      s     rM   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*=)r?   stringNonezexpected attribute value, got z*expected attribute selector operator, got r?   iFszexpected ], got )	r&   r7   r   r   r#   r$   r   lowerAttributeSelector)r   r   r:   r   r;   r<   r#   operatorr$   Z	next_typecase_sensitiver   r   r   rH      s>    
rH   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".

    Nr?   | zundefined namespace prefix: *zexpected local name, got )r#   r   r   getr$   rI   r   )r   r   rZ   r#   Zfirst_identr;   r   r   r   r   r7      sD    
r7   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 r6   )iterr   peeked)selfr   r   r   r   __init__  s    
zTokenStream.__init__c                 C   s    | j r| j  S t| jd S d S r6   )rm   popr   r   rn   r   r   r   r     s    
zTokenStream.nextc                 C   s$   | j s| j t| jd  | j d S )N)rm   r3   r   r   rq   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   )rn   Z
skip_typesfoundr#   r   r   r   skip!  s    zTokenStream.skipc                 C   s   |  dgS )N
whitespacert   rq   r   r   r   r&   +  s    zTokenStream.skip_whitespacec                 C   s   |  dgS )Ncommentrv   rq   r   r   r   r'   .  s    zTokenStream.skip_commentc                 C   s   |  ddgS )Nrw   ru   rv   rq   r   r   r   r"   1  s    z'TokenStream.skip_whitespace_and_commentN)
rh   ri   rj   ro   r   r#   rt   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)rn   treer,   abcr   r   r   ro   6  s    
zSelector.__init__c                 C   s$   | j rd| j  nd}| j| S )Nz::re   )r,   ry   )rn   Zpseudor   r   r   __repr__@  s    zSelector.__repr__)N)rh   ri   rj   ro   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 r6   r.   r-   )rn   r.   r-   r   r   r   ro   F  s    zRelativeSelector.__init__c                 C   s   | j jS r6   )r-   rz   rq   r   r   r   rz   J  s    zRelativeSelector.specificityc                 C   s   | j jS r6   )r-   r,   rq   r   r   r   r,   N  s    zRelativeSelector.pseudo_elementc                 C   s$   | j dkr| jS | j  d| jS )Nr!   r   rq   r   r   r   r   R  s    zRelativeSelector.__repr__N)rh   ri   rj   ro   propertyrz   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 r6   leftr.   right)rn   r   r.   r   r   r   r   ro   Y  s    zCombinedSelector.__init__c                 C   s2   | j j\}}}| jj\}}}|| || || fS r6   )r   rz   r   )rn   Za1b1Zc1Za2b2c2r   r   r   rz   a  s    zCombinedSelector.specificityc                 C   s   | j | j | jS r6   r   rq   r   r   r   r   g  s    zCombinedSelector.__repr__Nrh   ri   rj   ro   r   rz   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 )r4   c                 C   s
   || _ d S r6   )r5   )rn   r5   r   r   r   ro   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 r6   rz   rS   selr   r   r   	<genexpr>u      z/CompoundSelector.specificity.<locals>.<genexpr>r   r   r   )r5   tuplemapsumziprq   r   r   r   rz   o  s
    zCompoundSelector.specificityc                 C   s   d tt| jS )Nre   )joinr   reprr5   rq   r   r   r   r   y  s    zCompoundSelector.__repr__Nr   r   r   r   r   r4   k  s   
	r4   c                   @   s    e Zd ZdZdd Zdd ZdS )r8   )r   r   rx   c                 C   s   |\| _ | _d S r6   )r<   Zlower_local_name)rn   r<   r   r   r   ro     s    zLocalNameSelector.__init__c                 C   s   | j S r6   )r<   rq   r   r   r   r     s    zLocalNameSelector.__repr__Nrh   ri   rj   rz   ro   r   r   r   r   r   r8   }  s   r8   c                   @   s    e Zd ZdZdd Zdd ZdS )r9   r   c                 C   s
   || _ d S r6   r;   )rn   r;   r   r   r   ro     s    zNamespaceSelector.__init__c                 C   s   | j dkrdS d| j  dS )Nre   rd   {z}|r   rq   r   r   r   r     s    zNamespaceSelector.__repr__Nr   r   r   r   r   r9     s   r9   c                   @   s    e Zd ZdZdd Zdd ZdS )rF   )rx   r   r   c                 C   s
   || _ d S r6   r?   )rn   r?   r   r   r   ro     s    zIDSelector.__init__c                 C   s   d| j  S )N#r   rq   r   r   r   r     s    zIDSelector.__repr__Nr   r   r   r   r   rF     s   rF   c                   @   s    e Zd ZdZdd Zdd ZdS )rG   r   rx   r   c                 C   s
   || _ d S r6   
class_name)rn   r   r   r   r   ro     s    zClassSelector.__init__c                 C   s   d| j  S )Nr>   r   rq   r   r   r   r     s    zClassSelector.__repr__Nr   r   r   r   r   rG     s   rG   c                   @   s    e Zd ZdZdd Zdd ZdS )ra   r   c                 C   s(   || _ |\| _| _|| _|| _|| _d S r6   )r;   rQ   rL   rb   r$   rc   )rn   r;   rQ   rb   r$   rc   r   r   r   ro     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   }re   r!   r_   r^   [])r;   rc   rQ   rb   r$   )rn   r;   rc   r   r   r   r     s    zAttributeSelector.__repr__Nr   r   r   r   r   ra     s   ra   c                   @   s    e Zd ZdZdd Zdd ZdS )rK   r   c                 C   s
   || _ d S r6   rQ   )rn   rQ   r   r   r   ro     s    zPseudoClassSelector.__init__c                 C   s
   d| j  S Nr@   r   rq   r   r   r   r     s    zPseudoClassSelector.__repr__Nr   r   r   r   r   rK     s   rK   c                   @   s    e Zd ZdZdd Zdd ZdS )rN   r   c                 C   s   || _ || _d S r6   )rQ   rO   )rn   rQ   rO   r   r   r   ro     s    z&FunctionalPseudoClassSelector.__init__c                 C   s   d| j  t| jS r   )rQ   r   rO   rq   r   r   r   r     s    z&FunctionalPseudoClassSelector.__repr__Nr   r   r   r   r   rN     s   rN   c                   @   s(   e Zd Zdd Zedd Zdd ZdS )rW   c                 C   s
   || _ d S r6   selector_listrn   r   r   r   r   ro     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 r6   r   rR   r   r   r   r     r   z/NegationSelector.specificity.<locals>.<genexpr>r   r   maxrq   r   r   r   rz     s    zNegationSelector.specificityc                 C   s   dd dd | jD  dS )Nz:not(, c                 s   s   | ]}t |V  qd S r6   r   r   r   r   r   r     r   z,NegationSelector.__repr__.<locals>.<genexpr>)r   r   rq   r   r   r   r     s    zNegationSelector.__repr__Nr   r   r   r   r   rW     s   
rW   c                   @   s(   e Zd Zdd Zedd Zdd ZdS )rX   c                 C   s
   || _ d S r6   r   r   r   r   r   ro     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 r6   r   rR   r   r   r   r     r   z1RelationalSelector.specificity.<locals>.<genexpr>r   r   rq   r   r   r   rz     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 r6   r   r   r   r   r   r     r   z.RelationalSelector.__repr__.<locals>.<genexpr>r   r   rq   r   r   r   r     s    zRelationalSelector.__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 )rU   c                 C   s
   || _ d S r6   r   r   r   r   r   ro     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 r6   r   rR   r   r   r   r     r   z1MatchesAnySelector.specificity.<locals>.<genexpr>r   r   rq   r   r   r   rz     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 r6   r   r   r   r   r   r     r   z.MatchesAnySelector.__repr__.<locals>.<genexpr>r   r   rq   r   r   r   r     s    zMatchesAnySelector.__repr__Nr   r   r   r   r   rU     s   
rU   c                   @   s(   e Zd Zdd Zedd Zdd ZdS )rV   c                 C   s
   || _ d S r6   r   r   r   r   r   ro     s    z&SpecificityAdjustmentSelector.__init__c                 C   s   dS )Nr   r   rq   r   r   r   rz     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 r6   r   r   r   r   r   r   
  r   z9SpecificityAdjustmentSelector.__repr__.<locals>.<genexpr>r   r   rq   r   r   r   r   	  s    z&SpecificityAdjustmentSelector.__repr__Nr   r   r   r   r   rV     s   
rV   )NFF)F)F)Ztinycss2r   __all__rJ   r   r   r%   r1   r2   rM   rH   r7   
ValueErrorr   r   r(   r)   r*   r4   r8   r9   rF   rG   ra   rK   rN   rW   rX   rU   rV   r   r   r   r   <module>   s6   
 
"/&
/$



