
    T-h+                        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      Z G d d      Zd Zd)dZd Z ed      d*d       Z edd      e
d               Z ed      ed               Z ed      ed               Z ed      ed               Z ed      d        Z ed      d        Z  ed      e
ed                      Z! ed      d        Z" edd      d         Z# edd!d       edd"d      d#               Z$ ed      e
d$               Z% edd      d%        Z& ed      ed&               Z' edd      d'        Z( edd      d(        Z)y)+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                       e Zd ZdZdZy)NoneFakeTokenidentnoneN__name__
__module____qualname__typelower_value     k/var/www/core.comfia.cic-ware.com/crm/lib/python3.12/site-packages/weasyprint/css/validation/descriptors.pyr   r      s    DKr    r   c                       e Zd ZdZdZy)NormalFakeTokenr   normalNr   r   r    r!   r#   r#      s    DKr    r#   c              #     K   |D ]  }|j                   dk7  s|j                  rt        |j                        }	 |j                  t
        v rH|j                  t        |    vrt        d      t        |    |j                     }|j                  r
 |||      }n ||      }|t        |j                  |ff}|D ]  \  }	}|	j!                  dd      |f   y# t        $ r}t        j                  d|j                  t        j                  |j                        |j                  |j                  |j                  r|j                  d   r|j                  d   nd       Y d}~dd}~ww xY ww)	zFilter 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_names
             r!   preprocess_descriptorsr?   !   sY     " 5
??m+z/C/C":#3#34	/1D(99#$>??"4(9H&& 2 (}##!.0F !' 	5Iu##C-u44	555$  	NN/!3!3J4D4D!E&&
(@(@"xxCHHQK_	N
 	s<   7E1CE1A+C8#E1	E.$A?E)#E1)E..E1c                       f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                     | j                   j                  dd      }n}|t           vsJ |       | _        | t           |<   | S )z(Add ``function`` to the ``DESCRIPTORS``.r(   r'   )r   r5   r-   r.   )r;   r+   descriptor_namer6   r.   s     r!   	decoratorzdescriptor.<locals>.decoratorS   sZ    "$$,,S#6D"D;t,,2d2,"0"*D$r    r   )r6   rB   r.   rC   s   ``` r!   r9   r9   G   s    
 r    c              #     K   t        |       }|dv r+dD ]  }|t        gf  |dk(  rt        nt        }d|gf y g g g g g g d}| D ]f  }t        |      }|dk(  rt        |D ]D  }d|j                  dd       } t        t        |      |g      s0||   j                  |        a t         |j                         D ]  \  }} | s	d| | f  y w)	N)r$   r   )z-alternatesz-capsz-east-asianz-numericz	-positionr$   z
-ligatures)
alternatescapsz
east-asian	ligaturesnumericpositionfont_variant_r'   r(   )
r   r#   r   r   r	   r5   getattrr   appenditems)r:   keywordsuffixtokenfeaturesfeaturefunction_names          r!   expand_font_variantrT   a   s#     (G$$ 	,F ?+++	, $+h#6MUG##   	$E!%(G("### $"/S0I/J K57:}5ug>W%,,U3	$ $#	$  (~~/ 	.OGV7)}f--	.s   BC6C
Cr   c                     dg|rj                  d       t        |       dk(  r!| d   j                  dk(  r| d   j                  S | r-t	        fd| D              rdj                  d | D              S y	y	)
z&``font-family`` descriptor validation.r   
whitespacer   r   stringc              3   :   K   | ]  }|j                   v   y w)Nr   ).0rP   allowed_typess     r!   	<genexpr>zfont_family.<locals>.<genexpr>   s     FeejjM1Fs    c              3   T   K   | ]   }|j                   d k(  s|j                   " yw)r   N)r   r*   )rZ   rP   s     r!   r\   zfont_family.<locals>.<genexpr>   s&      F!uzzW/DEKKFs   ((N)rL   lenr   r*   alljoin)r:   allow_spacesr[   s     @r!   font_familyrc      s     IM\*
6{aF1INNh6ay#FvFFxx F%+F F 	F Gvr    T)r.   c                 *   t        |       dv r| dd | d   }} |j                  dk(  r|j                  dk(  r
| dd | d   }} |j                  dk(  r(|j                  dk(  rdt        |j                  d      fS t        ||      }||d	   d
k(  r|d   S yyy)z``src`` descriptor validation.)r   r   Nr;   formatlocalT)rb   r   urlr   )r_   r   
lower_namerc   	argumentsr   r:   r7   rP   rh   s       r!   srcrl      s     6{fsVBZ::#(8(8H(D"3BKEF::#(8(8G(CKdKKKeX&?s1vq6M  /? r    c                 
    | dv S )z%``font-style`` descriptor validation.)r$   italicobliquer   rN   s    r!   
font_stylerq      s     555r    c                     t        |       }|dv r|S | j                  dk(  r(| j                  | j                  dv r| j                  S yyy)z&``font-weight`` descriptor validation.)r$   boldnumberN)	d      i,  i  i  iX  i  i   i  )r   r   	int_value)rP   rN   s     r!   font_weightrx      sV     % G$$zzX%//"=??KK??" L #>r    c                 
    | dv S )z'``font-stretch`` descriptor validation.)	zultra-condensedzextra-condensed	condensedzsemi-condensedr$   zsemi-expandedexpandedzextra-expandedzultra-expandedr   rp   s    r!   font_stretchr|      s      I I Ir    c                 ,    t        j                  |       S )z0``font-feature-settings`` descriptor validation.)r   font_feature_settings)r:   s    r!   r~   r~      s     ++F33r    c                     t        |       dk(  rt        | d         }|dv rg S g }t        |       D ]0  \  }}	 |j                  t	        j
                  |d| d             2 |S # t        $ r Y  yw xY w)z'``font-variant`` descriptor validation.r   r   )r$   r   inheritzfont-variantT)requiredN)r_   r   rT   rL   r   validate_non_shorthandr	   )r:   rN   valuesr+   
sub_tokenss        r!   font_variantr      s     6{afQi(33IF/7 j	MM*;;l4&1DB C M  		s   *A%%	A21A2c                 &    | j                   dk(  r| S y)z(``unicode_range`` descriptor validation.zunicode-rangeNrY   )rP   s    r!   unicode_ranger      s    
 zz_$ %r    r   c                 T   t        |       dkD  ryt        | d         }|dk(  r%t        |       dk(  rt        | d         }|r||dfS yy|dk(  rDt        |       dk(  ry| d   j                  dk(  r"| d   j                  rdd| d   j                  fS yyt        |       dk(  r
|d	v rd|dfS yy)
z!``system`` descriptor validation.r   Nr   extendsr   fixed)Nr   r   rt   )cyclicrH   
alphabeticsymbolicadditive)r_   r   r   
is_integerrw   )r:   rN   second_keywords      r!   systemr      s     6{Q&)$G)v;!(3N66   
G	v;!%AY^^x'F1I,@,@'6!9#6#677 -A'	V	g *G Ggt$$G	r    c                 v   t        |       dkD  ryg }t        |       } | rl| j                  d      }|j                  dv r|j	                  d|j
                  f       ?t        ||      }||d   dk(  r|j	                  d|d   f       | rlt        |      dk(  r|j	                  d       t        |      dk(  r|S y)	z#``negative`` descriptor validation.r   Nr   rW   r   rW   rh   r   )rW    )r_   listpopr   rL   r*   r   r:   r7   r   rP   rh   s        r!   negativer      s     6{QF&\F


1::,,MM8U[[12eX&?s1vMM5#a&/*  6{an%
6{a r    prefixrO   c                     t        |       dk7  ry| \  }|j                  dv rd|j                  fS t        ||      }||d   dk(  rd|d   fS yy)z1``prefix`` and ``suffix`` descriptors validation.r   Nr   rW   r   rh   )r_   r   r*   r   rk   s       r!   prefix_suffixr     sf     6{aFEzz((%++&&
%
"C
3q6U?s1v +r    c                    t        |       dk(  rt        |       }|dk(  ryyt        |       dk(  rg }t        |       D ]z  \  }}|j                  dk(  r.|j                  dk(  r|j                  |rt        nt                C|j                  dk(  sS|j                  s`|j                  |j                         | t        |      dk(  r|d   |d   k  rt        |      S yyy)	z ``range`` descriptor validation.r   autor   r   infinitert   r   N)
r_   r   	enumerater   r*   rL   r   r   rw   tuple)r:   rN   r   irP   s        r!   ranger     s     6{a$V,f 	V	!&) 	/HAuzzW$
)BQcSD1x'E,<,<eoo.		/
 v;!q	VAY 6=  !7 
r    c                 V   t        |       dk(  rddg}| D ]  }|j                  dk(  r0|j                  rC|j                  dk\  r4|d   /|j                  |d<   n|j                  dv rd|j                  f|d<   t        ||      }|p|d   dk(  syd|d   f|d<    d|vrt        |      S yy)	z``pad`` descriptor validation.r   Nrt   r   r   rW   r   rh   )r_   r   r   r*   rw   r   r   r   s        r!   padr   -  s     6{a 	,EzzX%##q(8VAY=N %F1I22%u{{3q	%*C3q6U?"CFOq		, v=   r    c                 (    t        |       }|dk7  r|S y)z#``fallback`` descriptor validation.r   N)r   )rP   r   s     r!   fallbackr   @  s     U#E r    c                     g }| D ]\  }|j                   dv r|j                  d|j                  f       /t        ||      }||d   dk(  r|j                  d|d   f       \ y t	        |      S )z"``symbols`` descriptor validation.r   rW   Nr   rh   r   )r   rL   r*   r   r   r   s        r!   symbolsr   I  s~     F ::,,MM8U[[12eX&?s1vMM5#a&/* =r    c                     g }t        |       D ]>  }t        t        |      |      }| y|r|d   d   |d   k  r y|j                  |       @ t	        |      S )z+``additive-symbols`` descriptor validation.Nre   r   )r   r   r   rL   r   )r:   r7   resultspartr<   s        r!   additive_symbolsr   Y  sh     Gv& &t,h7>wr{1~2v >r    )NF)F)*__doc__mathr   r0   loggerr   r   r   utilsr	   r
   r   r   r   r   r   r   r   r   r-   r,   r   r#   r?   r9   rT   rc   rl   rq   rx   r|   r~   r   r   r   r   r   r   r   r   r   r   r   r    r!   <module>r      sQ   2    " " "  
 
#5L4.D K	F 	F K-
  .
 K6  6
 K#  # KI  I K4 4
 K   K    O% %, OD1 2. OXd;OXd;
 < <
 O!  !" OD1! 2!$ O   OD1 2 OD1
 2
r    