ó
î&]\c           @` s^  d  Z  d d l m Z m Z m Z d d l Z d d l Z d d l Z d d l Z e j	 d k r¾ d d l
 m Z d d l Z d d l Z d e j f d „  ƒ  YZ d	 e j f d
 „  ƒ  YZ n  e j d d ƒ d „  ƒ Z e j j e j j e j	 d k  d d ƒd „  ƒ ƒ Z e j j e j j e j	 d k  d d ƒe j j d d ƒ d „  ƒ ƒ ƒ Z d S(   s¡   
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.
i    (   t   divisiont   absolute_importt   print_functionNi   i   (   t   Patht	   ParseCallc           B` s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C` s   g  |  _  d  S(   N(   t   ls(   t   self(    (    s=   lib/python2.7/site-packages/scipy/_lib/tests/test_warnings.pyt   __init__   s    c         C` s*   t  j j |  | ƒ |  j j | j ƒ d  S(   N(   t   astt   NodeVisitort   generic_visitR   t   appendt   attr(   R   t   node(    (    s=   lib/python2.7/site-packages/scipy/_lib/tests/test_warnings.pyt   visit_Attribute   s    c         C` s   |  j  j | j ƒ d  S(   N(   R   R   t   id(   R   R   (    (    s=   lib/python2.7/site-packages/scipy/_lib/tests/test_warnings.pyt
   visit_Name   s    (   t   __name__t
   __module__R   R   R   (    (    (    s=   lib/python2.7/site-packages/scipy/_lib/tests/test_warnings.pyR      s   		t	   FindFuncsc           B` s   e  Z d  „  Z d „  Z RS(   c         C` s,   t  ƒ  j ƒ  | |  _ g  |  _ g  |  _ d  S(   N(   t   superR   t   _FindFuncs__filenamet   bad_filterst   bad_stacklevels(   R   t   filename(    (    s=   lib/python2.7/site-packages/scipy/_lib/tests/test_warnings.pyR   "   s    		c         C` sB  t  ƒ  } | j | j ƒ t j j |  | ƒ | j d d k sR | j d d k r | j d j d k r |  j	 j
 d j |  j | j ƒ ƒ q n  | j d d k r>t | j ƒ d k sË | j d	 d
 k r>|  j d k rÞ d  St | j ƒ d k r÷ d  Sd „  | j Dƒ } d | k r>|  j j
 d j |  j | j ƒ ƒ q>n  d  S(   Niÿÿÿÿt   simplefiltert   filterwarningsi    t   ignores   {}:{}t   warni   iþÿÿÿt   warningss   _lib/tests/test_warnings.pyi   c         S` s   h  |  ] } | j  ’ q S(    (   t   arg(   t   .0t   kw(    (    s=   lib/python2.7/site-packages/scipy/_lib/tests/test_warnings.pys	   <setcomp><   s   	 t
   stacklevel(   R   t   visitt   funcR   R	   R
   R   t   argst   sR   R   t   formatR   t   linenot   lent   keywordsR   (   R   R   t   pR$   (    (    s=   lib/python2.7/site-packages/scipy/_lib/tests/test_warnings.pyt
   visit_Call(   s"    	&	(	(   R   R   R   R+   (    (    (    s=   lib/python2.7/site-packages/scipy/_lib/tests/test_warnings.pyR   !   s   	t   scopet   sessionc       
   C` sÃ   t  t j ƒ j }  g  } g  } x˜ |  j d ƒ D]‡ } t j t | ƒ ƒ j } t j	 | j
 ƒ  d t | ƒ ƒ} t | j |  ƒ ƒ } | j | ƒ | j | j ƒ | j | j ƒ Wd  QXq. W| | f S(   Ns   *.pyR   (   R   t   scipyt   __file__t   parentt   rglobt   tokenizet   opent   strR   t   parset   readR   t   relative_toR"   t   extendR   R   (   t   baseR   R   t   patht   filet   treet   finder(    (    s=   lib/python2.7/site-packages/scipy/_lib/tests/test_warnings.pyt   warning_callsB   s    !t   reasons   needs Python >= 3.4c         C` s   |  \ } } g  | D] } d | k r | ^ q } g  | D]' } t  j j d d ƒ | k r8 | ^ q8 } | rŒ t d j d j | ƒ ƒ ƒ ‚ n  d  S(   Ns   optimize.pyt   sparses   __init__.pysƒ   warning ignore filter should not be used, instead, use
scipy._lib._numpy_compat.suppress_warnings (in tests only);
found in:
    {}s   
    (   t   osR:   t   joint   AssertionErrorR&   (   R>   R   R   t   item(    (    s=   lib/python2.7/site-packages/scipy/_lib/tests/test_warnings.pyt   test_warning_calls_filtersW   s    's   stacklevels currently missingc         C` s   |  \ } } d } | rA | d j  d j | ƒ ƒ 7} | d 7} n  | rf | d j  d j | ƒ ƒ 7} n  | r{ t | ƒ ‚ n  d  S(   Nt    sƒ   warning ignore filter should not be used, instead, use
scipy._lib._numpy_compat.suppress_warnings (in tests only);
found in:
    {}s   
    s   

s6   warnings should have an appropriate stacklevel:
    {}(   R&   RB   RC   (   R>   R   R   t   msg(    (    s=   lib/python2.7/site-packages/scipy/_lib/tests/test_warnings.pyt   test_warning_calls_stacklevelsk   s    		(   i   i   (   i   i   (   i   i   (   t   __doc__t
   __future__R    R   R   RA   t   sysR.   t   pytestt   version_infot   pathlibR   R   R2   R	   R   R   t   fixtureR>   t   markt   slowt   skipifRE   t   xfailRH   (    (    (    s=   lib/python2.7/site-packages/scipy/_lib/tests/test_warnings.pyt   <module>   s"   !	-	