
    S_f                     p   d Z ddlZddlmZ ddlZddlZddlZddlZ G d dej                        Z	 G d dej                        Z
 ej                  d	      d
        Zej                  j                  d        Zej                  j                  ej                  j!                  d      d               Zy)z
Tests which scan for certain occurrences in the code, they may not find
all of these occurrences but should catch almost all. This file was adapted
from NumPy.
    N)Pathc                       e Zd Zd Zd Zd Zy)	ParseCallc                     g | _         y N)ls)selfs    >lib/python3.12/site-packages/scipy/_lib/tests/test_warnings.py__init__zParseCall.__init__   s	        c                     t         j                  j                  | |       | j                  j	                  |j
                         y r   )astNodeVisitorgeneric_visitr   appendattrr	   nodes     r
   visit_AttributezParseCall.visit_Attribute   s*    %%dD1tyy!r   c                 N    | j                   j                  |j                         y r   )r   r   idr   s     r
   
visit_NamezParseCall.visit_Name   s    twwr   N)__name__
__module____qualname__r   r   r    r   r
   r   r      s    " r   r   c                   $     e Zd Z fdZd Z xZS )	FindFuncsc                 L    t         |           || _        g | _        g | _        y r   )superr   _FindFuncs__filenamebad_filtersbad_stacklevels)r	   filename	__class__s     r
   r   zFindFuncs.__init__   s%    "!r   c                    t               }|j                  |j                         t        j                  j                  | |       |j                  d   dk(  s|j                  d   dk(  rP|j                  d   j                  dk(  r4| j                  j                  | j                   d|j                          |j                  d   dk(  rt        |j                        dk(  s|j                  d	   d
k(  r| j                  dk(  ry t        |j                        dk(  ry |j                  D ch c]  }|j                   }}d|vr5| j                   j                  | j                   d|j                          y y y y c c}w )Nsimplefilterfilterwarningsr   ignore:warn   warningsz_lib/tests/test_warnings.py   
stacklevel)r   visitfuncr   r   r   r   argsvaluer"   r   r!   linenolenkeywordsargr#   )r	   r   pkwr4   s        r
   
visit_CallzFindFuncs.visit_Call%   sE   K			%%dD1448~%b5E)Eyy|!!X-  '''q68 448vADD	Q!$$r(j"8"?? 499~"%)]]3rBFF3D34'$$++'q68 ( #9  4s   -E>)r   r   r   r   r<   __classcell__)r%   s   @r
   r   r      s    "8r   r   session)scopec                     t        t        j                        j                  } g }g }| j	                  d      D ]  }t        j                  t        |            5 }t        j                  |j                         t        |            }t        |j                  |             }|j                  |       |j                  |j                         |j                  |j                          d d d         ||fS # 1 sw Y   xY w)Nz*.py)r$   )r   scipy__file__parentrglobtokenizeopenstrr   parsereadr   relative_tor2   extendr"   r#   )baser"   r#   pathfiletreefinders          r
   warning_callsrQ   ?   s     &&DKO

6" ; ]]3t9% 	;99TYY[3t9=Dt//56FLLv112""6#9#9:	; 	;; ''	; 	;s   BC88D	c                 h   | \  }}t         j                  j                  dd      t         j                  j                  dd      t         j                  j                  dd      t         j                  j                  dd      t         j                  j                  dd      t         j                  j                  dd	      t         j                  j                  d
d      t         j                  j                  dd      t         j                  j                  dd      t         j                  j                  dd      t         j                  j                  dd      f}|D cg c]  }|j                  d      d   |vs| }}|r)t	        dj                  dj                  |                  y c c}w )Ndatasetsz_fetchers.pyz__init__.pyoptimizez_optimize.pyz_constraints.pyz_nnls.pysignalz
_ltisys.pysparsestatsz_discrete_distns.pyz_continuous_distns.pyz_binned_statistic.py_libz_util.pyr+   r   xwarning ignore filter should not be used, instead, use
numpy.testing.suppress_warnings (in tests only);
found in:
    {}
    )osrM   joinsplitAssertionErrorformat)rQ   r"   r#   allowed_filtersitems        r
   test_warning_calls_filtersrb   T   sH   #0 K 	Z0
Z/
Z0
Z!23
Z,
X|,
X}-
W34
W56
W45
VZ(O %0 $D4::c?13E"4#4 $K $   &k*!,- 	- $s   !F/=F/zstacklevels currently missing)reasonc                     | \  }}d}|r(|dj                  dj                  |            z  }|dz  }|r#|dj                  dj                  |            z  }|rt        |      y )N rY   rZ   z

z6warnings should have an appropriate stacklevel:
    {})r_   r\   r^   )rQ   r"   r#   msgs       r
   test_warning_calls_stacklevelsrg   w   s     $1 K
C $$*F8==+E$F	H 	vHOOo.0 	0 S!! r   )__doc__r[   pathlibr   r   rE   rA   pytestr   r   r   fixturerQ   markslowrb   xfailrg   r   r   r
   <module>ro      s    
  
   	  	 8 8B i ( !(( - -D 9:" ; "r   