ó
šßÈ[c           @` sg  d  d l  m Z m Z m Z m Z d  d l Z d  d l Z d  d l Z d  d l Z d d l	 m
 Z
 d d l m Z d d l m Z m Z d d l m Z m Z e j Z e j Z y e ƒ  Z Wn e k
 rÖ d Z n Xd	 „  Z e Z d
 „  Z d „  Z d „  Z d „  Z  d „  Z! d „  Z" d „  Z# d „  Z$ d „  Z% e j& j' e( d ƒ ƒ d „  ƒ Z) e j& j* e( d ƒ ƒ d „  ƒ Z+ e j& j* e( d ƒ ƒ d „  ƒ Z, e j& j' d d d ƒe j& j* e( d ƒ ƒ d „  ƒ ƒ Z- e j& j. d d d d d d g ƒ d  „  ƒ Z/ d! „  Z0 d" „  Z1 d# „  Z2 e j& j. d d d d d d g ƒ d$ „  ƒ Z3 d% „  Z4 d& „  Z5 d' „  Z6 d S((   i    (   t   absolute_importt   divisiont   print_functiont   unicode_literalsNi   (   t   catch_warningsi   (   t   log(   t   LoggingErrort   conf(   t   AstropyWarningt   AstropyUserWarningc         C` sl   t  j t ƒ t  j t ƒ d  t _ d  t _ t j ƒ  t j	 ƒ  rO t j
 ƒ  n  t j ƒ  rh t j ƒ  n  d  S(   N(   t   impt   reloadt   warningst   syst   NoneR   t   _showwarning_origt   _excepthook_origt   _set_defaultst   warnings_logging_enabledt   disable_warnings_loggingt   exception_logging_enabledt   disable_exception_logging(   t   function(    (    s8   lib/python2.7/site-packages/astropy/tests/test_logger.pyt   setup_function   s    		
c          C` sB   t  j t ƒ  }  t j ƒ  Wd  QX|  j j d d k s> t ‚ d  S(   Ni    u%   Warnings logging has not been enabled(   t   pytestt   raisesR   R   R   t   valuet   argst   AssertionError(   t   e(    (    s8   lib/python2.7/site-packages/astropy/tests/test_logger.pyt'   test_warnings_logging_disable_no_enable6   s    c          C` sL   t  j ƒ  t j t ƒ  }  t  j ƒ  Wd  QX|  j j d d k sH t ‚ d  S(   Ni    u)   Warnings logging has already been enabled(   R   t   enable_warnings_loggingR   R   R   R   R   R   (   R   (    (    s8   lib/python2.7/site-packages/astropy/tests/test_logger.pyt"   test_warnings_logging_enable_twice<   s    
c          C` sX   t  j ƒ  d „  t _ t j t ƒ  }  t  j ƒ  Wd  QX|  j j	 d d k sT t
 ‚ d  S(   Nc           S` s   d  S(   N(   R   (    (    (    s8   lib/python2.7/site-packages/astropy/tests/test_logger.pyt   <lambda>E   s    i    uh   Cannot disable warnings logging: warnings.showwarning was not set by this logger, or has been overridden(   R   R   R   t   showwarningR   R   R   R   R   R   R   (   R   (    (    s8   lib/python2.7/site-packages/astropy/tests/test_logger.pyt    test_warnings_logging_overriddenC   s
    
c          C` sÑ  t  ƒ  , }  t j ƒ   } t j d t ƒ Wd  QXWd  QXt | ƒ d k sO t ‚ t |  ƒ d k sg t ‚ |  d j j	 d d k s‡ t ‚ t  ƒ  @ }  t j
 ƒ  t j ƒ   } t j d t ƒ Wd  QXt j ƒ  Wd  QXt | ƒ d k sê t ‚ t |  ƒ d k st ‚ | d j d k st ‚ | d j j d ƒ s7t ‚ | d j d k sPt ‚ t  ƒ  M }  t j
 ƒ  t j ƒ  $ } t j d t ƒ t j d ƒ Wd  QXt j ƒ  Wd  QXt | ƒ d k sÀt ‚ t |  ƒ d k sØt ‚ | d j d k sñt ‚ | d j j d ƒ st ‚ | d j d k s&t ‚ |  d j j	 d d k sFt ‚ t  ƒ  , }  t j ƒ   } t j d t ƒ Wd  QXWd  QXt | ƒ d k s•t ‚ t |  ƒ d k s­t ‚ |  d j j	 d d k sÍt ‚ d  S(   Nu   This is a warningi    i   u   WARNINGu   astropy.tests.test_loggeru)   This is another warning, not from Astropy(   R   R   t   log_to_listR   t   warnR	   t   lenR   t   messageR   R   R   t	   levelnamet
   startswitht   origin(   t	   warn_listt   log_list(    (    s8   lib/python2.7/site-packages/astropy/tests/test_logger.pyt   test_warnings_loggingK   sD     

 c          C` sã   d t  f d „  ƒ  Y}  t ƒ  @ } t j ƒ  t j ƒ   } t j d |  ƒ Wd  QXt j ƒ  Wd  QXt | ƒ d k sy t	 ‚ t | ƒ d k s‘ t	 ‚ | d j
 d k sª t	 ‚ | d j j d ƒ sÆ t	 ‚ | d j d k sß t	 ‚ d  S(	   Nt   CustomAstropyWarningClassc           B` s   e  Z RS(    (   t   __name__t
   __module__(    (    (    s8   lib/python2.7/site-packages/astropy/tests/test_logger.pyR.   y   s   u   This is a warningi   i    u   WARNINGu,   CustomAstropyWarningClass: This is a warningu   astropy.tests.test_logger(   R   R   R   R   R$   R   R%   R   R&   R   R(   R'   R)   R*   (   R.   R+   R,   (    (    s8   lib/python2.7/site-packages/astropy/tests/test_logger.pyt'   test_warnings_logging_with_custom_classx   s    
c          C` sæ   d d l  m }  m } t ƒ  = } t j ƒ  t j ƒ   } | |  d
 ƒ Wd  QXt j ƒ  Wd  QXt | ƒ d k sv t	 ‚ t | ƒ d k sŽ t	 ‚ | d j
 d k s§ t	 ‚ | d j j d ƒ } | sÉ t	 ‚ | d j d	 k sâ t	 ‚ d  S(   Ni   (   t   W02t   vo_warnu   au   bi   i    u   WARNINGuG   W02: ?:?:?: W02: a attribute 'b' is invalid.  Must be a standard XML idu   astropy.tests.test_logger(   u   au   b(   t   io.votable.exceptionsR2   R3   R   R   R   R$   R   R&   R   R(   R'   R)   R*   (   R2   R3   R+   R,   t   x(    (    s8   lib/python2.7/site-packages/astropy/tests/test_logger.pyt,   test_warning_logging_with_io_votable_warning‰   s    
c          C` sb   d t  f d „  ƒ  Y}  t j ƒ  |  ƒ  t j d <z  t j t d ƒ t d d ƒ Wd t j d =Xd S(   u¬   
    Regression test for https://github.com/astropy/astropy/issues/2671

    This test actually puts a goofy fake module into ``sys.modules`` to test
    this problem.
    t
   FakeModulec           B` s   e  Z d  „  Z RS(   c         S` s   t  d ƒ ‚ d  S(   Nu.   _showwarning should ignore any exceptions here(   t   ImportError(   t   selft   attr(    (    s8   lib/python2.7/site-packages/astropy/tests/test_logger.pyt   __getattr__£   s    (   R/   R0   R;   (    (    (    s8   lib/python2.7/site-packages/astropy/tests/test_logger.pyR7   ¢   s   u   <test fake module>u   Regression test for #2671u   <this is only a test>i   N(   t   objectR   R   R   t   modulesR   R"   R   (   R7   (    (    s8   lib/python2.7/site-packages/astropy/tests/test_logger.pyt$   test_import_error_in_warning_loggingš   s    
c          C` sB   t  j t ƒ  }  t j ƒ  Wd  QX|  j j d d k s> t ‚ d  S(   Ni    u&   Exception logging has not been enabled(   R   R   R   R   R   R   R   R   (   R   (    (    s8   lib/python2.7/site-packages/astropy/tests/test_logger.pyt(   test_exception_logging_disable_no_enable±   s    c          C` sL   t  j ƒ  t j t ƒ  }  t  j ƒ  Wd  QX|  j j d d k sH t ‚ d  S(   Ni    u*   Exception logging has already been enabled(   R   t   enable_exception_loggingR   R   R   R   R   R   (   R   (    (    s8   lib/python2.7/site-packages/astropy/tests/test_logger.pyt#   test_exception_logging_enable_twice·   s    
u   ip is not Nonec          C` sX   t  j ƒ  d „  t _ t j t ƒ  }  t  j ƒ  Wd  QX|  j j	 d d k sT t
 ‚ d  S(   Nc         S` s   d  S(   N(   R   (   t   etypet   evaluet   tb(    (    s8   lib/python2.7/site-packages/astropy/tests/test_logger.pyR!   Ã   s    i    uc   Cannot disable exception logging: sys.excepthook was not set by this logger, or has been overridden(   R   R@   R   t
   excepthookR   R   R   R   R   R   R   (   R   (    (    s8   lib/python2.7/site-packages/astropy/tests/test_logger.pyt!   test_exception_logging_overriddenÀ   s
    
c          C` s  y% t  j ƒ   }  t d ƒ ‚ Wd  QXWn? t k
 rf } t j t j ƒ  Œ  | j d d k ss t ‚ n Xt ss t ‚ t	 |  ƒ d k s‹ t ‚ y/ t  j
 ƒ  t  j ƒ   }  t d ƒ ‚ Wd  QXWn? t k
 rû } t j t j ƒ  Œ  | j d d k st ‚ n Xt st ‚ t	 |  ƒ d k s t ‚ |  d j d k s9t ‚ |  d j j d ƒ sUt ‚ |  d j d k snt ‚ t  j ƒ  y% t  j ƒ   }  t d ƒ ‚ Wd  QXWn? t k
 rÞ} t j t j ƒ  Œ  | j d d k sët ‚ n Xt sët ‚ t	 |  ƒ d k st ‚ d  S(   Nu   This is an Exceptioni    i   u   ERRORu   Exception: This is an Exceptionu   astropy.tests.test_logger(   R   R$   t	   ExceptionR   RE   t   exc_infoR   R   t   FalseR&   R@   R(   R'   R)   R*   R   (   R,   t   exc(    (    s8   lib/python2.7/site-packages/astropy/tests/test_logger.pyt   test_exception_loggingÉ   s:    

c          C` s  d d l  m }  |  t ƒ } y0 t j ƒ  t j ƒ   } | j d ƒ Wd  QXWnB t k
 r } t j	 t j
 ƒ  Œ  | j d j d ƒ s t ‚ n Xt s t ‚ t | ƒ d k sµ t ‚ | d j d k sÎ t ‚ | d j j d ƒ sê t ‚ | d j d	 k st ‚ d  S(
   Ni   (   t   HomogeneousListu   fooi    u3   homogeneous list must contain only objects of type i   u   ERRORu>   TypeError: homogeneous list must contain only objects of type u   astropy.utils.collections(   t   utils.collectionsRL   t   intR   R@   R$   t   appendt	   TypeErrorR   RE   RH   R   R)   R   RI   R&   R(   R'   R*   (   RL   t   lR,   RJ   (    (    s8   lib/python2.7/site-packages/astropy/tests/test_logger.pyt   test_exception_logging_originó   s     
u   sys.version_info[:2] >= (3, 5)t   reasonu    Infinite recursion on Python 3.5c          C` sË   y, t  j ƒ  t  j ƒ   }  t ƒ  ‚ Wd QXWn& t k
 rT } t j t j ƒ  Œ  n Xt sa t ‚ t	 |  ƒ d k sy t ‚ |  d j
 d k s’ t ‚ |  d j j d ƒ s® t ‚ |  d j d k sÇ t ‚ d S(   uÞ   
    Regression test for a crash that occurred on Python 3 when logging an
    exception that was instantiated with no arguments (no message, etc.)

    Regression test for https://github.com/astropy/astropy/pull/4056
    Ni   i    u   ERRORu	   Exceptionu   astropy.tests.test_logger(   R   R@   R$   RG   R   RE   RH   RI   R   R&   R(   R'   R)   R*   (   R,   RJ   (    (    s8   lib/python2.7/site-packages/astropy/tests/test_logger.pyt(   test_exception_logging_argless_exception  s    
u   levelu   DEBUGu   INFOu   WARNu   ERRORc         C` s²  t  j } zi |  d  k	 r( t  j |  ƒ n  t  j ƒ  ; } t  j d ƒ t  j d ƒ t  j d ƒ t  j d ƒ Wd  QXWd  t  j | ƒ X|  d  k r› t	 j
 }  n  |  d k rÂ t | ƒ d k s7t ‚ nu |  d k ré t | ƒ d k s7t ‚ nN |  d	 k rt | ƒ d
 k s7t ‚ n' |  d k r7t | ƒ d k s7t ‚ n  | d j d k sPt ‚ | d j j d ƒ slt ‚ | d j d k s…t ‚ t | ƒ d
 k rè| d j d k s°t ‚ | d j j d ƒ sÌt ‚ | d j d k sèt ‚ n  t | ƒ d k rK| d
 j d k st ‚ | d
 j j d ƒ s/t ‚ | d
 j d k sKt ‚ n  t | ƒ d k r®| d j d k svt ‚ | d j j d ƒ s’t ‚ | d j d k s®t ‚ n  d  S(   Nu   Error messageu   Warning messageu   Information messageu   Debug messageu   DEBUGi   u   INFOi   u   WARNi   u   ERRORi   i    u   astropy.tests.test_loggeru   WARNING(   R   t   levelR   t   setLevelR$   t   errort   warningt   infot   debugR   t	   log_levelR&   R   R(   R'   R)   R*   (   RU   t
   orig_levelR,   (    (    s8   lib/python2.7/site-packages/astropy/tests/test_logger.pyt   test_log_to_list'  sF    	c          C` sd   t  j d d ƒ ! }  t  j d ƒ t  j d ƒ Wd  QXt |  ƒ d k rZ |  d j d k s` t ‚ d  S(   Nt   filter_levelu   ERRORu   Error messageu   Warning messagei   i    (   R   R$   RW   RX   R&   R(   R   (   R,   (    (    s8   lib/python2.7/site-packages/astropy/tests/test_logger.pyt   test_log_to_list_level\  s    c          C` sQ   t  j d d ƒ ! }  t  j d ƒ t  j d ƒ Wd  QXt |  ƒ d k sM t ‚ d  S(   Nt   filter_originu   astropy.testsu   Error messageu   Warning messagei   (   R   R$   RW   RX   R&   R   (   R,   (    (    s8   lib/python2.7/site-packages/astropy/tests/test_logger.pyt   test_log_to_list_origin1e  s    c          C` sQ   t  j d d ƒ ! }  t  j d ƒ t  j d ƒ Wd  QXt |  ƒ d k sM t ‚ d  S(   NR`   u   astropy.wcsu   Error messageu   Warning messagei    (   R   R$   RW   RX   R&   R   (   R,   (    (    s8   lib/python2.7/site-packages/astropy/tests/test_logger.pyt   test_log_to_list_origin2n  s    c         C` sr  |  j  d ƒ } | j d ƒ } t | j ƒ  ƒ } t j } zt | d  k	 rX t j | ƒ n  t j | ƒ 9 t j	 d ƒ t j
 d ƒ t j d ƒ t j d ƒ Wd  QX| j ƒ  Wd  t j | ƒ X| j d ƒ } | j ƒ  } | j ƒ  | d  k rû t j } n  | d k r"t | ƒ d	 k s—t ‚ nu | d
 k rIt | ƒ d k s—t ‚ nN | d k rpt | ƒ d k s—t ‚ n' | d k r—t | ƒ d k s—t ‚ n  t | d j ƒ  ƒ d d k s½t ‚ t | ƒ d k røt | d j ƒ  ƒ d d k søt ‚ n  t | ƒ d k r3t | d j ƒ  ƒ d d k s3t ‚ n  t | ƒ d	 k rnt | d j ƒ  ƒ d d k snt ‚ n  d  S(   Nu   test.logu   wbu   Error messageu   Warning messageu   Information messageu   Debug messageu   rbu   DEBUGi   u   INFOi   u   WARNi   u   ERRORi   i    iýÿÿÿu   astropy.tests.test_loggeru   WARNING(   u   astropy.tests.test_loggeru   ERRORu   Error message(   u   astropy.tests.test_loggeru   WARNINGu   Warning message(   u   astropy.tests.test_loggeru   INFOu   Information message(   u   astropy.tests.test_loggeru   DEBUGu   Debug message(   t   joint   opent   strt   realpathR   RU   R   RV   t   log_to_fileRW   RX   RY   RZ   t   closet	   readlinesR   R[   R&   R   t   evalt   strip(   t   tmpdirRU   t
   local_patht   log_filet   log_pathR\   t   log_entries(    (    s8   lib/python2.7/site-packages/astropy/tests/test_logger.pyt   test_log_to_filew  sL    	
c         C` s×   |  j  d ƒ } | j d ƒ } t | j ƒ  ƒ } t j | d d ƒ t j d ƒ t j d ƒ Wd  QX| j ƒ  | j d ƒ } | j	 ƒ  } | j ƒ  t
 | ƒ d k s­ t ‚ t | d	 j ƒ  ƒ d
 d k sÓ t ‚ d  S(   Nu   test.logu   wbR^   u   ERRORu   Error messageu   Warning messageu   rbi   i    iþÿÿÿ(   u   ERRORu   Error message(   Rc   Rd   Re   Rf   R   Rg   RW   RX   Rh   Ri   R&   R   Rj   Rk   (   Rl   Rm   Rn   Ro   Rp   (    (    s8   lib/python2.7/site-packages/astropy/tests/test_logger.pyt   test_log_to_file_level±  s    

c         C` s±   |  j  d ƒ } | j d ƒ } t | j ƒ  ƒ } t j | d d ƒ t j d ƒ t j d ƒ Wd  QX| j ƒ  | j d ƒ } | j	 ƒ  } | j ƒ  t
 | ƒ d k s­ t ‚ d  S(	   Nu   test.logu   wbR`   u   astropy.testsu   Error messageu   Warning messageu   rbi   (   Rc   Rd   Re   Rf   R   Rg   RW   RX   Rh   Ri   R&   R   (   Rl   Rm   Rn   Ro   Rp   (    (    s8   lib/python2.7/site-packages/astropy/tests/test_logger.pyt   test_log_to_file_origin1Æ  s    

c         C` s±   |  j  d ƒ } | j d ƒ } t | j ƒ  ƒ } t j | d d ƒ t j d ƒ t j d ƒ Wd  QX| j ƒ  | j d ƒ } | j	 ƒ  } | j ƒ  t
 | ƒ d k s­ t ‚ d  S(	   Nu   test.logu   wbR`   u   astropy.wcsu   Error messageu   Warning messageu   rbi    (   Rc   Rd   Re   Rf   R   Rg   RW   RX   Rh   Ri   R&   R   (   Rl   Rm   Rn   Ro   Rp   (    (    s8   lib/python2.7/site-packages/astropy/tests/test_logger.pyt   test_log_to_file_origin2Ù  s    

(7   t
   __future__R    R   R   R   R
   R   R   R   t   helperR   t    R   t   loggerR   R   t   utils.exceptionsR   R	   t   __excepthook__t   _excepthookR"   t   _showwarningt   get_ipythont   ipt	   NameErrorR   R   t   teardown_moduleR   R    R#   R-   R1   R6   R>   R?   RA   t   markt   skipifRe   RF   t   xfailRK   RR   RT   t   parametrizeR]   R_   Ra   Rb   Rq   Rr   Rs   Rt   (    (    (    s8   lib/python2.7/site-packages/astropy/tests/test_logger.pyt   <module>   sN   "		
					-						!	!*!$-5						-:		