a
    ¥Q•h˜+  ã                   @   sò  d Z ddlmZ ddlZddlmZ ddlmZ dd	lm	Z	m
Z
mZmZmZmZmZmZmZmZ i i d
œZdZG dd„ dƒZG dd„ dƒZdd„ Zd=dd„Zdd„ Zedƒd>dd„ƒZeddd�e
dd„ ƒƒZedƒedd„ ƒƒZedƒed d!„ ƒƒZedƒed"d#„ ƒƒZedƒd$d%„ ƒZedƒd&d'„ ƒZ edƒe
ed(d)„ ƒƒƒZ!ed*ƒd+d,„ ƒZ"ed*dd�d-d.„ ƒZ#ed*d/dd�ed*d0dd�d1d2„ ƒƒZ$ed*ƒe
d3d4„ ƒƒZ%ed*dd�d5d6„ ƒZ&ed*ƒed7d8„ ƒƒZ'ed*dd�d9d:„ ƒZ(ed*dd�d;d<„ ƒZ)dS )?z,Validate descriptors used for some at-rules.é    )ÚinfNé   )ÚLOGGERé   )Ú
propertiesé   )
ÚInvalidValuesÚcomma_separated_listÚget_custom_identÚget_keywordÚget_single_keywordÚget_urlÚremove_whitespaceÚsingle_keywordÚsingle_tokenÚsplit_on_comma)ú	font-faceúcounter-style)zfont-displayc                   @   s   e Zd ZdZdZdS )ÚNoneFakeTokenÚidentÚnoneN©Ú__name__Ú
__module__Ú__qualname__ÚtypeÚlower_value© r   r   ú^/var/www/sistema_ama/venv/lib/python3.9/site-packages/weasyprint/css/validation/descriptors.pyr      s   r   c                   @   s   e Zd ZdZdZdS )ÚNormalFakeTokenr   ÚnormalNr   r   r   r   r   r      s   r   c           
      c   s&  |D �]}|j dks|jrqt|jƒ}zj|jtv r8W qn|jt|  vrNtdƒ‚t|  |j }|jrn|||ƒ}n||ƒ}|du r‚t‚|j|ff}W nl tyü } zTt	 
d|jt |j¡|j|j|jrÖ|jd rÖ|jd nd¡ W Y d}~qW Y d}~n
d}~0 0 |D ]\}	}|	 dd¡|fV  �qqdS )	zŸFilter unsupported names and values for descriptors.

    Log a warning for every ignored descriptor.

    Return a iterable of ``(name, value)`` tuples.

    Údeclarationzdescriptor not supportedNzIgnored `%s:%s` at %d:%d, %s.r   zinvalid valueú-Ú_)r   Ú	importantr   ÚvalueÚnameÚNOT_PRINT_MEDIAÚDESCRIPTORSr   Úwants_base_urlr   ÚwarningÚtinycss2Ú	serializeÚsource_lineÚsource_columnÚargsÚreplace)
ÚruleÚbase_urlÚdescriptorsÚ
descriptorÚtokensÚfunctionr%   ÚresultÚexcÚ	long_namer   r   r   Úpreprocess_descriptors!   s4    


ü"r:   Fc                    s   ‡ ‡‡fdd„}|S )ul  Decorator adding a function to the ``DESCRIPTORS``.

    The name of the descriptor covered by the decorated function is set to
    ``descriptor_name`` if given, or is inferred from the function name
    (replacing underscores by hyphens).

    :param wants_base_url:
        The function takes the stylesheetâ€™s base URL as an additional
        parameter.

    c                    sF   ˆ du r| j  dd¡}nˆ }|tˆ vs0J |ƒ‚ˆ| _| tˆ |< | S )z(Add ``function`` to the ``DESCRIPTORS``.Nr#   r"   )r   r0   r(   r)   )r6   r&   ©Údescriptor_namer1   r)   r   r   Ú	decoratorS   s    zdescriptor.<locals>.decoratorr   )r1   r<   r)   r=   r   r;   r   r4   G   s    r4   c                 c   sà   t | ƒ}|dv rDdD ]}|tgfV  q|dkr2tnt}d|gfV  n˜g g g g g g dœ}| D ]Z}t|ƒ}|dkrrt‚|D ]8}d| dd¡› �}tt|ƒ|gƒrv||  |¡  qZqvt‚qZ| 	¡ D ]\}} | r¾d|› �| fV  q¾d S )	N)r    r   )z-alternatesz-capsz-east-asianz-numericz	-positionr    z
-ligatures)Z
alternatesÚcapsz
east-asianZ	ligaturesÚnumericÚpositionZfont_variant_r"   r#   )
r   r   r   r   r   r0   Úgetattrr   ÚappendÚitems)r5   ÚkeywordÚsuffixÚtokenÚfeaturesÚfeatureÚfunction_namer   r   r   Úexpand_font_varianta   s4    úrJ   r   c                    sj   dg‰ |rˆ   d¡ t| ƒdkr8| d jdkr8| d jS | rft‡ fdd„| D ƒƒrfd d	d„ | D ƒ¡S d
S )z&``font-family`` descriptor validation.r   Ú
whitespacer   r   Ústringc                 3   s   | ]}|j ˆ v V  qd S )N©r   ©Ú.0rF   ©Zallowed_typesr   r   Ú	<genexpr>‹   ó    zfont_family.<locals>.<genexpr>ú c                 s   s   | ]}|j d kr|jV  qdS )r   N)r   r%   rN   r   r   r   rQ   Œ   s   N)rB   Úlenr   r%   ÚallÚjoin)r5   Úallow_spacesr   rP   r   Úfont_familyƒ   s    


ÿrX   T)r)   c                 C   sœ   t | ƒdv r˜| dd… | d  } }|jdkrL|jdkrL| dd… | d  } }|jdkrr|jdkrrdt|jdd�fS t||ƒ}|dur˜|d	 d
kr˜|d S dS )z``src`` descriptor validation.)r   r   Néÿÿÿÿr6   ÚformatÚlocalT)rW   r   Úurlr   )rT   r   Ú
lower_namerX   Ú	argumentsr   ©r5   r2   rF   r\   r   r   r   Úsrc�   s    
r`   c                 C   s   | dv S )z%``font-style`` descriptor validation.)r    ÚitalicÚobliquer   ©rD   r   r   r   Ú
font_styleŸ   s    rd   c                 C   s<   t | ƒ}|dv r|S | jdkr8| jdur8| jdv r8| jS dS )z&``font-weight`` descriptor validation.)r    ÚboldÚnumberN)	éd   éÈ   i,  i�  iô  iX  i¼  i   i„  )r   r   Ú	int_value)rF   rD   r   r   r   Úfont_weight¦   s    
rj   c                 C   s   | dv S )z'``font-stretch`` descriptor validation.)	zultra-condensedzextra-condensedÚ	condensedzsemi-condensedr    zsemi-expandedÚexpandedzextra-expandedzultra-expandedr   rc   r   r   r   Úfont_stretch²   s    rm   c                 C   s
   t  | ¡S )z0``font-feature-settings`` descriptor validation.)r   Úfont_feature_settings)r5   r   r   r   rn   ¼   s    rn   c              	   C   sv   t | ƒdkr$t| d ƒ}|dv r$g S g }t| ƒD ]@\}}z | tj|d|› �dd�¡ W q0 tyn   Y  dS 0 q0|S )z'``font-variant`` descriptor validation.r   r   )r    r   Úinheritzfont-variantT)ÚrequiredN)rT   r   rJ   rB   r   Úvalidate_non_shorthandr   )r5   rD   Úvaluesr&   Z
sub_tokensr   r   r   Úfont_variantÂ   s    ÿrs   c                 C   s   | j dkr| S dS )z(``unicode_range`` descriptor validation.zunicode-rangeNrM   )rF   r   r   r   Úunicode_rangeÓ   s    
rt   r   c                 C   s°   t | ƒdkrdS t| d ƒ}|dkrLt | ƒdkr¬t| d ƒ}|r¬||dfS n`|dkrŽt | ƒdkrddS | d jdkr¬| d jr¬dd| d jfS nt | ƒdkr¬|d	v r¬d|dfS dS )
z!``system`` descriptor validation.r   Nr   Úextendsr   Úfixed)Nrv   r   rf   )Úcyclicr?   Ú
alphabeticÚsymbolicÚadditive)rT   r   r   Ú
is_integerri   )r5   rD   Zsecond_keywordr   r   r   ÚsystemÜ   s    r|   c                 C   s¢   t | ƒdkrdS g }t| ƒ} | rx|  d¡}|jdv rF| d|jf¡ qt||ƒ}|dur|d dkr| d|d f¡ qt |ƒdkrŽ| d¡ t |ƒdkrž|S dS )	z#``negative`` descriptor validation.r   Nr   ©rL   r   rL   r\   r   )rL   Ú )rT   ÚlistÚpopr   rB   r%   r   ©r5   r2   rr   rF   r\   r   r   r   Únegativeó   s     



r‚   ÚprefixrE   c                 C   sX   t | ƒdkrdS | \}|jdv r*d|jfS t||ƒ}|durT|d dkrTd|d fS dS )z1``prefix`` and ``suffix`` descriptors validation.r   Nr}   rL   r   r\   )rT   r   r%   r   r_   r   r   r   Úprefix_suffix  s    


r„   c                 C   s²   t | ƒdkr"t| ƒ}|dkr®dS nŒt | ƒdkr®g }t| ƒD ]N\}}|jdkrl|jdkrl| |rbtnt ¡ q:|jdkr:|jr:| |j¡ q:t |ƒdkr®|d |d kr®t	|ƒS dS )	z ``range`` descriptor validation.r   Úautor   r   Úinfiniterf   r   N)
rT   r   Ú	enumerater   r%   rB   r   r{   ri   Útuple)r5   rD   rr   ÚirF   r   r   r   Úrange  s    rŠ   c                 C   sª   t | ƒdkr¦ddg}| D ]|}|jdkrN|jrf|jdkrf|d du rf|j|d< n|jdv rfd|jf|d< t||ƒ}|dur|d dkrd|d f|d< qd|vr¦t|ƒS dS )	z``pad`` descriptor validation.r   Nrf   r   r}   rL   r   r\   )rT   r   r{   r%   ri   r   rˆ   r�   r   r   r   Úpad-  s    


r‹   c                 C   s   t | ƒ}|dkr|S dS )z#``fallback`` descriptor validation.r   N)r
   )rF   r   r   r   r   Úfallback@  s    rŒ   c                 C   sh   g }| D ]V}|j dv r(| d|jf¡ qt||ƒ}|durZ|d dkrZ| d|d f¡ q dS t|ƒS )z"``symbols`` descriptor validation.r}   rL   Nr   r\   r   )r   rB   r%   r   rˆ   r�   r   r   r   ÚsymbolsI  s    

r�   c                 C   s^   g }t | ƒD ]H}tt|ƒ|ƒ}|du r, dS |rJ|d d |d krJ dS | |¡ qt|ƒS )z+``additive-symbols`` descriptor validation.NrY   r   )r   r‹   r   rB   rˆ   )r5   r2   ÚresultsÚpartr7   r   r   r   Úadditive_symbolsY  s    r�   )NF)F)*Ú__doc__Úmathr   r+   Úloggerr   r~   r   Úutilsr   r	   r
   r   r   r   r   r   r   r   r(   r'   r   r   r:   r4   rJ   rX   r`   rd   rj   rm   rn   rs   rt   r|   r‚   r„   rŠ   r‹   rŒ   r�   r�   r   r   r   r   Ú<module>   sn   0þ&
"











