
    sh-                         S r SSKJr  SSKr SSKJr  SSKJ	r	  SSK
r
SSKJr  SSKrSSKJr  S rS	 rS
 rS rS rSrSrS rSS jr\S:X  a  \" 5         gg! \ a	    SSKJr   NRf = f)z`
Generate documentation for all registered implementation for lowering
using reStructured text.
    )check_outputN)StringIO)defaultdict)partial)
cpu_targetc                  \    [        / SQ5      n U R                  S5      R                  S5      $ )N)gitlogz--pretty=format:'%H'z-n1ascii'")r   decodestrip)outs    x/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/scripts/generate_lower_listing.pygit_hashr      s'    
H
IC::g$$U++    c                 0    [        U SU R                  5      $ )N__qualname__)getattr__name__)fns    r   get_func_namer      s    2~r{{33r   c           	      N   [        [        5      n[        R                  R	                  [        R                  R	                  [
        R                  5      5      nU R                  R                  5        H  u  p4UR                   H  u  pV0 nX   R                  U5        X7S'   XWS'   [        R                  " U5      u  p[        R                  " U5      n
[        U5      [        R                  R                  XS9X[!        U5      -   S-
  4UR"                  S.US'   M     M     U$ )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((*ICDKt$JK ' 6 6t <D((.D%d+GGOODOA%SY'>'BC!\\	DL ' + Nr   c                     [        [        U S9$ )Nfile)r   print)fobjs    r   bind_file_to_printr@   4   s    5t$$r   c                 p    S n[        [        X5      5      nSR                  SR                  U5      5      $ )Nc                 p     U R                   $ ! [         a    [        U 5      R                  S5      s $ f = f)Nr   )r   AttributeErrorreprr   )cs    r   fmtformat_signature.<locals>.fmt9   s3    	(:: 	(7==''	(s    $55z`({0})`z, )tuplemapformatjoin)r   rF   r   s      r   format_signaturerL   8   s0    (
 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           	         [        5       n [        U5      nSnU" U5        U" S[        U5      -  5        U" [        5        [	        5       nS n[        [        XP5      S S9 GH  u  pgX   nSR                  U5      n	U" U	5        U" S[        U	5      -  5        U" 5         [        S U5      n
[        [        X5      S	 S9nS
/nS/nU H}  u  pUS   nUS   nUS   nUS   nSR                  " U/UQ76 n[        R                  UUUS   US   S9nSR                  UUU5      nUR                  U5        UR                  U5        M     [        [        [        U5      5      n[        [        [        U5      5      nSnUS-  U-   nUS-  U-   nSR                  UU5      nU" UR                  SU-  SU-  5      5        U" UR                  US   US   5      5        U" UR                  SU-  SU-  5      5        [        USS  USS  5       H  u  nnU" UR                  UU5      5        M      U" UR                  SU-  SU-  5      5        U" 5         GM     UR                  5       UR                  5         $ ! UR                  5         f = f)NzLowering Listing=c                      SR                  U R                  [        U 5      5      nX4$ ! [         a    [	        U 5      n X4$ f = f)Nz{0}.{1})rJ   
__module__r   rC   rD   )r   fnames     r   format_fname+format_function_infos.<locals>.format_fname[   sN    !!((b8IJ 9 " !R9!s   %* AAc                     U S   $ )Nr    xs    r   <lambda>'format_function_infos.<locals>.<lambda>b   s    !A$r   )keyz``{0}``-c                     [        U S   5      $ )Nr   )rL   rV   s    r   rX   rY   j   s    *1U84r   c                     U S   $ )Nr   rU   rV   s    r   rX   rY   l   s    1Q4r   	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   sortedrI   rJ   zip
github_urlr,   maxgetvalueclose)r4   bufr>   
title_liner`   rR   r   rQ   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_infosr}   N   s   
*CB"3''
jcC
O#$k	  L :OIB{H#**51K+#K(()G 4h@N$S%B)79O *]N$~H /F|
+WV,33HEuE!((X388eAh ) P,33E64H%%f-$ !0  !$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Sk((c23 B+$$S=%8#:MNOGY P\ ||~				s   II8 8J
c                     [         R                  nUR                  5         [        U5      n[	        U5      nU c  [        U5        g[        U S5       n[        X4S9  SSS5        g! , (       d  f       g= f)z?
Generate lowering listing to ``path`` or (if None) to stdout.
Nwr<   )r   target_contextrefreshr:   r}   r>   open)r%   cpu_backendr4   r   r?   s        r   gen_lower_listingr      sX     ++K";/G

(C|c
$_#! __s   
A%%
A3__main__)N)r2   
subprocessr   os.pathr$   r   ImportErroriocollectionsr   r-   	functoolsr   r'   numba.core.registryr   r   r   r:   r@   rL   rg   rd   r}   r   r   rU   r   r   <module>r      s    $ ! $    *,
4*%,9
DR"" z y  s   A A'&A'