
vÅÏ^  ã               @   s    d  d l  Z  d  d l Z Gd d „  d e ƒ Z Gd d „  d e ƒ Z e Z Gd d „  d ƒ Z Gd d	 „  d	 e ƒ Z	 Gd
 d „  d e ƒ Z
 Gd d „  d ƒ Z d S)é    Nc               @   s   e  Z d  Z d S)ÚRemovedInDjango31WarningN)Ú__name__Ú
__module__Ú__qualname__© r   r   ú:/tmp/pip-build-8lau8j11/django/django/utils/deprecation.pyr      s   r   c               @   s   e  Z d  Z d S)ÚRemovedInDjango40WarningN)r   r   r   r   r   r   r   r   	   s   r   c               @   s(   e  Z d  Z d d „  Z d d „  Z d S)Úwarn_about_renamed_methodc             C   s(   | |  _  | |  _ | |  _ | |  _ d  S)N)Ú
class_nameÚold_method_nameÚnew_method_nameÚdeprecation_warning)Úselfr
   r   r   r   r   r   r   Ú__init__   s    			z"warn_about_renamed_method.__init__c                s   ‡  ‡ f d d †  } | S)Nc                 s9   t  j d ˆ j ˆ j ˆ j f ˆ j d ƒ ˆ  |  | Ž  S)Nz(`%s.%s` is deprecated, use `%s` instead.é   )ÚwarningsÚwarnr
   r   r   r   )ÚargsÚkwargs)Úfr   r   r   Úwrapped   s
    z3warn_about_renamed_method.__call__.<locals>.wrappedr   )r   r   r   r   )r   r   r   Ú__call__   s    z"warn_about_renamed_method.__call__N)r   r   r   r   r   r   r   r   r   r	      s   r	   c                   s.   e  Z d  Z d Z f  Z ‡  f d d †  Z ‡  S)ÚRenameMethodsBasea#  
    Handles the deprecation paths when renaming a method.

    It does the following:
        1) Define the new method if missing and complain about it.
        2) Define the old method if missing.
        3) Complain whenever an old method is called.

    See #15363 for more details.
    c                s  t  ƒ  j |  | | | ƒ } xû t j | ƒ D]ê } | j } xØ |  j D]Í } | d } | j j | ƒ }	 | d }
 | j j |
 ƒ } | d } t | | Œ } | rî |	 rî t	 j
 d | | |
 f | d ƒ t | |
 |	 ƒ t | | | |	 ƒ ƒ |	 rD | rD t | | | | ƒ ƒ qD Wq+ W| S)Nr   é   r   z&`%s.%s` method should be renamed `%s`.)ÚsuperÚ__new__ÚinspectZgetmror   Úrenamed_methodsÚ__dict__Úgetr	   r   r   Úsetattr)ÚclsÚnameÚbasesÚattrsÚ	new_classÚbaser
   Zrenamed_methodr   Z
old_methodr   Z
new_methodr   Úwrapper)Ú	__class__r   r   r   /   s(    	



zRenameMethodsBase.__new__)r   r   r   Ú__doc__r   r   r   r   )r(   r   r   !   s   
r   c                   s"   e  Z d  Z ‡  f d d †  Z ‡  S)ÚDeprecationInstanceCheckc                s6   t  j d |  j |  j f |  j d ƒ t ƒ  j | ƒ S)Nz%`%s` is deprecated, use `%s` instead.r   )r   r   r   Úalternativer   r   Ú__instancecheck__)r   Úinstance)r(   r   r   r,   M   s    z*DeprecationInstanceCheck.__instancecheck__)r   r   r   r,   r   r   )r(   r   r*   L   s   r*   c                   s1   e  Z d  Z d ‡  f d d † Z d d „  Z ‡  S)ÚMiddlewareMixinNc                s   | |  _  t ƒ  j ƒ  d  S)N)Úget_responser   r   )r   r/   )r(   r   r   r   V   s    	zMiddlewareMixin.__init__c             C   s^   d  } t  |  d ƒ r$ |  j | ƒ } | p6 |  j | ƒ } t  |  d ƒ rZ |  j | | ƒ } | S)NÚprocess_requestÚprocess_response)Úhasattrr0   r/   r1   )r   ÚrequestÚresponser   r   r   r   Z   s    zMiddlewareMixin.__call__)r   r   r   r   r   r   r   )r(   r   r.   U   s   r.   )r   r   ÚDeprecationWarningr   ÚPendingDeprecationWarningr   ZRemovedInNextVersionWarningr	   Útyper   r*   r.   r   r   r   r   Ú<module>   s   +	