
    Bh+                        S r SSKJr  SSKrSSKJr  SSKJr  SS	KJ	r	J
r
JrJrJrJrJrJrJrJr  0 0 S
.rSr " S S5      r " S S5      rS rS)S jrS r\" S5      S*S j5       r\" SSS9\
S 5       5       r\" S5      \S 5       5       r\" S5      \S 5       5       r\" S5      \S 5       5       r\" S5      S 5       r\" S5      S 5       r \" S5      \
\S 5       5       5       r!\" S5      S 5       r"\" SSS9S  5       r#\" SS!SS9\" SS"SS9S# 5       5       r$\" S5      \
S$ 5       5       r%\" SSS9S% 5       r&\" S5      \S& 5       5       r'\" SSS9S' 5       r(\" SSS9S( 5       r)g)+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                       \ rS rSrSrSrSrg)NoneFakeToken   identnone N__name__
__module____qualname____firstlineno__typelower_value__static_attributes__r       W/var/www/html/env/lib/python3.13/site-packages/weasyprint/css/validation/descriptors.pyr   r      s    DKr#   r   c                       \ rS rSrSrSrSrg)NormalFakeToken   r   normalr   Nr   r   r#   r$   r&   r&      s    DKr#   r&   c              #   *  #    U H  nUR                   S:w  d  UR                  (       a  M&  [        UR                  5      n UR                  [
        ;   a  MR  UR                  [        U    ;  a  [        S5      e[        U    UR                     nUR                  (       a	  U" XA5      nOU" U5      nUc  [        eUR                  U44nU H  u  pU	R!                  SS5      U4v   M     M     g! [         a  n[        R                  " SUR                  [        R                  " UR                  5      UR                  UR                  UR                  (       a#  UR                  S   (       a  UR                  S   OS5         SnAGM  SnAff = f7f)	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_descriptorsrC   !   sJ     "
??m+z/C/C":#3#34	/1D(99#$>??"4(9H&& 2 (}##!.0F !'I##C-u44 !'5 "$  	NN/!3!3J4D4D!E&&
(@(@"xxCHHQK_	N
 	s=   >FC/FA2C/	&F/
F9BFFFFc                    ^ ^^ UU U4S jnU$ )uP  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                    > Tc  U R                   R                  SS5      nOTnU[        T   ;  d   U5       eTU l        U [        T   U'   U $ )z(Add ``function`` to the ``DESCRIPTORS``.r,   r+   )r   r9   r1   r2   )r?   r/   descriptor_namer:   r2   s     r$   	decoratordescriptor.<locals>.decoratorS   sZ    "$$,,S#6D"D;t,,2d2,"0"*D$r#   r   )r:   rF   r2   rG   s   ``` r$   r=   r=   G   s    
 r#   c              #     #    [        U 5      nUS;   a.  S H  nU[        /4v   M     US:X  a  [        O[        nSU/4v   g / / / / / / S.nU  Hn  n[        U5      nUS:X  a  [        eU HJ  nSUR                  SS5       3n[        [        U5      " U/5      (       d  M6  XE   R                  U5          Mh     [        e   UR                  5        H  u  pPU (       d  M  SU 3U 4v   M     g 7f)	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	   r9   getattrr   appenditems)r>   keywordsuffixtokenfeaturesfeaturefunction_names          r$   expand_font_variantrY   a   s     (G$$F ?+++ $+h#6MUG##  E!%(G("###"/S0I/J K:}5ug>>%,,U3	 $ $#   (~~/OGv7)}f--  0s   BC+:C+C+r   c                   ^ S/mU(       a  TR                  S5        [        U 5      S:X  a"  U S   R                  S:X  a  U S   R                  $ U (       a3  [	        U4S jU  5       5      (       a  SR                  S U  5       5      $ g	g	)
z&``font-family`` descriptor validation.r   
whitespacer   r   stringc              3   @   >#    U  H  oR                   T;   v   M     g 7f)Nr    ).0rU   allowed_typess     r$   	<genexpr>font_family.<locals>.<genexpr>   s     FvejjM1vs    c              3   \   #    U  H"  oR                   S :X  d  M  UR                  v   M$     g7f)r   N)r    r.   )r_   rU   s     r$   ra   rb      s#      F%+EzzW/DKEKKVs   ,,N)rQ   lenr    r.   alljoin)r>   allow_spacesr`   s     @r$   font_familyri      s     IM\*
6{aF1INNh6ay#FvFFFxx F%+F F 	F Gvr#   T)r2   c                 .   [        U 5      S;   a  U SS U S   p UR                  S:X  a  UR                  S:X  a	  U SS U S   p UR                  S:X  a&  UR                  S:X  a  S[        UR                  SS94$ [        X!5      nUb  US	   S
:X  a  US   $ ggg)z``src`` descriptor validation.)r   r   Nr?   formatlocalT)rh   r   urlr   )re   r    
lower_nameri   	argumentsr   r>   r;   rU   rn   s       r$   srcrr      s     6{fsVBZ::#(8(8H(D"3BKE::#(8(8G(CKdKKKe&?s1vq6M  /? r#   c                     U S;   $ )z%``font-style`` descriptor validation.)r(   italicobliquer   rS   s    r$   
font_stylerw      s     555r#   c                     [        U 5      nUS;   a  U$ U R                  S:X  a+  U R                  b  U R                  S;   a  U R                  $ ggg)z&``font-weight`` descriptor validation.)r(   boldnumberN)	d      i,  i  i  iX  i  i   i  )r   r    	int_value)rU   rS   s     r$   font_weightr~      sV     % G$$zzX%//"=??KK??" L #>r#   c                     U S;   $ )z'``font-stretch`` descriptor validation.)	zultra-condensedzextra-condensed	condensedzsemi-condensedr(   zsemi-expandedexpandedzextra-expandedzultra-expandedr   rv   s    r$   font_stretchr      s      I I Ir#   c                 .    [         R                  " U 5      $ )z0``font-feature-settings`` descriptor validation.)r   font_feature_settings)r>   s    r$   r   r      s     ++F33r#   c           	          [        U 5      S:X  a  [        U S   5      nUS;   a  / $ / n[        U 5       H.  u  p4 UR                  [        R
                  " USU 3SS95        M0     U$ ! [         a       gf = f)z'``font-variant`` descriptor validation.r   r   )r(   r   inheritzfont-variantT)requiredN)re   r   rY   rQ   r   validate_non_shorthandr	   )r>   rS   valuesr/   
sub_tokenss        r$   font_variantr      s     6{afQi(33IF/7	MM*;;l4&1DB C 8 M  		s   (A''
A54A5c                 (    U R                   S:X  a  U $ g)z(``unicode_range`` descriptor validation.zunicode-rangeNr^   )rU   s    r$   unicode_ranger      s    
 zz_$ %r#   r   c                 x   [        U 5      S:  a  g[        U S   5      nUS:X  a*  [        U 5      S:X  a  [        U S   5      nU(       a  XS4$ ggUS:X  aK  [        U 5      S:X  a  gU S   R                  S:X  a'  U S   R                  (       a  SSU S   R                  4$ gg[        U 5      S:X  a  US	;   a  SUS4$ gg)
z!``system`` descriptor validation.r   Nr   extendsr   fixed)Nr   r   rz   )cyclicrM   
alphabeticsymbolicadditive)re   r   r    
is_integerr}   )r>   rS   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                    [        U 5      S:  a  g/ n[        U 5      n U (       av  U R                  S5      nUR                  S;   a  UR	                  SUR
                  45        MG  [        X15      nUb  US   S:X  a  UR	                  SUS   45        U (       a  Mv  [        U5      S:X  a  UR	                  S5        [        U5      S:X  a  U$ g)	z#``negative`` descriptor validation.r   Nr   r\   r   r\   rn   r   )r\    )re   listpopr    rQ   r.   r   r>   r;   r   rU   rn   s        r$   negativer      s     6{QF&\F


1::,,MM8U[[12e&?s1vMM5#a&/* & 6{an%
6{a r#   prefixrT   c                     [        U 5      S:w  a  gU u  nUR                  S;   a  SUR                  4$ [        X!5      nUb  US   S:X  a  SUS   4$ gg)z1``prefix`` and ``suffix`` descriptors validation.r   Nr   r\   r   rn   )re   r    r.   r   rq   s       r$   prefix_suffixr     sd     6{aFEzz((%++&&
%
"C
3q6U?s1v +r#   c                    [        U 5      S:X  a  [        U 5      nUS:X  a  gg[        U 5      S:X  a  / n[        U 5       H  u  p4UR                  S:X  a5  UR                  S:X  a%  UR                  U(       a  [        O[        * 5        MJ  UR                  S:X  d  M\  UR                  (       d  Mo  UR                  UR                  5        M     [        U5      S:X  a  US   US   ::  a  [        U5      $ ggg)	z ``range`` descriptor validation.r   autor   r   infiniterz   r   N)
re   r   	enumerater    r.   rQ   r   r   r}   tuple)r>   rS   r   irU   s        r$   ranger     s     6{a$V,f 	V	!&)HAzzW$
)BQcSD1x'E,<,<,<eoo.	 *
 v;!q	VAY 6=  !7 
r#   c                 z   [        U 5      S:X  a  SS/nU  H  nUR                  S:X  a7  UR                  (       a%  UR                  S:  a  US   c  UR                  US'   O!UR                  S;   a  SUR                  4US'   [        X15      nUc  M{  US   S:X  d  M  SUS   4US'   M     SU;  a  [        U5      $ gg)	z``pad`` descriptor validation.r   Nrz   r   r   r\   r   rn   )re   r    r   r.   r}   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                 *    [        U 5      nUS:w  a  U$ g)z#``fallback`` descriptor validation.r   N)r   )rU   r   s     r$   fallbackr   @  s     U#E r#   c                     / nU  Ha  nUR                   S;   a  UR                  SUR                  45        M2  [        X15      nUb!  US   S:X  a  UR                  SUS   45        Ma    g   [	        U5      $ )z"``symbols`` descriptor validation.r   r\   Nr   rn   r   )r    rQ   r.   r   r   r   s        r$   symbolsr   I  sw     F::,,MM8U[[12e&?s1vMM5#a&/*  =r#   c                     / n[        U 5       HF  n[        [        U5      U5      nUc    gU(       a  US   S   US   ::  a    gUR                  U5        MH     [	        U5      $ )z+``additive-symbols`` descriptor validation.Nrk   r   )r   r   r   rQ   r   )r>   r;   resultspartr@   s        r$   additive_symbolsr   Y  sc     Gv&&t,h7>wr{1~2v ' >r#   )NF)F)*__doc__mathr   r4   loggerr   r   r   utilsr	   r
   r   r   r   r   r   r   r   r   r1   r0   r   r&   rC   r=   rY   ri   rr   rw   r~   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#   