a
    0a                     @   s   d Z ddlZddlZddlmZ ddlmZmZmZ G dd de	Z
G dd deZe
Zi feeeef ee eeef dd	d
dZG dd dZG dd deZdS )z
    sphinx.deprecation
    ~~~~~~~~~~~~~~~~~~

    Sphinx deprecation classes and utilities.

    :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    N)import_module)AnyDictTypec                   @   s   e Zd ZdS )RemovedInSphinx50WarningN__name__
__module____qualname__ r   r   1lib/python3.9/site-packages/sphinx/deprecation.pyr      s   r   c                   @   s   e Zd ZdS )RemovedInSphinx60WarningNr   r   r   r   r   r      s   r   )modnameobjectswarningnamesreturnc                 C   s"   t | }t|| |||tj| < d S N)r   _ModuleWrappersysmodules)r   r   r   r   moduler   r   r   deprecated_alias   s    
r   c                   @   sH   e Zd Zeeeeef ee eeef ddddZ	eedddZ
dS )r   N)r   r   r   r   r   r   c                 C   s"   || _ || _|| _|| _|| _d S r   )_module_modname_objects_warning_names)selfr   r   r   r   r   r   r   r   __init__$   s
    z_ModuleWrapper.__init__)namer   c                 C   sr   || j vrt| j|S | j|d }|d urLtjd| j||| j	dd ntjd| j|| j	dd | j | S )Nz^The alias '{}.{}' is deprecated, use '{}' instead. Check CHANGES for Sphinx API modifications.   
stacklevelz@{}.{} is deprecated. Check CHANGES for Sphinx API modifications.)
r   getattrr   r   getwarningswarnformatr   r   )r   r    Zcanonical_namer   r   r   __getattr__.   s     
z_ModuleWrapper.__getattr__)r   r	   r
   r   strr   objectr   Warningr   r)   r   r   r   r   r   #   s   

r   c                       s   e Zd ZdZeeee dd fddZee	dd fddZ
dee	e	d	 fd
dZedd fddZdee	e	d	 fddZedd fddZ  ZS )DeprecatedDictz-A deprecated dict which warns on each access.N)datamessager   r   c                    s   || _ || _t | d S r   )r/   r   superr   )r   r.   r/   r   	__class__r   r   r   B   s    zDeprecatedDict.__init__)keyvaluer   c                    s&   t j| j| jdd t || d S N   r"   )r&   r'   r/   r   r0   __setitem__)r   r3   r4   r1   r   r   r7   G   s    zDeprecatedDict.__setitem__)r3   defaultr   c                    s"   t j| j| jdd t ||S r5   )r&   r'   r/   r   r0   
setdefaultr   r3   r8   r1   r   r   r9   K   s    zDeprecatedDict.setdefault)r3   r   c                    s    t j| j| jdd t |S r5   )r&   r'   r/   r   r0   __getitem__)r   r3   r1   r   r   r;   O   s    zDeprecatedDict.__getitem__c                    s"   t j| j| jdd t ||S r5   )r&   r'   r/   r   r0   r%   r:   r1   r   r   r%   S   s    zDeprecatedDict.get)otherr   c                    s$   t j| j| jdd t | d S r5   )r&   r'   r/   r   r0   update)r   r<   r1   r   r   r=   W   s    zDeprecatedDict.update)N)N)r   r	   r
   __doc__r   r*   r   r,   r   r   r7   r9   r;   r%   r=   __classcell__r   r   r1   r   r-   ?   s   r-   )r>   r   r&   	importlibr   typingr   r   r   DeprecationWarningr   PendingDeprecationWarningr   ZRemovedInNextVersionWarningr*   r+   r,   r   r   dictr-   r   r   r   r   <module>   s   
