
    shg2                     N   S 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	  SSK
Jr  SSKJr  S r\" 5       rSrSS	 jrSS
 jr " S S\5      rS rS r\\4r\4S jr " S S\5      r " S S\5      r " S S\5      rSS jrS rSR=                  5       rS r \!S:X  a  \ " 5         gg)z
This file contains `__main__` so that it can be run as a commandline tool.

This file contains functions to inspect Numba's support for a given Python
module or a Python package.
    N)errors)get_versions)
cpu_target)captured_stdoutc                  v    [        5       S   n U (       d$  [        R                  " S[        R                  S9  gU $ )Nzfull-revisionidz>Cannot find git commit hash. Source links could be inaccurate.)categorymain)r   warningswarnr   NumbaWarning)fulls    m/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/misc/help/inspector.py_get_commitr      s4    >+,DL((	
 K    zLhttps://github.com/numba/numba/blob/{commit}/{path}#L{firstline}-L{lastline}c                    U=(       d    [         nUR                  nUR                  5         UR                  R                  5         0 n0 n UR	                  U 5      nUR                  U5      nUR                   H  n UR                  5       XG'   M     XSS'   XcS'   XCS'   U$ ! [         a    SXG'    M9  f = f! [         a    SnSn N3f = f)ag  Return information about the support of a function.

Returns
-------
info : dict
    Defined keys:
    - "numba_type": str or None
        The numba type object of the function if supported.
    - "explained": str
        A textual description of the support.
    - "source_infos": dict
        A dictionary containing the source location of each definition.
Nznot supported
numba_type	explainedsource_infos)
r   typing_contextrefreshtarget_contextresolve_value_typeexplain_function_type	templatesget_source_infoAttributeError
ValueError)functiontargettyctinfor   nbtyr   temps           r   inspect_functionr$   "   s     !zF  DLLN
!!#DL*&&x0 ..t4	NND*%)%9%9%;" # !'K " *%)"*  $#	$s$   B6 =B!!B32B36CCc              #     #    Uc  0 OUn[        U 5       H  nUR                  S5      (       a  M  [        X5      n[        R                  [        R
                  4n[        XE5      (       d  MX  [        XUS9nXB;   a  X$   US'   OSR                  U R                  US9X$'   UR                  [        XAS95        Uv   M     g7f)zoInspect a module object and yielding results from `inspect_function()`
for each function object in the module.
N_)modulenameobjaliasz{module}.{name})r'   r(   )r   )dir
startswithgetattrpytypesFunctionTypeBuiltinFunctionType
isinstancedictformat__name__updater$   )r'   r   r*   r(   r)   supported_typesr!   s          r   inspect_moduler7   M   s      -BUEF??3f#"//1L1LM#//6#6<!JDM*117; 2 =EJ$S89
% s   B?Cc                   J    \ rS rSrSrS r\S 5       r\S 5       rS r	S r
Srg	)
_Stath   z9For gathering simple statistic of (un)supported functionsc                      SU l         SU l        g Nr   	supportedunsupportedselfs    r   __init___Stat.__init__j   s    r   c                 8    U R                   U R                  -   nU$ Nr=   )rA   totals     r   rF   _Stat.totaln   s    !1!11r   c                 >    U R                   U R                  -  S-  nU$ )Nd   )r>   rF   )rA   ratios     r   rJ   _Stat.ratios   s    +c1r   c                     U R                   S:X  a  gSR                  U R                  U R                   U R                  S9$ )Nr   emptyz0supported = {supported} / {total} = {ratio:.2f}%)r>   rF   rJ   )rF   r3   r>   rJ   r@   s    r   describe_Stat.describex   s>    ::?AHHnn**** I 
 	
r   c                 f    SR                  U R                  R                  U R                  5       S9$ )Nz{clsname}({describe}))clsnamerN   )r3   	__class__r4   rN   r@   s    r   __repr___Stat.__repr__   s0    &--NN++]]_ . 
 	
r   r=   N)r4   
__module____qualname____firstlineno____doc__rB   propertyrF   rJ   rN   rS   __static_attributes__ r   r   r9   r9   h   s<    C    

r   r9   c                 0    [        S U  5       5      (       + $ )Nc              3   B   #    U  H  oR                  S 5      v   M     g7f)r&   N)r,   .0xs     r   	<genexpr>(filter_private_module.<locals>.<genexpr>   s     @.?<<$$.?s   anymodule_componentss    r   filter_private_modulerg      s    @.?@@@@r   c                 0    [        S U  5       5      (       + $ )Nc              3   *   #    U  H	  oS :H  v   M     g7f)testsNr[   r^   s     r   ra   &filter_tests_module.<locals>.<genexpr>   s     ;):A<):s   rc   re   s    r   filter_tests_modulerl      s    ;):;;;;r   c              #   D  ^#    S nU R                   S-   n[        R                  " U R                  UUS9nU4S jnU R                   nU" U5      (       d  U v   U H  nUS   nU" U5      (       a  M  [	        5           [        U5      nUR                  S5      SS  H  n	 [        X5      nM     SSS5        [        W[        R                  5      (       d  M~  Uv   M     g! [         a     SSS5        M  f = f! [         a    Sn   M[  f = f! , (       d  f       Ne= f7f)zKYield all modules in a given package.

Recursively walks the package tree.
c                     g rE   r[   )r&   s    r   <lambda>)list_modules_in_package.<locals>.<lambda>   s    tr   .)onerrorc                 R   >^ U R                  S5      m[        U4S jT 5       5      $ )Nrq   c              3   >   >#    U  H  nU" T5      (       + v   M     g 7frE   r[   )r_   	filter_fnrf   s     r   ra   @list_modules_in_package.<locals>.check_filter.<locals>.<genexpr>   s$      4$2y !!2333$2s   )splitrd   )modnamerf   module_filterss    @r   check_filter-list_modules_in_package.<locals>.check_filter   s,    #MM#. 4$24 4 	4r      N)r4   pkgutilwalk_packages__path__r   
__import__	Exceptionrw   r-   r   r1   r.   
ModuleType)
packagery   onerror_ignoreprefixpackage_walkerrz   rx   pkginfomodparts
    `        r   list_modules_in_packager      s    
 $N#F**N4
 G  !!*   )
  c*12.!#,C / " #w1122	5 "    & C sl   A9D <D>C"	D!C;,D02D "
C8,D-
D 7C88D;D	DD	D
D	D c                   $    \ rS rSrSrS rS rSrg)	Formatter   zBase class for formatters.
    c                     Xl         g rE   _fileobj)rA   fileobjs     r   rB   Formatter.__init__   s    r   c                 R    UR                  SU R                  5        [        U0 UD6  g )Nfile)
setdefaultr   print)rA   argskwargss      r   r   Formatter.print   s#    &$--0tvr   r   N)r4   rU   rV   rW   rX   rB   r   rZ   r[   r   r   r   r      s     r   r   c                   B    \ rS rSrSrS rS rS rS rS r	S r
S	 rS
rg)HTMLFormatter   z Formatter that outputs HTML
    c                 ,    SS K nUR                  U5      $ r<   )htmlescape)rA   textr   s      r   r   HTMLFormatter.escape   s    {{4  r   c                 *    U R                  SUS5        g )Nz<h1></h2>r   rA   r   s     r   titleHTMLFormatter.title   s    

64)r   c                 L    U R                  SUS5        U R                  S5        g )Nz<h2>r   <ul>r   rA   rx   s     r   begin_module_section"HTMLFormatter.begin_module_section   s    

67G,

6r   c                 &    U R                  S5        g )N</ul>r   r@   s    r   end_module_section HTMLFormatter.end_module_section   s    

7r   c                 z   U R                  S5        U R                  SR                  UU5      5        U R                  SR                  U5      5        U R                  SUS5        U R                  S5        UR                  5        GH  u  pxU(       a  U R                  S5        US   n	US   n
US	   nUS
   nU R                  SR                  U R                  U	5      U R                  U
5      U R                  U5      US   US   5      5        U R                  SR                  U R                  US   =(       d    S5      5      5        O8U R                  SR                  U R                  [	        U5      5      5      5        U R                  S5        GM     U R                  S5        U R                  S5        g )N<li>z{}.<b>{}</b>z: <b>{}</b>z
<div><pre>z</pre></div>r   r(   sigfilenamelinesz)<p>defined by <b>{}</b>{} at {}:{}-{}</p>r   r|   	<p>{}</p>	docstring z<li>{}</li>r   )r   r3   itemsr   str)rA   rx   itemnametypenamer   sourcesr*   tclssourceimplr   r   r   s                r   write_supported_item"HTMLFormatter.write_supported_item   sl   

6

>((
 	 	

=''12

<N;

6#MMOLD

6"f~Um!*-w

?FFD)4;;s+;H-uQxq 

;--KK{ 3 9r:  

8??4;;s4y+ABCJJw% ,& 	

7

7r   c                     U R                  S5        U R                  SR                  UU5      5        U R                  S5        g )Nr   z{}.<b>{}</b>: UNSUPPORTEDr   )r   r3   rA   rx   r   s      r   write_unsupported_item$HTMLFormatter.write_unsupported_item  s<    

6

.55
 	 	

7r   c                 `    U R                  SR                  UR                  5       5      5        g )Nr   )r   r3   rN   )rA   statss     r   write_statisticHTMLFormatter.write_statistic  s     

;%%enn&678r   r[   Nr4   rU   rV   rW   rX   r   r   r   r   r   r   r   rZ   r[   r   r   r   r      s+    !*B9r   r   c                   B    \ rS rSrSrS rS rS rS rS r	S r
S	 rS
rg)ReSTFormatteri  zDFormatter that output ReSTructured text format for Sphinx docs.
    c                     U$ rE   r[   r   s     r   r   ReSTFormatter.escape  s    r   c                     U R                  U5        U R                  S[        U5      -  5        U R                  5         g )N=r   lenr   s     r   r   ReSTFormatter.title  s+    

4

3T?#

r   c                     U R                  U5        U R                  S[        U5      -  5        U R                  5         g )N-r   r   s     r   r   "ReSTFormatter.begin_module_section  s,    

7

3W%&

r   c                 $    U R                  5         g rE   r   r@   s    r   r    ReSTFormatter.end_module_section$  s    

r   c                 d   U R                  SR                  X5      5        U R                  S5        U R                  5         U(       a   U R                  SR                  U5      5        U R                  5         UR                  5        H  u  pxU(       a_  US   n	US   n
US   nUS   n[        R                  [        UUS   US	   S
9nU R                  SR                  XXS   US	   U5      5        Mk  U R                  SR                  [        U5      5      5        M     U R                  5         g )Nz.. function:: {}.{}z   :noindex:z   Alias to: ``{}``r(   r   r   r   r   r|   )commitpath	firstlinelastlinez,   - defined by ``{}{}`` at `{}:{}-{} <{}>`_z   - defined by ``{}``)r   r3   r   
github_urlr   r   )rA   rx   r   r   r   r   r*   r   r   r   r   r   r   source_links                 r   r   "ReSTFormatter.write_supported_item'  s   

(//BC

>"

JJ,33E:;

#MMOLDf~Um!*-w(//!!#Ah"1X	 0  

BII81XuQx 

3::3t9EF' ,( 	

r   c                     g rE   r[   r   s      r   r   $ReSTFormatter.write_unsupported_itemG  s    r   c                    UR                   S:X  a  U R                  S5        O[SnU R                  UR                  UR                  5      5        U R                  5         U R                  UR	                  5       5        U R                  5         g )Nr   zThis module is not supported.z%Not showing {} unsupported functions.)r>   r   r3   r?   rN   )rA   statmsgs      r   r   ReSTFormatter.write_statisticJ  s_    >>QJJ679CJJszz$"2"234JJLJJt}}'

r   r[   Nr   r[   r   r   r   r     s+    

@r   r   c                    U R                  SR                  U5      5        0 nU GH\  n[        5       nUR                  nU R	                  U R                  U5      5        [        XSUS9 H  nUS   n	U	b  U=R                  S-  sl        U R                  U R                  US   R                  5      U R                  US   5      U R                  [        U	5      5      U R                  US   5      US	   UR                  S
5      S9  M  U=R                  S-  sl        U R                  U R                  US   R                  5      U R                  US   5      S9  M     U R                  U5        U R                  5         GM_     g)zFormat modules.
    zListings for {})r   r*   r   Nr|   r'   r(   r   r   r*   )rx   r   r   r   r   r*   )rx   r   )r   r3   r9   r4   r   r   r7   r>   r   r   getr?   r   r   r   )
	formatterpackage_namemod_sequencer   	alias_mapr   r   rx   r!   nbtypes
             r   _format_module_infosr   U  sf    OO%,,\:;Iw,,&&y'7'7'@A"3YGD,'F!!#..%,,T(^-D-DE&--d6l;&--c&k:'..tK/@A 0((7+ /    A% 00%,,T(^-D-DE&--d6l; 1  H( 	!!$'$$&3 r   c                    [        U 5      n[        US5      (       a  [        U5      nOU/nUS:X  a.  [        US-   S5       n[	        US9n[        X`U5        SSS5        gUS:X  a.  [        US-   S5       n[        US9n[        X`U5        SSS5        g[        S	R                  U5      5      e! , (       d  f       g= f! , (       d  f       g= f)
zWrite listing information into a file.

Parameters
----------
package_name : str
    Name of the package to inspect.
filename : str
    Output filename. Always overwrite.
output_format : str
    Support formats are "html" and "rst".
r   r   z.htmlw)r   Nrstz.rstz#Output format '{}' is not supported)	r   hasattrr   openr   r   r   r   r3   )r   r   output_formatr   modsfoutfmtrs          r   write_listingsr   v  s     &Gw
##&w/y(W$c*d .D T: +* 
%	(V#S)T .D T: *) 188GI 	I +* *)s   B.5B?.
B<?
Cz6
Inspect Numba support for a given top-level package.
c                  (   [         R                  " [        S9n U R                  SS[        SS9  U R                  SSSSS	9  U R                  S
SSSS	9  U R                  5       nUR                  nUR                  nUR                  n[        X$U5        g )N)descriptionr   zPackage to inspect)metavartypehelpz--formatr3   r   z!Output format; i.e. "html", "rst")destdefaultr   z--filer   inspector_outputz8Output filename. Defaults to "inspector_output.<format>")
argparseArgumentParserprogram_descriptionadd_argumentr   
parse_argsr   r3   r   r   )parserr   r   r   r   s        r   r	   r	     s    $$1DEF
93!   60   v'9G  
 D<<LKKMyyH<=9r   __main__rE   )NN)"rX   r  r}   r
   typesr.   
numba.corer   numba._versionr   numba.core.registryr   numba.tests.supportr   r   r   r   r$   r7   objectr9   rg   rl   _default_module_filtersr   r   r   r   r   r   stripr  r	   r4   r[   r   r   <module>r     s         ' * / 
[
(V6
F 
@A<
   5L 1h <9I <9~>I >B'BI>	EG 
:, zF r   