o
    hU                     @   s   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 dejZ	G dd dejZ
ejdd	d
d Zejdej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                   @   s$   e Zd Zdd Zdd Zdd ZdS )	ParseCallc                 C   s
   g | _ d S N)ls)self r   R/var/www/vscode/kcb/lib/python3.10/site-packages/scipy/_lib/tests/test_warnings.py__init__   s   
zParseCall.__init__c                 C   s    t j| | | j|j d S r   )astNodeVisitorgeneric_visitr   appendattrr   noder   r   r   visit_Attribute   s   zParseCall.visit_Attributec                 C   s   | j |j d S r   )r   r   idr   r   r   r   
visit_Name   s   zParseCall.visit_NameN)__name__
__module____qualname__r	   r   r   r   r   r   r   r      s    r   c                       s$   e Zd Z fddZdd Z  ZS )	FindFuncsc                    s    t    || _g | _g | _d S r   )superr	   _FindFuncs__filenamebad_filtersbad_stacklevels)r   filename	__class__r   r   r	      s   

zFindFuncs.__init__c                 C   sH  t  }||j tj| | |jd dks|jd dkr^|jd   tjd r0 } |j	}n   tj
d rF }ddd |jD }n  	 td	|d
kr^| j| j d|j  |jd dkrt|jdkss|jd dkr| jdkrzd S t|jdkrd S dd |jD }d|vr| j| j d|j  d S d S d S d S )Nsimplefilterfilterwarningsr   r    c                 s   s"    | ]}t |tjr|jV  qd S r   )
isinstancer
   Constantvalue).0xr   r   r   	<genexpr>3   s    
z'FindFuncs.visit_Call.<locals>.<genexpr>zunknown ast node typeignore:warn   warningsz_lib/tests/test_warnings.py   c                 S   s   h | ]}|j qS r   )arg)r&   kwr   r   r   	<setcomp>G   s    z'FindFuncs.visit_Call.<locals>.<setcomp>
stacklevel)r   visitfuncr
   r   r   r   argsr$   r%   	JoinedStrjoinvalues
ValueErrorr   r   r   linenolenkeywordsr   )r   r   pcargtextjsr6   r   r   r   
visit_Call%   sB   



zFindFuncs.visit_Call)r   r   r   r	   rB   __classcell__r   r   r   r   r      s    r   session)scopec               	   C   s   t tjj} g }g }| dD ]<}tt|+}tj	|
 t|d}t|| }|| ||j ||j W d    n1 sFw   Y  q||fS )Nz*.py)r   )r   scipy__file__parentrglobtokenizeopenstrr
   parsereadr   relative_tor4   extendr   r   )baser   r   pathfiletreefinderr   r   r   warning_callsM   s   
rV   (   c                    s   | \}}t jddt jddt jddt jddt jddt jdd	t jd
dt jddt jddt jddt jddt jddt jdddt jddt jd
ddddf  fdd|D }|rytdd|d S )Ndatasetsz_fetchers.pyz__init__.pyoptimizez_optimize.pyz_constraints.pyz_nnls.pysignalz
_ltisys.pysparsespecialz	_basic.pystatsz_discrete_distns.pyz_continuous_distns.pyz_binned_statistic.pyz_stats_py.pytestsztest_axis_nan_policy.py_libz_util.pylinalg_dsolvezlinsolve.pyzconftest.pyc                    s"   g | ]}| d d  vr|qS )r*   r   )split)r&   itemallowed_filtersr   r   
<listcomp>   s    z.test_warning_calls_filters.<locals>.<listcomp>zxwarning ignore filter should not be used, instead, use
numpy.testing.suppress_warnings (in tests only);
found in:
    {}z
    )osrR   r8   AssertionErrorformat)rV   r   r   r   rd   r   test_warning_calls_filtersb   s6   
rj   )__doc__rg   pathlibr   r
   rJ   rF   pytestr   r   r   fixturerV   mark	fail_slowslowrj   r   r   r   r   <module>   s    
/

