σ
η'ΚUc           @@  sκ   d  d l  m Z d  d l Z d  d l Z d  d l Z d  d l m Z m Z d  d l m	 Z	 d e
 f d     YZ d e f d     YZ d	 e f d
     YZ d e j f d     YZ e	 j d d d g  d e j f d     Y Z d S(   i    (   t   absolute_importN(   t   create_deprecated_classt   update_classpath(   t   mockt	   MyWarningc           B@  s   e  Z RS(    (   t   __name__t
   __module__(    (    (    s>   /home/travis/build/scrapy/scrapy/tests/test_utils_deprecate.pyR      s   t   SomeBaseClassc           B@  s   e  Z RS(    (   R   R   (    (    (    s>   /home/travis/build/scrapy/scrapy/tests/test_utils_deprecate.pyR      s   t   NewNamec           B@  s   e  Z RS(    (   R   R   (    (    (    s>   /home/travis/build/scrapy/scrapy/tests/test_utils_deprecate.pyR      s   t   WarnWhenSubclassedTestc           B@  s   e  Z e d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d   Z d	   Z d
   Z d   Z d   Z d   Z RS(   c         C@  s&   g  | D] } | j  t k r | ^ q S(   N(   t   categoryR   (   t   selft   wR
   t   x(    (    s>   /home/travis/build/scrapy/scrapy/tests/test_utils_deprecate.pyt   _mywarnings   s    c         C@  sM   t  j d t   } t d t  } Wd  QX|  j |  } |  j | g   d  S(   Nt   recordt
   Deprecated(   t   warningst   catch_warningst   TrueR   R   R   t   assertEqual(   R   R   R   (    (    s>   /home/travis/build/scrapy/scrapy/tests/test_utils_deprecate.pyt   test_no_warning_on_definition   s    c         C@  s°   t  d t d t } t j d t   } d | f d     Y} Wd  QX|  j |  } |  j t |  d  |  j t	 | d j
  d  |  j | d j t j |  d  d  S(	   NR   t   warn_categoryR   t	   UserClassc           B@  s   e  Z RS(    (   R   R   (    (    (    s>   /home/travis/build/scrapy/scrapy/tests/test_utils_deprecate.pyR   (   s   i   i    sΨ   tests.test_utils_deprecate.UserClass inherits from deprecated class tests.test_utils_deprecate.Deprecated, please inherit from tests.test_utils_deprecate.NewName. (warning only on first subclass, there may be others)(   R   R   R   R   R   R   R   R   t   lent   strt   messaget   linenot   inspectt   getsourcelines(   R   R   R   R   (    (    s>   /home/travis/build/scrapy/scrapy/tests/test_utils_deprecate.pyt    test_subclassing_warning_message#   s    	c      	   C@  sψ   t  d t d d d d d t } t j d t  & } d | f d	     Y} |   } Wd  QX|  j |  } |  j t |  d
  |  j	 d t
 | d j   |  j	 d t
 | d j   |  j	 d t
 | d j   |  j	 d t
 | d j   d  S(   NR   t   new_class_paths   foo.NewClasst   old_class_paths   bar.OldClassR   R   R   c           B@  s   e  Z RS(    (   R   R   (    (    (    s>   /home/travis/build/scrapy/scrapy/tests/test_utils_deprecate.pyR   =   s   i   i    i   (   R   R   R   R   R   R   R   R   R   t   assertInR   R   (   R   R   R   R   t   _(    (    s>   /home/travis/build/scrapy/scrapy/tests/test_utils_deprecate.pyt   test_custom_class_paths6   s    	c         C@  s¨   t  d t d t d t } t j d t  3 } d | f d     Y} d | f d     Y} Wd  QX|  j |  } |  j t	 |  d	  |  j
 d t | d
 j   d  S(   NR   t	   warn_onceR   R   R   c           B@  s   e  Z RS(    (   R   R   (    (    (    s>   /home/travis/build/scrapy/scrapy/tests/test_utils_deprecate.pyR   O   s   t
   NoWarnOnMec           B@  s   e  Z RS(    (   R   R   (    (    (    s>   /home/travis/build/scrapy/scrapy/tests/test_utils_deprecate.pyR%   R   s   i   i    (   R   R   t   FalseR   R   R   R   R   R   R   R!   R   R   (   R   R   R   R   R%   (    (    s>   /home/travis/build/scrapy/scrapy/tests/test_utils_deprecate.pyt,   test_subclassing_warns_only_on_direct_childsI   s    	c         C@  sΈ   t  d t d t } t j d t  I } d | f d     Y} d | f d     Y} d | f d	     Y} Wd  QX|  j |  } |  j t |  d
  |  j	 d t
 | d j   d  S(   NR   R   R   R   c           B@  s   e  Z RS(    (   R   R   (    (    (    s>   /home/travis/build/scrapy/scrapy/tests/test_utils_deprecate.pyR   ^   s   t   FooClassc           B@  s   e  Z RS(    (   R   R   (    (    (    s>   /home/travis/build/scrapy/scrapy/tests/test_utils_deprecate.pyR(   a   s   t   BarClassc           B@  s   e  Z RS(    (   R   R   (    (    (    s>   /home/travis/build/scrapy/scrapy/tests/test_utils_deprecate.pyR)   d   s   i   i    (   R   R   R   R   R   R   R   R   R   R!   R   R   (   R   R   R   R   R(   R)   (    (    s>   /home/travis/build/scrapy/scrapy/tests/test_utils_deprecate.pyt&   test_subclassing_warns_once_by_defaultY   s    	c         C@  sδ   t  d t d t } t j d t   d | f d     Y} Wd  QXt j d t  / } |   t j t j    } } |   } Wd  QX|  j	 |  } |  j
 t |  d  |  j
 t | d j  d  |  j
 | d j |  d  S(	   NR   R   R   R   c           B@  s   e  Z RS(    (   R   R   (    (    (    s>   /home/travis/build/scrapy/scrapy/tests/test_utils_deprecate.pyR   q   s   i   i    sl   tests.test_utils_deprecate.Deprecated is deprecated, instantiate tests.test_utils_deprecate.NewName instead.(   R   R   R   R   R   R   R   t	   getlinenot   currentframeR   R   R   R   R   R   (   R   R   R   R   R"   R   (    (    s>   /home/travis/build/scrapy/scrapy/tests/test_utils_deprecate.pyt   test_warning_on_instancek   s    	c         C@  sw   t  j d t  , } t d t  } d | f d     Y} Wd  QXt | d j  } |  j d |  |  j d |  d  S(   NR   R   t
   UserClass2c           B@  s   e  Z RS(    (   R   R   (    (    (    s>   /home/travis/build/scrapy/scrapy/tests/test_utils_deprecate.pyR.      s   i    s"   tests.test_utils_deprecate.NewNames%   tests.test_utils_deprecate.Deprecated(   R   R   R   R   R   R   R   R!   (   R   R   R   R.   t   msg(    (    s>   /home/travis/build/scrapy/scrapy/tests/test_utils_deprecate.pyt   test_warning_auto_message   s    c         C@  s  t  j d t   t d t  } d t f d     Y} d t f d     Y} d | f d     Y} d	 | f d
     Y} d t f d     Y} d d d     Y} Wd  QXt | t  sΎ t  t | t  sΣ t  t | |  sθ t  t | |  sύ t  t | |  st  t | |  s(t  t | |  s>t  t | |  sTt  t | |  sjt  t | |  st  |  j t	 t t   |  d  S(   NR   t   DeprecatedNamet   UpdatedUserClass1c           B@  s   e  Z RS(    (   R   R   (    (    (    s>   /home/travis/build/scrapy/scrapy/tests/test_utils_deprecate.pyR2      s   t   UpdatedUserClass1ac           B@  s   e  Z RS(    (   R   R   (    (    (    s>   /home/travis/build/scrapy/scrapy/tests/test_utils_deprecate.pyR3      s   t   OutdatedUserClass1c           B@  s   e  Z RS(    (   R   R   (    (    (    s>   /home/travis/build/scrapy/scrapy/tests/test_utils_deprecate.pyR4      s   t   OutdatedUserClass1ac           B@  s   e  Z RS(    (   R   R   (    (    (    s>   /home/travis/build/scrapy/scrapy/tests/test_utils_deprecate.pyR5      s   t   UnrelatedClassc           B@  s   e  Z RS(    (   R   R   (    (    (    s>   /home/travis/build/scrapy/scrapy/tests/test_utils_deprecate.pyR6      s   t   OldStyleClassc           B@  s   e  Z RS(    (   R   R   (    (    (    s>   /home/travis/build/scrapy/scrapy/tests/test_utils_deprecate.pyR7      s   (    (
   R   R   R   R   R   t   objectt
   issubclasst   AssertionErrort   assertRaisest	   TypeError(   R   R1   R2   R3   R4   R5   R6   R7   (    (    s>   /home/travis/build/scrapy/scrapy/tests/test_utils_deprecate.pyt   test_issubclass   s&    c         C@  s‘  t  j d t   t d t  } d t f d     Y} d t f d     Y} d | f d     Y} d	 | f d
     Y} d t f d     Y} d d d     Y} Wd  QXt |   t  sΑ t  t |   t  sΩ t  t |   |  sρ t  t |   |  s	t  t |   |  s!t  t |   |  s9t  t |   |  sRt  t |   |  skt  t |   |  st  t |   |  st  d  S(   NR   R1   t   UpdatedUserClass2c           B@  s   e  Z RS(    (   R   R   (    (    (    s>   /home/travis/build/scrapy/scrapy/tests/test_utils_deprecate.pyR>   ³   s   t   UpdatedUserClass2ac           B@  s   e  Z RS(    (   R   R   (    (    (    s>   /home/travis/build/scrapy/scrapy/tests/test_utils_deprecate.pyR?   Ά   s   t   OutdatedUserClass2c           B@  s   e  Z RS(    (   R   R   (    (    (    s>   /home/travis/build/scrapy/scrapy/tests/test_utils_deprecate.pyR@   Ή   s   t   OutdatedUserClass2ac           B@  s   e  Z RS(    (   R   R   (    (    (    s>   /home/travis/build/scrapy/scrapy/tests/test_utils_deprecate.pyRA   Ό   s   R6   c           B@  s   e  Z RS(    (   R   R   (    (    (    s>   /home/travis/build/scrapy/scrapy/tests/test_utils_deprecate.pyR6   Ώ   s   R7   c           B@  s   e  Z RS(    (   R   R   (    (    (    s>   /home/travis/build/scrapy/scrapy/tests/test_utils_deprecate.pyR7   Β   s   (    (   R   R   R   R   R   R8   t
   isinstanceR:   (   R   R1   R>   R?   R@   RA   R6   R7   (    (    s>   /home/travis/build/scrapy/scrapy/tests/test_utils_deprecate.pyt   test_isinstance―   s$    c      
   C@  sI   t  j d t   t d t i d d 6 } Wd  QX|  j | j d  d  S(   NR   R   t   bart   foo(   R   R   R   R   R   R   RE   (   R   R   (    (    s>   /home/travis/build/scrapy/scrapy/tests/test_utils_deprecate.pyt   test_clsdictΠ   s    c         C@  s:   t  d t  f i   } | d d i   } t d |  } d  S(   Nt   Meta1t   NewR   (    (   t   typeR   (   R   RG   RH   R   (    (    s>   /home/travis/build/scrapy/scrapy/tests/test_utils_deprecate.pyt,   test_deprecate_a_class_with_custom_metaclassΦ   s    c         C@  sd  t  j d t  D } t  j d  t d t d t } t d | d d d t } Wd  QX|  j |  } |  j t	 |  d t
 t t
 |    t  j d t  $ } |   d	 | f d
     Y} Wd  QX|  j |  } |  j t	 |  d  |  j d t
 | d j   |  j d t
 | d j   |  j d t
 | d j   |  j d t
 | d j   d  S(   NR   t   alwaysR   R   t   AlsoDeprecatedR   s   foo.Bari    R   c           B@  s   e  Z RS(    (   R   R   (    (    (    s>   /home/travis/build/scrapy/scrapy/tests/test_utils_deprecate.pyR   ι   s   i   i   (   R   R   R   t   simplefilterR   R   R   R   R   R   R   t   mapR!   R   (   R   R   R   RL   R   (    (    s>   /home/travis/build/scrapy/scrapy/tests/test_utils_deprecate.pyt+   test_deprecate_subclass_of_deprecated_classΫ   s$    	(c         C@  s}   t  j d d t E t j d t  , } t d t  } d | f d     Y} Wd  QXWd  QX|  j d t	 | d j
   d  S(	   Ns   inspect.stackt   side_effectR   R1   t   SubClassc           B@  s   e  Z RS(    (   R   R   (    (    (    s>   /home/travis/build/scrapy/scrapy/tests/test_utils_deprecate.pyRQ   χ   s   s   Error detecting parent modulei    (   R   t   patcht
   IndexErrorR   R   R   R   R   R!   R   R   (   R   R   R1   RQ   (    (    s>   /home/travis/build/scrapy/scrapy/tests/test_utils_deprecate.pyt   test_inspect_stackσ   s
    "(   R   R   R   R   R   R   R#   R'   R*   R-   R0   R=   RC   RF   RJ   RO   RT   (    (    (    s>   /home/travis/build/scrapy/scrapy/tests/test_utils_deprecate.pyR	      s   								#	!			s(   scrapy.utils.deprecate.DEPRECATION_RULESs   scrapy.contrib.pipeline.s   scrapy.pipelines.s   scrapy.contrib.s   scrapy.extensions.t   UpdateClassPathTestc           B@  s#   e  Z d    Z d   Z d   Z RS(   c         C@  s   t  j d t   } t d  } Wd  QX|  j | d  |  j t |  d  |  j d t | d j   |  j d t | d j   d  S(   NR   s   scrapy.contrib.debug.Debugs   scrapy.extensions.debug.Debugi   i    (	   R   R   R   R   R   R   R!   R   R   (   R   R   t   output(    (    s>   /home/travis/build/scrapy/scrapy/tests/test_utils_deprecate.pyt   test_old_path_gets_fixed  s    c         C@  s9   t  j d t   t d  } Wd  QX|  j | d  d  S(   NR   s    scrapy.contrib.pipeline.Pipelines   scrapy.pipelines.Pipeline(   R   R   R   R   R   (   R   RV   (    (    s>   /home/travis/build/scrapy/scrapy/tests/test_utils_deprecate.pyt   test_sorted_replacement
  s    c         C@  sQ   t  j d t   } t d  } Wd  QX|  j | d  |  j t |  d  d  S(   NR   s   scrapy.unmatched.Pathi    (   R   R   R   R   R   R   (   R   R   RV   (    (    s>   /home/travis/build/scrapy/scrapy/tests/test_utils_deprecate.pyt"   test_unmatched_path_stays_the_same  s    (   R   R   RW   RX   RY   (    (    (    s>   /home/travis/build/scrapy/scrapy/tests/test_utils_deprecate.pyRU   ύ   s   		(   s   scrapy.contrib.pipeline.s   scrapy.pipelines.(   s   scrapy.contrib.s   scrapy.extensions.(   t
   __future__R    R   t   unittestR   t   scrapy.utils.deprecateR   R   t   testsR   t   UserWarningR   R8   R   R   t   TestCaseR	   RR   RU   (    (    (    s>   /home/travis/build/scrapy/scrapy/tests/test_utils_deprecate.pyt   <module>   s   ζ	