
    wg-                         d Z ddlmZ ddlZ	 ddlmZ ddlm	Z	 ddl
Z
ddlmZ ddlZddlmZ d Zd	 Zd
 Zd Zd ZdZdZd ZddZedk(  r e        yy# e$ r	 ddlmZ Y Ow xY w)z`
Generate documentation for all registered implementation for lowering
using reStructured text.
    )check_outputN)StringIO)defaultdict)partial)
cpu_targetc                  \    t        g d      } | j                  d      j                  d      S )N)gitlogz--pretty=format:'%H'z-n1ascii'")r   decodestrip)outs    i/home/mcse/projects/flask/flask-venv/lib/python3.12/site-packages/numba/scripts/generate_lower_listing.pygit_hashr      s'    
H
IC::g$$U++    c                 0    t        | d| j                        S )N__qualname__)getattr__name__)fns    r   get_func_namer      s    2~r{{33r   c           	      X   t        t              }t        j                  j	                  t        j                  j	                  t
        j                              }| j                  j                         D ]  \  }}|j                  D ]  \  }}i }||   j                  |       ||d<   ||d<   t        j                  |      \  }}	t        j                  |      }
t        |      t        j                  j                  |
|      |	|	t!        |      z   dz
  f|j"                  d|d<     |S )Nr   sig)start   )namefilenamelines	docstringimpl)r   listospathdirnamenumba__file___defnsitemsversionsappendinspectgetsourcelinesgetsourcefiler   relpathlen__doc__)backendfninfosbasepathr   oselr   r"   infocodefirstlinenor%   s              r   gather_function_infor:      s    $Gwwrwwu~~>?HNN((* D 	ICDBKt$DJDK ' 6 6t <D+((.D%d+GGOODOA%{SY'>'BC!\\	DL	 Nr   c                 $    t        t        |       S )Nfile)r   print)fobjs    r   bind_file_to_printr@   4   s    5t$$r   c                 r    d }t        t        ||             }dj                  dj                  |            S )Nc                 n    	 | j                   S # t        $ r t        |       j                  d      cY S w xY w)Nr   )r   AttributeErrorreprr   )cs    r   fmtzformat_signature.<locals>.fmt9   s3    	(:: 	(7==''	(s    #44z`({0})`z, )tuplemapformatjoin)r   rF   r   s      r   format_signaturerK   8   s2    (
 C
CDIIcN++r   zLhttps://github.com/numba/numba/blob/{commit}/{path}#L{firstline}-L{lastline}a8  
This lists all lowering definition registered to the CPU target.
Each subsection corresponds to a Python function that is supported by numba
nopython mode. These functions have one or more lower implementation with
different signatures. The compiler chooses the most specific implementation
from all overloads.
c           	      *   t               }	 t        |      }d} ||        |dt        |      z          |t               t	               }d }t        t        ||       d       D ]  \  }}| |   }dj                  |      }	 ||	        |dt        |	      z          |        t        d |      }
t        t        |
|      d	       }d
g}dg}|D ]  \  }}|d   }|d   }|d   }|d   } dj                  |g| }t        j                  |||d   |d         }dj                  |||      }|j                  |       |j                  |        t        t        t        |            }t        t        t        |            }d}|dz  |z   }|dz  |z   }dj                  ||      } ||j                  d|z  d|z                ||j                  |d   |d                 ||j                  d|z  d|z               t        |dd  |dd        D ]  \  }} ||j                  ||               ||j                  d|z  d|z                |         |j                         |j                          S # |j                          w xY w)NzLowering Listing=c                     	 dj                  | j                  t        |             }| |fS # t        $ r t	        |       }Y | |fS w xY w)Nz{0}.{1})rI   
__module__r   rC   rD   )r   fnames     r   format_fnamez+format_function_infos.<locals>.format_fname[   sR    !!((b8IJ u9 " !Ru9!s   %+ AAc                     | d   S )Nr    xs    r   <lambda>z'format_function_infos.<locals>.<lambda>b   s
    !A$ r   )keyz``{0}``-c                     t        | d         S )Nr   )rK   rT   s    r   rV   z'format_function_infos.<locals>.<lambda>j   s    *1U84 r   c                     | d   S )Nr   rS   rT   s    r   rV   z'format_function_infos.<locals>.<lambda>l   s
    1Q4 r   	Signature
Definitionr"   r   r    r   z{0} lines {1}-{2}r   r   )commitr%   	firstlinelastlinez``{0}`` `{1} <{2}>`_   z{{0:^{0}}}  {{1:^{1}}})r   r@   r1   descriptionr   sortedrH   rI   zip
github_urlr,   maxgetvalueclose)r4   bufr>   
title_liner]   rQ   r   rP   impinfosheader_lineformatted_sigssorted_impinfoscol_signaturescol_urlsfmtsigr7   r"   r   r    sourcelinkurlmax_width_col_sigmax_width_col_urlpaddingwidth_col_sigwidth_col_urlline_formatr   s                                r   format_function_infosrz   N   s   
*CB"3''
jcC
O#$k	  L' :O ,	IBr{H#**51K+#K(()G 4h@N$S%B)79O *]N$~H / %F|
+WV3,33HEuE!((X388eAh ) P,33E64H%%f-$%  !$C^$< = #CX$6 7G#aK*;;M#aK*;;M299-:GIK+$$S=%8#:MNO+$$^A%6DE+$$S=%8#:MNOqr 2HQRLA 4Sk((c234+$$S=%8#:MNOGY,	\ ||~				s   I#J   Jc                     t         j                  }|j                          t        |      }t	        |      }| t        |       yt        | d      5 }t        ||       ddd       y# 1 sw Y   yxY w)zG
    Generate lowering listing to ``path`` or (if None) to stdout.
    Nwr<   )r   target_contextrefreshr:   rz   r>   open)r%   cpu_backendr4   r   r?   s        r   gen_lower_listingr      se     ++K";/G

(C|c
$_ 	"#D!	" 	" 	"s   A((A1__main__)N)r2   
subprocessr   os.pathr$   r   ImportErroriocollectionsr   r-   	functoolsr   r'   numba.core.registryr   r   r   r:   r@   rK   rd   ra   rz   r   r   rS   r   r   <module>r      s    $ ! $    *,
4*%,9
DR"" z y  s   A A$#A$