File: //usr/lib/python3/dist-packages/django/utils/__pycache__/deprecation.cpython-310.pyc
o
3�aN � @ s� d dl Z d dlZd dlZd dlmZ G dd� de�ZG dd� de�ZeZ G dd� d�Z
G d d
� d
e�ZG dd� de�Z
G d
d� d�ZdS )� N)�
sync_to_asyncc @ � e Zd ZdS )�RemovedInDjango40WarningN��__name__�
__module__�__qualname__� r r �:/usr/lib/python3/dist-packages/django/utils/deprecation.pyr � r c @ r )�RemovedInDjango41WarningNr r r r r
r r r c @ s e Zd Zdd� Zdd� ZdS )�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 � �fdd�}|S )Nc s. t �d�j�j�jf �jd� � | i |��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
�__call__ s z"warn_about_renamed_method.__call__N)r r r r r r r r r
r
s r
c s$ e Zd ZdZdZ� fdd�Z� ZS )�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.
r c s� t � �| |||�}t�|�D ]U}|j}| jD ]L}|d }|j�|�} |d }
|j�|
�}|d }t|g|�R � }
|sV| rVt �
d|||
f |d� t||
| � t|||
| �� | sb|rbt|||
|�� qq|S )Nr � r z&`%s.%s` method should be renamed `%s`.)�super�__new__�inspect�getmror �renamed_methods�__dict__�getr
r r �setattr)�cls�name�bases�attrs� new_class�baser �renamed_methodr �
old_methodr �
new_methodr �wrapper�� __class__r r
r! 2 s0
����zRenameMethodsBase.__new__)r r r �__doc__r$ r! �
__classcell__r r r2 r
r $ s r c s e Zd Z� fdd�Z� ZS )�DeprecationInstanceCheckc s( t �d| j| jf | jd� t� �|�S )Nz%`%s` is deprecated, use `%s` instead.r )r r r �alternativer r �__instancecheck__)r �instancer2 r r
r8 P s
�z*DeprecationInstanceCheck.__instancecheck__)r r r r8 r5 r r r2 r
r6 O s r6 c sF e Zd ZdZdZd
� fdd� Zdd� Zdd� Zd d
� Zdd� Z � Z
S )�MiddlewareMixinTNc s&