+
    VBi4                     r   ^ RI t ^ RIt ^ RIt^ RIt^ RIHt ^ RIHt ^ RIHt ^ RI	H
t ^ RIHt ^RIHt ^RIHt ^R	IHt  ! R
 R]4      t]P(                  ! RP+                  R4      4      P,                  t]P(                  ! RP+                  R4      ]P0                  4      P,                  t ! R R4      tR# )    N)datetime)partial)defaultdict)escape)StringIO)Version)CCodeWriter)Utilsc                      a  ] tR t^t o RtRR ltR tR tRR ltR t	R t
]P                  ! R	4      tR
P                  RP                  RR4      4      tRR ltRR ltR tRR ltR tR tRR ltRtV tR# )AnnotationCCodeWriterzComplete cythonized codeNc                   \         P                  ! WW#R 7       W@n        Vf   \        4       V n        RV n        \        \        \        \        4      4      V n	        \        \        \        \        4      4      V n        \        \        \        \        4      4      V n        R# VP                  V n        VP                  V n	        VP                  V n        VP                  V n        VP
                  V n        R# ))copy_formattingN)r	   __init__show_entire_c_coder   annotation_bufferlast_annotated_posr   r   listannotationsstrcodesetscopes)selfcreate_frombufferr   r   source_descs   &&&&&&=/usr/lib/python3.14/site-packages/Cython/Compiler/Annotate.pyr   AnnotationCCodeWriter.__init__   s    TX"4%-ZD"&*D#*7;+EFD#GK$=>DI%gk3&?@DK &1%B%BD"*66D#((DI%,,DK&1&D&DD#    c                    \        WV4      # N)r   )r   r   r   r   s   &&&&r   
create_new AnnotationCCodeWriter.create_new,   s    $[/JJr   c                r    V P                   P                  V4       V P                  P                  V4       R # r!   )r   writer   )r   ss   &&r   _write_to_buffer&AnnotationCCodeWriter._write_to_buffer/   s(    !$$Q'r   c                @   Ve   \         P                  ! WV4       V P                  '       dr   V P                  P                  '       dV   V P                  V^ ,          P
                  ,          V^,          ,          P                  V P                  P                  4       V P                  '       dY   V P                  w  r4pV P                  VP
                  ,          pWd;;,          V P                  P                  4       ,          uu&   \        4       V n	        Wn        R # r!   )r	   mark_pos	funcstatescoper   filenameaddr   r   r   getvaluer   )r   postracer   line_pos_codes   &&&    r   r*   AnnotationCCodeWriter.mark_pos3   s    ?  E2~~~$.."6"6"6CFOO,SV4889M9MN"""#'#:#: Kqyy!5!56HNd44==??N!)"%r   c                    V P                   V^ ,          P                  ,          V^,          ,          P                  V^,          V34       R# )r   N)r   r-   append)r   r0   items   &&&r   annotateAnnotationCCodeWriter.annotate@   s4    Q)#a&188#a&$Hr   c                P   V P                   .p\        ^4       F=  p\        RRVR,          ,           ,          4      pVP                  RVR RVR R24       K?  	   ^ R	IHp VP                  V! 4       P                  R
4      4       RP                  V4      #   \         d     Li ; i)z2css template will later allow to choose a colormapg     o@g      ?g      $@z.cython.score-dz {background-color: #FFFF02xz;}HtmlFormatterz.cython
)	_css_templaterangeintr7   pygments.formattersr?   get_style_defsImportErrorjoin)r   cssicolor_shader?   s   &    r   _cssAnnotationCCodeWriter._cssC   s    !!"sAeaf56KJJ!u,F{SVFWWZ[\ 	B9 JJ}55i@Ayy~	  		s   B B%$B%a  
        body.cython { font-family: courier; font-size: 12; }

        .cython.tag  {  }
        .cython.line { color: #000000; margin: 0em }
        .cython.code { font-size: 9; color: #444444; display: none; margin: 0px 0px 0px 8px; border-left: 8px none; }

        .cython.line .run { background-color: #B0FFB0; }
        .cython.line .mis { background-color: #FFB0B0; }
        .cython.code.run  { border-left: 8px solid #B0FFB0; }
        .cython.code.mis  { border-left: 8px solid #FFB0B0; }

        .cython.code .py_c_api  { color: red; }
        .cython.code .py_macro_api  { color: #FF7000; }
        .cython.code .pyx_c_api  { color: #FF3000; }
        .cython.code .pyx_macro_api  { color: #FF7000; }
        .cython.code .refnanny  { color: #FFA000; }
        .cython.code .trace  { color: #FFA000; }
        .cython.code .error_goto  { color: #FFA000; }

        .cython.code .coerce  { color: #008000; border: 1px dotted #008000 }
        .cython.code .py_attr { color: #FF0000; font-weight: bold; }
        .cython.code .c_attr  { color: #0000FF; }
        .cython.code .py_call { color: #FF0000; font-weight: bold; }
        .cython.code .c_call  { color: #0000FF; }
    z onclick="{}"u   (function(f, s, c) {    c = f.nodeValue == '+';    s.display = c ? 'block' : 'none';    f.nodeValue = c ? '−' : '+'})(this.firstChild, this.nextElementSibling.style)  c                <   \         P                  ! V4      ;_uu_ 4       pVP                  4       pR R R 4       V P                  P	                  V/ 4      p\         P
                  ! \        P                  P                  V4      4      p\        P                  P                  V4      ^ ,          R,           p\        VRRR7      ;_uu_ 4       p	V	P                  V P                  XWgW4      4       R R R 4       R #   + '       g   i     L; i  + '       g   i     R # ; i)Nz.htmlwzUTF-8)encoding)r
   open_source_filereadr   getdecode_filenameospathbasenamesplitextopenr%   _save_annotation)
r   source_filenametarget_filenamecoverage_xmlfr   generated_codec_filehtml_filename
out_buffers
   &&&&      r   save_annotation%AnnotationCCodeWriter.save_annotationw   s    ##O44668D 5;&&rww'7'7'HI((9!<wF-w77:T224Q`op 87 54 877s   C7
#D
7D	
D	c                   R pV'       d7   RP                  \        P                  ! \        V4      R,          4      R7      p\        P
                  ! R4      P                  V P                  4       \        P                  V'       d    \        P                  P                  V4      MR VR7      .pV'       d   VP                  RV: RV: R24       V# )	rN   z$ with coverage data from {timestamp}i  )	timestampa              <!DOCTYPE html>
            <!-- Generated by Cython {watermark} -->
            <html>
            <head>
                <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
                <title>Cython: {filename}</title>
                <style type="text/css">
                {css}
                </style>
            </head>
            <body class="cython">
            <p><span style="border-bottom: solid 1px grey;">Generated by Cython {watermark}</span>{more_info}</p>
            <p>
                <span style="background-color: #FFFF00">Yellow lines</span> hint at Python interaction.<br />
                Click on a line that starts with a "<code>+</code>" to see the C code that Cython generated for it.
            </p>
            )rH   	watermarkr-   	more_infoz<p>Raw output: <a href="">z	</a></p>
)formatr   fromtimestamprC   textwrapdedentrK   r   rh   rV   rW   rX   r7   )r   ra   r\   coverage_timestampcoverage_infooutlists   &&&&  r   _save_annotation_header-AnnotationCCodeWriter._save_annotation_header   s    BII"005G1HD1PQ J SM OO  " DIIK73D3DFU!1!1/!B[]"/  1%
, NNQWXYr   c                    R# )</body></html>
)ru    r   s   &r   _save_annotation_footer-AnnotationCCodeWriter._save_annotation_footer   s    $$r   c           	        Ve;   V'       d3   VP                  RR4      P                  4       pV P                  WT4      pMR;rg\        V P                  V,          4      p\        V P
                  V,          4      p	. p
V
P                  V P                  W4V4      4       V
P                  V P                  WWV4      4       V
P                  V P                  4       4       RP                  V
4      # )z
lines : original cython source code split by lines
generated_code : generated c code keyed by line number in original file
target filename : name of the file in which to store the generated html
c_file : filename in which the c_code has been written
Nrg   rN   )rT   strip_get_line_coveragedictr   r   extendrr   _save_annotation_bodyrx   rG   )r   r   r`   ra   r\   r^   ro   covered_linesannotation_itemsr   rq   s   &&&&&&     r   r[   &AnnotationCCodeWriter._save_annotation   s     #!-!1!1+r!B!H!H!J 33LRM155 0 0 ABdkk/23t33FM_`at11$HXbopqt3356wwwr   c           	        R pVP                  R4       F  pVP                  R4      '       g   K  VP                  R4      V8X  g4   \        P                  P	                  VP                  R4      4      V8X  d   Tp M.VP                  VP                  R4      4      '       g   K  TpK  	  Vf   R # VP                  R4       Uu/ uF6  p\        VP                  R4      4      \        VP                  R4      4      bK8  	  up# u upi )Nz.//classr-   z
lines/linenumberhits)iterfindrT   rV   rW   abspathendswithrC   )r   r^   r\   coverage_dataentryr2   s   &&&   r   r|   (AnnotationCCodeWriter._get_line_coverage   s    !**:6E99Z((		*%8GGOOEIIj$9:oM % ))%))J*?@@ % 7   &..|<
< "#S&)9%::<
 	
 
s   <Dc                     ^ RI Hp ^ RIHpHp ^ RIHp TR8X  d   T! RRR7      pMTR8X  d   T! RRR7      pM\        T4      # T! YT! RR	7      4      pT#   \         d    \        T4      u # i ; i)
r   )	highlight)CythonLexerCppLexerr>   cythonF)stripnlstripallc/cppT)nowrap)	pygmentsr   pygments.lexersr   r   rD   r?   rF   html_escape)	r   r   languager   r   r   r?   lexer	html_codes	   &&&      r   _htmlify_code#AnnotationCCodeWriter._htmlify_code   s    	%*=9
 x>E UU;E t$$&(	   	%t$$	%s   A A0/A0c                  a R .pRpRP                  4        Uu/ uF  q^ bK  	  upP                  p	V P                  R4       V3R lp
V P                  VR4      P	                  4       p\        \        \        V4      4      4      pV'       g   Rp\        V^4       EF9  w  r W-,          p\        W4      pVP                  V4      '       d   V\        V4      R p\        V4      pV	! 4       o\        W4      p^SR,          ,          ^SR,          ,          ,           SR	,          ,           SR
,          ,           pV'       d   V P                  pRpMRpRpRpVe   W9   d   W],          pVe   V'       d   RMRpVP                  RV RV RV RV RVRV R2 RVP                  4        R24       V'       g   EK  VP                  RV RV RV R24       EK<  	  VP                  R4       V P                   '       d^   V P                  V P"                  P%                  4       R4      pVP                  RV P                   R\&        P(                   R V R!24       V# u upi   \         d    Rp ELi ; i)"z<div class="cython">u
   /* … */
zGrefnanny trace py_macro_api py_c_api pyx_macro_api pyx_c_api error_gotoNc                 v   < V P                   pSV;;,          ^,          uu&   RV RV P                  V4       R2# )   z<span class=''></span>)	lastgroupgroup)match
group_namecallss   & r   r9   =AnnotationCCodeWriter._save_annotation_body.<locals>.annotate   s;    J*"":,bZ1H0IQQr   r   rN   py_c_api	pyx_c_apipy_macro_apipyx_macro_api+z&#xA0;runmisz<pre class="cython line score-">z<span class="rj   0r<   z	</span>: z</pre>
z<pre class='cython code score-rM   r   z</pre>z</div>r   z/<p><div class="cython"><pre class='cython line'z>+ z </pre>
<pre class='cython code'>z</pre></div></p>)splitcopyr*   r   
splitlineslenr   	enumerate_replace_pos_comment
startswithr   KeyError_parse_code_onclick_attrr7   rstripr   r   r/   r   COMPLETE_CODE_TITLE)r   cython_coder`   r   r   r   rq   pos_comment_markernamenew_calls_mapr9   lineslineno_widthkr2   c_codescoreonclickexpandsymbolcoveredr   complete_code_as_htmlr   s   &&&&&&                @r   r   +AnnotationCCodeWriter._save_annotation_body   s   )*> V[[]
] !G]
 $ 	
 	d	R
 "";9DDF3s5z?+ M *GA-'* ..@I$$%788#C(:$;$<=F$V,!OE 2Fz**Q{1C-CC>*+-2?-CDE ,,"'G(Q-?$'#'+eGNN0q	  .gYb1\N!:K8LIVZVaVaVcUddln v!?wayPRSYRZZ`abI +J 	x  """$($6$6t{{7K7K7Mw$W!NN++/+=+=*>cBWBkBkAl m,,A+B C E
(  s   I"I  I10I1)r   r   r   r   r   r   )NNTFN)Tr!   )NNN)__name__
__module____qualname____firstlineno__r   r   r"   r'   r*   r9   rK   rm   rn   rA   rk   replacer   rd   rr   rx   r[   r|   r   r   __static_attributes____classdictcell____classdict__s   @r   r   r      s      5E(K(&I OO % 	M8 $**	=
 '#r
Mq@% *
$*E Er   r   sm  (?P<refnanny>__Pyx_X?(?:GOT|GIVE)REF|__Pyx_RefNanny[A-Za-z]+)|(?P<trace>__Pyx_Trace[A-Za-z]+)|(?:(?P<pyx_macro_api>__Pyx_[A-Z][A-Z_]+)|(?P<pyx_c_api>(?:__Pyx_[A-Z][a-z_][A-Za-z_]*)|__pyx_convert_[A-Za-z_]*)|(?P<py_macro_api>Py[A-Z][a-z]+_[A-Z][A-Z_]+)|(?P<py_c_api>Py[A-Z][a-z]+_[A-Z][a-z][A-Za-z_]*))(?=\()|(?P<error_goto>(?:(?<=;) *if [^;]* +)?__PYX_ERR\([^)]+\))asciis)   ^\s*/\*(?:(?:[^*]|\*[^/])*\n)+\s*\*/\s*\nc                   6   a  ] tR tRt o RR ltR tR tRtV tR# )AnnotationItemi<  c                6    Wn         W n        W0n        W@n        R # r!   )styletexttagsize)r   r   r   r   r   s   &&&&&r   r   AnnotationItem.__init__>  s    
		r   c                Z    R V P                   : RV P                  : RV P                  : 2# )z<span class='cython tag z	' title='r   )r   r   r   rw   s   &r   startAnnotationItem.startD  s    >Bjj$))UYU]U]^^r   c                    V P                   R 3# )r   )r   rw   s   &r   endAnnotationItem.endG  s    yy)##r   )r   r   r   r   N)rN   r   )	r   r   r   r   r   r   r   r   r   r   s   @r   r   r   <  s     _$ $r   r   )rV   os.pathrerm   r   	functoolsr   collectionsr   xml.sax.saxutilsr   r   ior   rN   r   Coder	   r
   r   compiledecodesubr   Mr   r   rv   r   r   <module>r      s    
  	    # 2    RK Rj jjB 	&/
 3  zz188ADD #	 $ $r   