
    Bh                        S r SSKJr  SSKJr  SSKJrJr  SSKrSSK	r	SSK
r	SSKr	SSKJr  SSKJrJr  SS	KJrJrJr  S
SKJrJr  S
SKJr  S
SKJrJrJrJ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(  Sr)\" S/ SQ5      r* " S S5      r+S r,S r-S r.S$S jr/S r0S r1 " S S\25      r3 " S S\25      r4   S%S  jr5S! r6 S&S" jr7   S'S# jr8g)(u  Find and apply CSS.

This module takes care of steps 3 and 4 of “CSS 2.1 processing model”: Retrieve
stylesheets associated with a document and annotate every element with a value
for every CSS property.

https://www.w3.org/TR/CSS21/intro.html#processing-model

This module does this in more than two steps. The
:func:`get_all_computed_styles` function does everything, but it is itsef based
on other functions in this module.

    )
namedtuple)groupby)DEBUGWARNINGN   )CSS)LOGGERPROGRESS_LOGGER)URLFetchingErrorget_url_attributeurl_join   )countersmedia_queries)COMPUTER_FUNCTIONS)	INHERITEDINITIAL_NOT_COMPUTEDINITIAL_VALUESZERO_PIXELS)preprocess_declarations)preprocess_descriptors)InvalidValuesPendingcheck_var_functionget_urlparse_functionremove_whitespace)Nbeforeaftermarkerz
first-linezfirst-letterzfootnote-callzfootnote-markerPageSelectorType)sideblankfirstindexnamec                   X    \ rS rSrSrS rSS jr  SS jrS rS r	S	 r
\S
 5       rSrg)StyleFor.   z?Convenience function to get the computed styles for an element.c           
      X   0 =U l         n0 U l        X l        [        R                  " S5        [        UR                  X1R                  5       Hh  u  pgUu  pn
UR                  US 40 5      n[        X5       H;  u  pn[        SU5      nX4nUR                  US5      S   nUb  UU::  d  M5  UU4X'   M=     Mj     UR                  R                  5        H  nU H  u  nnnUR                  R                  U5       Ht  nUu  nnnn	U=(       d    UnUR                  UR                  U40 5      nU	 H;  u  pn[        UU5      nX4nUR                  US5      S   nUb  UU::  d  M5  UU4X'   M=     Mv     M     UR                   (       a  UR                   R                  OS nU R#                  UR                  UR                  UUR                  US9  M     U H7  u  nnU(       d  M  U R#                  UUUR                  UUR                  US9  M9     U R                   R%                  5         g )NzStep 3 - Applying CSSauthorNNr   )rootparentbase_urltarget_collector)pseudo_typer-   r.   r/   r0   )_cascaded_styles_computed_styles_sheetsr
   infofind_style_attributesetree_elementr/   
setdefaultr   declaration_precedencegetwrapper_elementiter_subtreematchermatchr.   set_computed_stylesclear)selfhtmlsheetspresentational_hintsr0   cascaded_stylesspecificity
attributeselementdeclarationsr/   styler&   values
importance
precedenceweight
old_weightsheetoriginsheet_specificityselectororderr1   r.   s                            I/var/www/html/env/lib/python3.13/site-packages/weasyprint/css/__init__.py__init__StyleFor.__init__0   s=    354 !#45'<""$8--(I#K.8+G8#..CE,C-,(j3HjI
$2"YYt\:1=
%v)="(&.EK-,	(I" ++88:G4:0v0 % 3 3G <HDLAK\"3"B{K+66 ..<bBE4@0j%;FJ%O
",!:%*YYt\%B1%E
%-v1E*0&.EK 5A != 5; 6=^^W^^11F$$%%D,>,>v9I % K ;6 %4 G[{((++G!]]=M	 ) O %4 	##%    Nc                 .   U R                   R                  X45      =n(       aq  SUS   ;   a  US   S:X  a  S H  n[        USU 3'   M     [        US   5      S:X  a8  US   u  nUR	                  S5      (       a  US	:w  a  S H  n[        US
U 3'   M     U$ )Ntabledisplayborder_collapsecollapse)topbottomleftrightpadding_r   ztable-ztable-captionmargin_)r3   r:   r   len
startswith)rA   rH   r1   rJ   r"   r[   s         rU   __call__StyleFor.__call__~   s    ))--w.DEE5E%	**u5F/G:/U>D/:EHTF+, ?5#$) +%%h//G4N B2=v./ !CrX   c           	          U R                  5       nU R                  5       nX:X  a  Uc  Ub   eSn	S[        S   0n
OUc   eXS4   n	XS4   n
UR                  X40 5      n[	        XXXU5      XU4'   g)a  Set the computed values of styles to ``element``.

Take the properties left by ``apply_style_rule`` on an element or
pseudo-element and assign computed values with respect to the cascade,
declaration priority (ie. ``!important``) and selector specificity.

N	font_size)get_cascaded_stylesget_computed_stylesr   r:   computed_from_cascaded)rA   rH   r.   r-   r1   r/   r0   rE   computed_stylesparent_style
root_stylecascadeds               rU   r?   StyleFor.set_computed_styles   s     224224?{2>!>L ^K8J %%%*4<8L(t4J"&&'=rB0F|*1,-rX   c                 z   U R                    H  u  p#nUR                   H  u  pVnU H  nUu  pnU R                  X5      (       d  M   U=(       d    U	n	U R                  R	                  X40 5      nU H;  u  pn[        X?5      nUU	4nUR                  US5      S   nUb  UU::  d  M5  UU4X'   M=     M     M     M     g )Nr,   r   )r4   
page_rules_page_type_matchr2   r8   r9   r:   )rA   	page_typerP   rQ   rR   _ruleselector_listrI   rS   rF   r1   page_selector_typerJ   r&   rK   rL   rM   rN   rO   s                      rU   add_page_declarationsStyleFor.add_page_declarations   s    04,E,6;6F6F2l -HCK@K.@,,-?KK&7&F; $ 5 5 @ @&4b!:8D4D*)?)SJ&0+%>F).4)Fq)IJ)1Z65I.4fn 9E !. 7G 1=rX   c                     U R                   $ N)r2   rA   s    rU   rj   StyleFor.get_cascaded_styles       $$$rX   c                     U R                   $ r|   )r3   r}   s    rU   rk   StyleFor.get_computed_styles   r   rX   c                 R   U R                   S UR                   4;  a  gU R                  S UR                  4;  a  gU R                  S UR                  S:H  4;  a  gU R                  S UR                  4;  a  gU R                  b  U R                  u  p#nUc6  UR                  nUS-   U-
  nUS:X  a  US:H  $ Xb-  S:  =(       a	    Xb-  (       + $ XAR                  :w  a  gUR
                   H:  u  puXG:w  a  M  US-   U-
  nUS:X  a  US:X  d  M"     gXb-  S:  d  M/  Xb-  (       a  M:    g   gg)NFr   r   T)r"   r#   r$   r%   r&   groups)rx   ru   abr&   r%   offset
group_names           rU   rt   StyleFor._page_type_match   s+   ""4*@@##D)//+BB##D)//Q2F+GG""4*@@##/+11JA$|!Q&'1fv{V6:?3U6:~V~~%%.%5%5!
%Q#$6FaK 17
a

 &6 rX   )r2   r3   r4   r|   NNNN)__name__
__module____qualname____firstlineno____doc__rV   rf   r?   ry   rj   rk   staticmethodrt   __static_attributes__ rX   rU   r(   r(   .   sC    IL&\ KO<@:= %%  rX   r(   c                     U R                   (       a  U R                   /O/ nU  H1  nUR                  (       d  M  UR                  UR                  5        M3     SR                  U5      $ )z9Return the text directly in the element, not descendants. )texttailappendjoin)rH   contentchilds      rU   get_child_textr      sI     'w||n"G:::NN5::&  777rX   c                 ^    SnX;   a  U(       d  UnU$ U S:X  a  US:w  a  US:X  a  UnU$ X-  nU$ )N)text_decoration_colortext_decoration_styletext_decoration_thicknesstext_decoration_linenoner   )keyvalueparent_valuerp   text_propertiess        rU   text_decorationr      sT    
WO
 E L 
&	&6!$ L ,LrX   c              #     #    SSK Jn  U R                  SS5       GHZ  nUR                  n	U	R	                  SS5      R                  SS5      S	   R                  5       n
U
S:w  a  MK  U	R	                  S
S5      R                  5       =(       d    SnUR                  S5       Vs/ s H  oR                  5       PM     nn[        R                  " X5      (       d  M  U	R                  S:X  a  [        U	5      n[        XX!XEUS9nUv   M  U	R                  S:X  d  M  U	R	                  S5      (       d  GM  U" U	S5      (       a  U" U	S5      (       a  GM6  [        U	SU5      nUc  GMI   [        UUSUXEUS9v   GM]     gs  snf ! [         a9  n[        R                  " SUU5        [        R                   " SUS9   SnAGM  SnAff = f7f)z_Yield the stylesheets in ``element_tree``.

The output order is the same as the source order.

r   )element_has_link_typerJ   linktypeztext/css;r   r   mediar   all,)stringr/   url_fetcher
media_typefont_configcounter_stylers   href
stylesheet	alternateNT)urlr   _check_mime_typer   r   r   rs   z#Failed to load stylesheet at %s: %sError while loading stylesheet:exc_info)rB   r   	query_allr7   r:   splitstripr   evaluate_media_querytagr   r   r   r   r	   errordebug)r;   device_media_typer   r/   r   r   rs   r   wrapperrH   	mime_type
media_attrr   r   r   cssr   	exceptions                     rU   find_stylesheetsr      s     -",,Wf=''KK
399#qA!DJJL	
"[["-335>
6@6F6Fs6KL6K
!!#6KL11%KK;;'! %W-G ''%	'C
 I[[F"w{{6':':(,??)';??$Wfh?DX k)-:K$/#-	/ /; > M6 ( XLL!FiXLL!BYWWXsI   B G"E;;AGG2-G%F 5G 
G
-F>7G>GGc              #   8  ^#    U4S jnU R                  5        GH  nSnUR                  S5      nU(       a  XS" XF5      4v   U(       d  M2  SnUR                  S:X  Ga  S H\  u  pxSnSU 3U S34 H3  n	UR                  U	5      (       d  M  S	U S
UR                  U	5       S3n  O   U(       d  MQ  XS" XF5      4v   M^     UR                  S5      (       a   SUR                  S5       S3nXS" XF5      4v   UR                  S5      (       a  SUR                  S5       3nXS" XF5      4v   UR                  S5      (       a"  SUR                  S5       3nXS" XF5      4v   GMJ  GMM  UR                  S:X  a  XS" US5      4v   GMl  UR                  S:X  aP  UR                  SS5      R                  5       n
U
S:X  a  XS" US5      4v   GM  U
S;   a  XS" USU
 35      4v   GM  GM  UR                  S:X  Ga<  UR                  S5      (       a  XS" USUR                  S5       35      4v   UR                  S5      (       a  XS" USUR                  S5       35      4v   UR                  S5      (       a  UR                  S5      R	                  5       nUR                  S 5      nUR                  S!5      nU(       d  U(       a  US"S R	                  5       n [        U5      nS#S$S%S&S'S(S)S*.nU(       a  US+-  nOU(       a  US+-  n[        S"[        S,U5      5      nXS" US-X    35      4v   GM  GM  UR                  S/:X  Ga  UR                  S05      (       a  XS" US1UR                  S05       S35      4v   UR                  S25      (       am  UR                  S25      nUR                  5       (       a  US-  nUR                  5        H.  nUR                  S3;   d  M  XS" US4U S5U S6U S7U S83	5      4v   M0     UR                  S95      (       a=  UR                  S95      nUR                  5       (       a  US-  nXS" US:U S;U 35      4v   UR                  S<5      (       a=  UR                  S<5      nUR                  5       (       a  US-  nXS" US=U S>U 35      4v   UR                  S?5      (       aH  S@UR                  S?5       3nUR                  S?5      R                  5       (       a  US-  nXS" XF5      4v   UR                  SA5      (       aH  SBUR                  SA5       3nUR                  SA5      R                  5       (       a  US-  nXS" XF5      4v   UR                  S5      (       a   SUR                  S5       S3nXS" XF5      4v   UR                  S5      (       a  SUR                  S5       3nXS" XF5      4v   UR                  SC5      (       a  SDUR                  SC5       3nXS" XF5      4v   UR                  SE5      (       a#  SFUR                  SE5       S3nXS" XF5      4v   GM  GM   UR                  SG;   Ga  UR                  SS5      R                  5       n
U
S:X  a  XS" US5      4v   OU
S;   a  XS" USU
 35      4v   UR                  S5      (       a   SUR                  S5       S3nXS" XF5      4v   UR                  S5      (       a  SUR                  S5       3nXS" XF5      4v   UR                  SH;   a  UR                  SA5      (       aH  SBUR                  SA5       3nUR                  SA5      R                  5       (       a  US-  nXS" XF5      4v   UR                  S3;   ad  UR                  S?5      (       aK  S@UR                  S?5       3nUR                  S?5      R                  5       (       a  US-  nXS" XF5      4v   GM  GM  GM  GM  UR                  SI:X  aP  UR                  SS5      R                  5       n
U
S:X  a  XS" US5      4v   GM  U
S;   a  XS" USU
 35      4v   GM)  GM,  UR                  SJ:X  ad  UR                  S?5      (       aK  S@UR                  S?5       3nUR                  S?5      R                  5       (       a  US-  nXS" XF5      4v   GM  GM  UR                  SK:X  Ga7  SLnUR                  S5      (       a   [        UR                  S5      5      nUR                  S5      UR                  SM5      4SN:w  a  US":  a  XS" USFUSO-   S35      4v   O,US":X  a  XS" USP5      4v   OUS":  a  XS" USBUSO-
   S35      4v   UR                  S?5      (       aH  S@UR                  S?5       3nUR                  S?5      R                  5       (       a  US-  nXS" XF5      4v   UR                  S5      (       a!  XS" USUR                  S5       35      4v   G	M  G	M  UR                  SQ;   Ga  UR                  SR:w  d%  UR                  SSS5      R                  5       ST:X  Ga  UR                  SS5      R                  5       n
U
SU;   a  XS" USV5      4v   UR                  S95      (       a=  UR                  S95      nUR                  5       (       a  US-  nXS" US:U S;U 35      4v   UR                  S<5      (       a=  UR                  S<5      nUR                  5       (       a  US-  nXS" US=U S>U 35      4v   UR                  S?5      (       aH  S@UR                  S?5       3nUR                  S?5      R                  5       (       a  US-  nXS" XF5      4v   UR                  SA5      (       aH  SBUR                  SA5       3nUR                  SA5      R                  5       (       a  US-  nXS" XF5      4v   UR                  SW;   a;  UR                  SE5      (       a"  XS" USFUR                  SE5       SX35      4v   GM
  GM  GM  GM  UR                  SY:X  a;  UR                  SZ5      (       a"  XS" US[UR                  SZ5       S\35      4v   GM[  GM^  UR                  S]:X  d  GMq  UR                  S^5      (       d  GM  XS" US[UR                  S^5       S_35      4v   GM     g! [         a    [        R                  " S.U5         GM  f = f! [         a    [        R                  " S.U5         GNf = f7f)`a  Yield ``specificity, (element, declaration, base_url)`` rules.

Rules from "style" attribute are returned with specificity
``(1, 0, 0)``.

If ``presentational_hints`` is ``True``, rules from presentational hints
are returned with specificity ``(0, 0, 0)``.

c                 8   > [         R                  " U5      nXT4$ r|   )tinycss2parse_blocks_contents)rH   style_attributerI   r/   s      rU   check_style_attribute4find_style_attributes.<locals>.check_style_attribute1  s    55oFh..rX   )r   r   r   rJ   r   r   r   body))heightr^   )r   r_   )widthr`   )r   ra   Nmarginzmargin-:px
backgroundzbackground-image:url()bgcolorzbackground-color:r   zcolor:centerztext-align:centerdivalignr   middle)r   r`   ra   justifyztext-align:fontcolorfacezfont-family:size+-r   zx-smallsmallmediumlargezx-largezxx-large48px)r   r                  r   r   z
font-size:zInvalid value for size: %srZ   cellspacingzborder-spacing:cellpadding)tdthzpadding-left:z;padding-right:z;padding-top:z;padding-bottom:r   hspacezmargin-left:z;margin-right:vspacezmargin-top:z;margin-bottom:r   zwidth:r   zheight:bordercolorzborder-color:borderzborder-width:)trr   r   theadtbodytfoot)r   r   r   captioncolhrr   noshader,   r   zborder-bottom-width:0)iframeappletembedimginputobjectr  r   image)r   r   zvertical-align:middle)r  r  r  zpx;border-style:solidolstartzcounter-reset:list-item z;counter-increment:list-item -1lir   z;counter-increment:none)iterr:   r   lowerr   re   intmaxmin
ValueErrorr	   warningisdigit)treerD   r/   r   rH   rF   r   partpositionpropr   r   relative_plusrelative_minus
font_sizesr   
subelementr   r   s     `                rU   r6   r6   '  s    / 99;!++g.4WNNN#;;& #; #'%dV_
&.ABD{{4((,3H:Qw{{4?P>QQS*T C #?%'<W'VVV#; {{<(($9'++l:S9TTU"V!#8#RRR{{9%%$5gkk)6L5M"N!#8#RRR{{6""$*7;;v+>*?"@!#8#RRR # [[H$4W>QRRR[[E!KK,224E !#8BU#VVV@@!#8KPUwBW#XXX A[[F"{{7##!#8vgkk'&:%;<$> > >{{6""!#8|GKK,?+@A$C C C{{6""{{6*002 $ 4!%!5 N8>>+DBt9D
 %"#"$%!"J %	'	q#a,/D%'<:j.>-?!@(B B B3 #6 [[G#{{=))!#8w{{=/I.J"M$O O O{{=))%kk-8&&((4'K"),,.J!~~5)+@&+K= 9--8M :++6- 8..9]!=,> > > #1 {{8$$ X.>>##dNF!#8|F8>&J$L L L{{8$$ X.>>##dNF!#8{6(/&J$L L L{{7##$*7;;w+?*@"A;;w'//11#t+O!#8#RRR{{8$$$+GKK,A+B"C;;x(0022#t+O!#8#RRR{{<((+GKK,E+FaH  !#8#RRR{{9%%$5gkk)6L5M"N!#8#RRR{{=))$1'++m2L1M"N!#8#RRR{{8$$$1'++h2G1H"K!#8#RRR % [[IIKK,224E !#80$2 2 2@@!#8KPUwBW#XXX{{<(($9'++l:S9TTU"V!#8#RRR{{9%%$5gkk)6L5M"N!#8#RRR{{00;;x(((/H0E/F&GO{{8,4466'4/%'<W'VVV;;,.{{7++,27;;w3G2H*I";;w/7799+t3O)+@#,6 6 6	 , / 1 [[I%KK,224E !#8BU#VVV@@!#8KPUwBW#XXX A[[E!{{7##$*7;;w+?*@"A;;w'//11#t+O!#8#RRR	 $
 [[D D{{6""Gw{{623D G$gkk)&<=M19%'<=
"!=(? ? ?!#84$6 6 6!#8wtaxj3$5 5 5{{7##$*7;;w+?*@"A;;w'//11#t+O!#8#RRR{{7##!#8vgkk'&:%;<$> > > $ [[ G Gw&KK+113w>GR066800%'<!8(: : :;;x(($[[2F~~''$%'<<x~fX!N(P P P;;x(($[[2F~~''$%'<;vhofX!N(P P P ;;w''(.w{{7/C.D&EO{{7+3355'4/%'<W'VVV;;x(((/H0E/F&GO{{8,4466'4/%'<W'VVV;;"<<{{8,,)+@#+GKK,A+B C1 2,3 3 3 - == ?H [[D {{7##!#8.w{{7/C.D E5 5$6 6 6 $
 [[D {{7##!#8.w{{7/C.D E- -$. . .] j " GNN#?FFGh " GNN#?FGsp   Bt!t2H%ts	#C8tTt$s2>Ntt$%t	!s/*t.s//t2!ttttc                 h    U S:X  a  gU S:X  a  U(       d  gU S:X  a  U(       d  gU S:X  a  gU S:X  d   eg)	zReturn the precedence for a declaration.

Precedence values have no meaning unless compared to each other.

Acceptable values for ``origin`` are the strings ``'author'``, ``'user'``
and ``'user agent'``.


user agentr   userr   r+   r   r   r   r   )rQ   rL   s     rU   r9   r9   )  sE     	6	*	8	J	8	rX   c                    [        U5      (       d  gUR                  S:w  a  / n[        UR                  5       HC  u  pEUR                  S:X  a  UR                  [        XU5      5        M2  UR                  U5        ME     [        R                  R                  UR                  UR                  UR                  U5      n[        XU5      =(       d    U4$ [        U5      S   nUR                  S5      R                   R#                  SS5      nUn/ n	X   =(       d    U H&  n
[        X
U5      nU	R                  Uc  U
4OU5        M(     U	$ )z)Return token with resolved CSS variables.Nvarfunctionr   r   r   _)r   
lower_name	enumerate	argumentsr   extendresolve_varr   r   astFunctionBlocksource_linesource_columnr&   r   popr   replace)computedtokenrn   r!  iargumentargsvariable_namedefaultcomputed_valuer   resolveds               rU   r#  r#  @  s$   e$$5 	$U__5KA}}
*  X!NO  *	 6
 **u22EJJ	K8L9EeXE% #DHHQK%%--c37MGN)4W4x=(*:uhI 5 rX   c                   *    \ rS rSrSrS rS rS rSrg)AnonymousStyleiZ  z(Computed style used for anonymous boxes.c                     U R                  SSSSSS.5        Xl        X l        U(       a  UR                  U l        g 0 0 S.U l        g )Nr   )border_top_widthborder_bottom_widthborder_left_widthborder_right_widthoutline_widthratio_chratio_ex)updatern   	specifiedcache)rA   rn   s     rU   rV   AnonymousStyle.__init__\  sM     	 !#$!""#
 	 )%++DJ&(b9DJrX   c                 R    [        U R                  5      nUR                  U 5        U$ r|   )r4  rn   r>  rA   copys     rU   rD  AnonymousStyle.copyn  s#    d//0DrX   c                    U[         ;   d	  US S S:X  a  U R                  U   =o U'   U$ US:X  a  U R                  U   =o U'   U$ US S S:X  a&  [        U[        U   U R                  U   SS9=o U'   U$ [        U   =o U'   U$ )Nr   __page   text_decoration_F)rp   )r   rn   r   r   )rA   r   r   s      rU   __missing__AnonymousStyle.__missing__s  s    )s2Aw$ $ 1 1# 66EI  F] $ 1 1# 66EI  "X++ /^C($*;*;C*@5!R REI  !/s 33EIrX   )r@  rn   r?  N	r   r   r   r   r   rV   rD  rK  r   r   rX   rU   r4  r4  Z  s    2:$
rX   r4  c                   *    \ rS rSrSrS rS rS rSrg)ComputedStylei  z,Computed style used for non-anonymous boxes.c                     0 U l         Xl        X l        US L U l        X0l        X@l        XPl        X`l        U(       a  UR                  U l        g 0 0 S.U l        g )Nr;  )	r?  rn   rp   is_root_elementrH   r1   ro   r/   r@  )rA   rn   rp   rH   r1   ro   r/   s          rU   rV   ComputedStyle.__init__  sR    ( +t3&$ %++DJ&(b9DJrX   c                     [        U R                  U R                  U R                  U R                  U R
                  U R                  5      nUR                  U 5        U R                  R                  5       Ul        U$ r|   )
rO  rn   rp   rH   r1   ro   r/   r>  r?  rD  rC  s     rU   rD  ComputedStyle.copy  s]    t}}dllD<L<LOOT]], 	D,,.rX   c                    US:X  a  U S     OUS:X  a  U S     U R                   nXR                  ;   a#  U R                  U   S   n[        U[        5      nOU[        ;   d	  US S S:X  a  SnOSnS	nUS:X  a  Uc  SnU(       al  / nUR
                   H6  n[        XU5      nUc  UR                  U5        M%  UR                  U5        M8     UR                  S
S5      n UR                  XX5      nUS:X  a#  US S S:X  a  / O[        U   nU[        ;  a  X0U'   OUS:X  a  X!   =X'   nUS S S:X  a&  Ub#  [        XX!   XR                  ;   5      nX;   a  X	 O2US:X  a  US:X  a  Uc  SOUS   nX;   a  X	 OUS;   a  X0R                  U'   X;   a  X   $ U[         ;   a  [         U   " XU5      nX0U'   U$ ! [         a1    U[        ;   a  Ub
  X!   =X'   n N[        U   nU[        ;  a  X0U'    Nf = f)Nfloatr  r[   r   r   rG  inheritinitialFr  r   rI  rJ  rH  autor   )r  rV  r[   )rn   rp   
isinstancer   r   tokensr#  r   r"  r)  solver   r   r   r   r?  r   )	rA   r   rn   r   pendingsolved_tokensr+  r[  original_keys	            rU   rK  ComputedStyle.__missing__  s4   '>IM((--MM#&q)E 0G i3r7d?!!GI,"6EM$T,?>!((/!((0 & ;;sC0L
*M@ Ibq'T/B~c/BE..!S	i , 11DIs8))l.F $C0A3--CWXE{IF]u '.BL4HE{I44 #(NN3;9$$&s+Du=ES	c ! *)#(@(4(99DI*3/E"66$)S	*s   F/ /G*G*)G*)	r/   r@  rp   rH   rQ  rn   r1   ro   r?  NrM  r   rX   rU   rO  rO    s    6:XrX   rO  c                     U(       d  Ub  [        U5      $ [        X!XXE5      nU(       a  US   (       a  UR                  US   5        U$ )zCGet a dict of computed style mixed from parent and cascaded styles.anchor)r4  rO  collect_anchor)rH   rp   rn   r1   ro   r/   r0   rJ   s           rU   rl   rl     sI     0l++jLEE(O''h8LrX   c           	      ^   [        [        U R                  5      5      n/ nU(       d  UR                  SSSSS/ SQS.5        U$ U(       Ga  SSSSS/ SQS.nUS   R                  S:X  a(  UR                  S5      nUR                  US'   SUS   S'   [        U5      S:X  a  gU(       d  UR                  U5        U$ U(       GaI  UR                  S5      nUR                  S	:w  a  gUR                  S
:X  Ga  U(       d  gUS   R                  S:X  ak  UR                  S5      nUR                  nUS;   a*  US   (       a
  US   U:w  a  gXsS'   US   S==   S-  ss'   M  US;   a  SX7'   US   S==   S-  ss'   M   gUS   R                  S:X  GaE  UR                  S5      nUR                  S:w  a  g[        UR                  5       HM  u  pU
R                  S:X  d  M  U
R                  S:X  d  M)  UR                  SU	S-
   nUR                  U	S-   S n  O   UR                  nSn[        R                  R                  U5      nUc  gUbU  U Vs/ s H  nUR                  S;  d  M  UPM     nn[        U5      S:w  a  gUu  nUR                  S:w  a  gUR                  n/ UQUP7US'   US   S==   S-  ss'   U(       a  US   S==   S-  ss'   GM  gUR                  S:X  a  U(       a  [        US   5      (       a  OgU(       a  GMI  UR                  U5        U(       a  GM  U$ s  snf )a  Parse a page selector rule.

Return a list of page data if the rule is correctly parsed. Page data are a
dict containing:

- 'side' ('left', 'right' or None),
- 'blank' (True or None),
- 'first' (True or None),
- 'index' (page number or None),
- 'name' (page name string or None), and
- 'specificity' (list of numbers).

Return ``None` if something went wrong while parsing the rule.

Nr   )r"   r#   r$   r%   r&   rF   r   identr&   r   rF   literalr   )r`   ra   r"   r   )r#   r$   Tr  nthof)comment
whitespacer%   r   )listr   preluder   r   r(  r   rd   lower_valuer&   r   r!  r   rg  	parse_nthany)ruler[  	page_datatypesr+  rf  re  pseudo_classr  r,  r-  rg  group
nth_valuess                 rU   parse_page_selectorsrv    sI   $ #DLL12FI 4$4 	5 
4$4 !9>>W$JJqME!KKE&M&'E- #v;!U#jjmG||y(}}#!9>>W,"JJqME#(#4#4L#'88 =U6]l-J#'(4fm,Q/14/ %);;.2+m,Q/14/  <R I AY^^z1%zz!}H}}-#'01C1C'D#==G3$8N"*"4"4Va!e"<C$,$6$6q1uv$>E!	 (E '00 $!)!7!7!<J!)#(/4!L/4e$zz1JJ "u  !L u:?#'!& ::0#' %%9z%95%9E'N -(+q0+m,Q/14/#%c%"677E fH 	i &l 7!Ls   L*)L*c	                 &   U G	H  n	[        U	SS5      c  U	R                  S:X  a7  [        R                  " SU	R                  U	R
                  U	R                  5        U	R                  S:w  a  Mk  U	R                  S:w  a.  [        R                  " SXR                  U	R
                  5        M  U	R                  S:X  GaB   [        n
[        R                  " U	R                  5      n[        [        XU	R                  5      5      nU(       a  [        US	 S
9nU H  u  pU Vs/ s H  oS   PM	     nnU H  nUR!                  UU5        UR"                  [$        ;  d  M+  [        R&                  " U	R                  5      nUR"                  R)                  S5      (       a,  [*        n
[,        R.                  " SU SUR"                   35      e[,        R.                  " SU SUR"                   35      e   SnM     GM  SnGM  U	R                  S:X  Ga  U	R                  S:X  Ga  U(       aN  [        R                  " S[        R&                  " U	R                  5      U	R                  U	R
                  5        GMs  [3        U	R                  5      nSnU(       an  US   R                  S:X  a1  [5        UUS   R6                  SSU	R                  U	R
                  4S9nO*[9        US   U5      nU(       a  US   S   S:X  a  US   S   nUc  GM  [:        R<                  " USS 5      nUcN  [        R                  " S[        R&                  " U	R                  5      U	R                  U	R
                  5        GMo  [:        R>                  " UU 5      (       d  GM  Ub   [A        UX0XgXES9  GM  GM  U	R                  S:X  a  U	R                  S:X  a  [:        R<                  " U	R                  5      nUcN  [        R                  " S[        R&                  " U	R                  5      U	R                  U	R
                  5        GM5  Sn[:        R>                  " UU 5      (       d  GMV  [        RH                  " U	R                  5      n[K        XUX4XVUSS 9	  GM  U	R                  S:X  Gaz  U	R                  S!:X  Gai  [M        U	5      nUcN  [        R                  " S"[        R&                  " U	R                  5      U	R                  U	R
                  5        GM  SnU GH  nURO                  S#5      n[Q        S80 UD6n[        R                  " U	R                  5      n[        [        UU5      5      nU(       a  USU4/nURS                  U	UU45        U H  nUR                  S:w  d  UR                  c  M"  [        [        U[        R                  " UR                  5      5      5      nU(       d  M^  US$UR                   3U4/nURS                  UUU45        M     GM     GM  U	R                  S:X  a  U	R                  S%:X  a  Sn[        R                  " U	R                  5      n[U        [W        S%UU5      5      n S& HJ  n!U!U ;  d  M  [        R                  " S'U!RY                  S(S5      U	R                  U	R
                  5          GM     Ub  UR[                  U U5        GM  GM  U	R                  S:X  Ga  U	R                  S):X  Ga  [\        R^                  " U	R                  U5      n"U"cN  [        R                  " S*[        R&                  " U	R                  5      U	R                  U	R
                  5        GMi  Sn[        R                  " U	R                  5      nSSSSSSSSSS+.	n#[W        S)UU5      n U  H  u  n$n%U%U#U$'   M     U#S,   c  S-n&OU#S,   n&U&S   Gc  U&S   S.;   aP  [a        U#S/   =(       d    / 5      S:  a4  [        R                  " S0U"U	R                  U	R
                  U&S   5        GM"  OU&S   S1;   aP  [a        U#S/   =(       d    / 5      S2:  a4  [        R                  " S3U"U	R                  U	R
                  U&S   5        GM{  OTU&S   S4:X  aK  [a        U#S5   =(       d    / 5      S2:  a0  [        R                  " S6U"U	R                  U	R
                  5        GM  U#UU"'   GM  [        R                  " S7XR                  U	R
                  5        G	M     gs  snf ! [,        R.                   a$  n[        R0                  " W
SU5         SnAG	MB  SnAff = f! [B         a9  n[        RD                  " SUU5        [        RF                  " SUS9   SnAG	M  SnAff = f)9zDDo what can be done early on stylesheet, before being in a document.r   Nr   zParse error at %d:%d: %szat-ruleimportzUnknown empty rule %s at %d:%dzqualified-rulec                     U S   $ )Nr   r   )xs    rU   <lambda>'preprocess_stylesheet.<locals>.<lambda>  s    adrX   )r   r   r   'z$', ignored prefixed pseudo-element: z', unknown pseudo-element: Tz#Invalid or unsupported selector, %szP@import rule %r not at the beginning of the the whole rule was ignored at %d:%d.r   r   Fz@import at %s:%s)allow_relativecontextcontext_argsexternalzBInvalid media type %r the whole @import rule was ignored at %d:%d.)r   r   r   r   r   r=   rs   z$Failed to load stylesheet at %s : %sr   r   r   zAInvalid media type %r the whole @media rule was ignored at %d:%d.)ignore_importsrH  zIUnsupported @page selector %r, the whole @page rule was ignored at %d:%d.rF   @z	font-face)srcfont_familyz3Missing %s descriptor in '@font-face' rule at %d:%dr  zcounter-stylezRInvalid counter style name %r, the whole @counter-style rule was ignored at %d:%d.)	systemnegativeprefixsuffixrangepadfallbacksymbolsadditive_symbolsr  )NsymbolicN)cyclicfixedr  r  zHIn counter style %r at %d:%d, counter style %r needs at least one symbol)
alphabeticnumericr   zIIn counter style %r at %d:%d, counter style %r needs at least two symbolsadditiver  zZIn counter style %r at %d:%d, counter style "additive" needs at least two additive symbolszUnknown rule %s at %d:%dr   )1getattrr   r	   r  r&  r'  messagelower_at_keywordr   r   r   r   rk  r   rl  r   add_selectorpseudo_elementPSEUDO_ELEMENTS	serializere   r   
cssselect2SelectorErrorlogr   r   r   r   r   parse_media_queryr   r   r   r   r   parse_rule_listpreprocess_stylesheetrv  r(  r!   r   dictr   r)  add_font_facer   parse_counter_style_namerd   )'r   r/   stylesheet_rulesr   r=   rs   r   r   r  rp  logger_levelcontentsselectors_declarations	selectorsrI   declarationrS   rl  excr[  r   	url_tupler   r   content_rulesdatarq  rF   rx   r   rw   margin_rulerule_descriptorsr   r&   counterdescriptor_namedescriptor_valuer  s'                                          rU   r  r  x  s    !4D)1yyG#.$$d&8&8$,,H yyI%$$04**D,>,>@ 99(( &#99$,,G)-+HM*O& *-4.N.D*3I/	>J(L>J{Nl % (L(1H#00<H'66oM*2*<*<T\\*J#+#:#:#E#Ec#J#J38L*4*B*B*+G9 5L+3+B+B*C)E+F %F
 +5*B*B*+G9 5C+3+B+B*C)E+F %F )2 *.% 4J( &*N
 YY)#(=(=(I;&&t||4$$d&8&8	:
 &t||4FC!9>>X-" &)//% 2&*&6&68J8J%KMC
 !(q	8 <I Yq\!_
%B'l1o{!33F12J?E}C&&t||4$$d&8&8	:
  55e=NOOX[$/ '@  YY)#(=(=(H!33DLLAE}B&&t||4$$d&8&8	:
 !N 55e=NOO$44T\\BM!!]KtM YY)#(=(=(G'-D|A&&t||4$$d&8&8	:
 !N!	'mmM:%5%B	%B""88F#$;Hg$NO&149K%L$MM%%t]L&IJ#*K"''948K8K8S #'(?  66{7J7JK)M $NL $|'1[-I-I,J)K.*0 )1 #));|*TU $+ ", YY)#(=(=(L!N44T\\BG#&{HgF H-..NNMC-t/?/?ASASU  . *--.>L + YY)#(=(=(P44T\\=QD|@&&t||4d6F6F&&	(
 !N44T\\BG  $(
G  67 4 6F1!1+;( 6F x (1 *ay !9 ??79-34q8I $"2"2D4F4Fq	S ! 9 AY";;79-34q8J $"2"2D4F4Fq	S ! 9 AY*,7#56<"=AB !$"2"2D4F4F	H
 !")M$ NN*&&(:(:<w !2(L( ++ 

<)NPSTV ( XLL!GiXLL!BYWWXsP   >A"d d.+dBd:dede
&ee

f-ffc           	         / nUc  [         R                  " 5       nU R                  5        H   n	U	R                  5        H	  u  pXU
'   M     M"     U R	                  U5      =(       d    /  H  nUR                  USS45        M     U(       a4  U R                  5       =(       d    /  H  nUR                  USS45        M     [        U R                  U R                  U R                  U R                  X4U5       H  nUR                  USS45        M     U=(       d    /  H  nUR                  USS45        M     [        XX&5      $ )a  Compute all the computed styles of all elements in ``html`` document.

Do everything from finding author stylesheets to parsing and applying them.

Return a ``style_for`` function that takes an element and an optional
pseudo-element type, and return a style dict object.

Nr  r+   r   r  )r   CounterStyle_ua_counter_styleitems_ua_stylesheetsr   _ph_stylesheetsr   r;   r   r   r/   r(   )rB   user_stylesheetsrD   r   r   rs   r0   formsrC   rJ   r   r   rP   s                rU   get_all_computed_stylesr  \  s,    F --/'')++-JC!&# ( * &&u-33ulD12 4**,22EMM5(I67 3!  $//43C3CMM;zC 	uh-.C #(b(ufd+, ) D"6IIrX   )FNr   )F)NFNNNNF)9r   collectionsr   	itertoolsr   loggingr   r   r  r   tinycss2.asttinycss2.nthr   r   loggerr	   r
   urlsr   r   r   r   r   computed_valuesr   
propertiesr   r   r   r   
validationr   validation.descriptorsr   utilsr   r   r   r   r   r   r  r!   r(   r   r   r   r6   r9   r#  r  r4  rO  rl   rv  r  r  r   rX   rU   <module>r     s    #  "      , @ @ % / T T / : 
( CE j jZ&-X`.D.4$T $NqD qh IM59,0rn */a<H OTMQ9>JrX   