
    ge                     T   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                            d          d                         ZdS )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dS )	ParseCallc                     g | _         d S N)ls)selfs    >lib/python3.11/site-packages/scipy/_lib/tests/test_warnings.py__init__zParseCall.__init__   s        c                     t           j                            | |           | j                            |j                   d S r   )astNodeVisitorgeneric_visitr   appendattrr	   nodes     r
   visit_AttributezParseCall.visit_Attribute   s6    %%dD111ty!!!!!r   c                 D    | j                             |j                   d S r   )r   r   idr   s     r
   
visit_NamezParseCall.visit_Name   s    twr   N)__name__
__module____qualname__r   r   r    r   r
   r   r      sA          " " "         r   r   c                   $     e Zd Z fdZd Z xZS )	FindFuncsc                 r    t                                                       || _        g | _        g | _        d S r   )superr   _FindFuncs__filenamebad_filtersbad_stacklevels)r	   filename	__class__s     r
   r   zFindFuncs.__init__   s6    "!r   c                    t                      }|                    |j                   t          j                            | |           |j        d         dk    s|j        d         dk    r?|j        d         j        dk    r)| j	        
                    | j         d|j                    |j        d         dk    rt          |j                  dk    s|j        d	         d
k    ri| j        dk    rd S t          |j                  dk    rd S d |j        D             }d|vr/| j        
                    | j         d|j                    d S d S d S d S )Nsimplefilterfilterwarningsr   ignore:warn   warningsz_lib/tests/test_warnings.py   c                     h | ]	}|j         
S r   )arg).0kws     r
   	<setcomp>z'FindFuncs.visit_Call.<locals>.<setcomp>8   s    333rBF333r   
stacklevel)r   visitfuncr   r   r   r   argssr"   r   r!   linenolenkeywordsr#   )r	   r   pr9   s       r
   
visit_CallzFindFuncs.visit_Call$   sm   KK		%%dD11148~%%b5E)E)Ey|~)) ''66668 8 8 48vAD		Q!$r(j"8"8"??? 49~~""33T]333D4''$++66668 8 8 8 8 "8"8 ('r   )r   r   r   r   r?   __classcell__)r%   s   @r
   r   r      sG        " " " " "8 8 8 8 8 8 8r   r   session)scopec                  0   t          t          j                  j        } g }g }|                     d          D ]}t          j        t          |                    5 }t          j	        |
                                t          |                    }t          |                    |                     }|                    |           |                    |j                   |                    |j                   d d d            n# 1 swxY w Y   ||fS )Nz*.py)r$   )r   scipy__file__parentrglobtokenizeopenstrr   parsereadr   relative_tor7   extendr"   r#   )baser"   r#   pathfiletreefinders          r
   warning_callsrT   >   s0    &DKO

6"" ; ; ]3t99%% 	;9TYY[[3t99===Dt//5566FLLv1222""6#9:::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; ''s   B!DD	D	c           	         | \  }}t           j                            dd          t           j                            dd          t           j                            dd          t           j                            dd          t           j                            dd          t           j                            dd	          ffd
|D             }|r5t          d                    d                    |                              d S )Ndatasetsz_fetchers.pyz__init__.pyoptimizez_optimize.pysparsestatsz_discrete_distns.pyz_continuous_distns.pyc                 N    g | ]!}|                     d           d         v|"S )r+   r   )split)r3   itemallowed_filterss     r
   
<listcomp>z.test_warning_calls_filters.<locals>.<listcomp>f   sC     $ $ $D4::c??13E"4# 4#4 4# 4# 4#r   xwarning ignore filter should not be used, instead, use
numpy.testing.suppress_warnings (in tests only);
found in:
    {}
    )osrP   joinAssertionErrorformat)rT   r"   r#   r]   s      @r
   test_warning_calls_filtersre   S   s    #0 K 	Z00
Z//
Z00
X}--
W344
W566O$ $ $ $K $ $ $K  -  &k**!, !,- - 	-- -r   zstacklevels currently missing)reasonc                     | \  }}d}|r0|d                     d                    |                    z  }|dz  }|r+|d                     d                    |                    z  }|rt          |          d S )N r_   r`   z

z6warnings should have an appropriate stacklevel:
    {})rd   rb   rc   )rT   r"   r#   msgs       r
   test_warning_calls_stacklevelsrj   q   s     $1 K
C  $$*F8==+E+E$F$F	H 	v 0HOOo..0 0 	0  "S!!!" "r   )__doc__ra   pathlibr   r   rH   rD   pytestr   r   r   fixturerT   markslowre   xfailrj   r   r   r
   <module>rr      s?    
			       



   	  	  	  	  	  	  	  	 8 8 8 8 8 8 8 8B i   ( ( ! (( - - -: 9::" " ;: " " "r   