B
    d                 @   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eef ZdS )z)Sphinx deprecation classes and utilities.    N)import_module)AnyDictTypec               @   s   e Zd ZdS )RemovedInSphinx60WarningN)__name__
__module____qualname__ r
   r
   _/work/yifan.wang/ringdown/master-ringdown-env/lib/python3.7/site-packages/sphinx/deprecation.pyr   	   s   r   c               @   s   e Zd ZdS )RemovedInSphinx70WarningN)r   r   r	   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 )N)_module_modname_objects_warning_names)selfr   r   r   r   r   r
   r
   r   __init__   s
    z_ModuleWrapper.__init__)namer   c             C   sr   || j krt| j|S | j|d }|d k	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   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f 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ed fddZdeeed	 fddZeeef 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 )N)r-   r   superr   )r   r,   r-   r   )	__class__r
   r   r   :   s    zDeprecatedDict.__init__)keyvaluer   c                s&   t j| j| jdd t || d S )N   )r    )r#   r$   r-   r   r.   __setitem__)r   r0   r1   )r/   r
   r   r3   ?   s    zDeprecatedDict.__setitem__)r0   defaultr   c                s"   t j| j| jdd t ||S )Nr2   )r    )r#   r$   r-   r   r.   
setdefault)r   r0   r4   )r/   r
   r   r5   C   s    zDeprecatedDict.setdefault)r0   r   c                s    t j| j| jdd t |S )Nr2   )r    )r#   r$   r-   r   r.   __getitem__)r   r0   )r/   r
   r   r6   G   s    zDeprecatedDict.__getitem__c                s"   t j| j| jdd t ||S )Nr2   )r    )r#   r$   r-   r   r.   r"   )r   r0   r4   )r/   r
   r   r"   K   s    zDeprecatedDict.get)otherr   c                s$   t j| j| jdd t | d S )Nr2   )r    )r#   r$   r-   r   r.   update)r   r7   )r/   r
   r   r8   O   s    zDeprecatedDict.update)N)N)r   r   r	   __doc__r   r(   r   r   r*   r   r3   r5   r6   r"   r8   __classcell__r
   r
   )r/   r   r+   7   s   $r+   )r9   r   r#   	importlibr   typingr   r   r   DeprecationWarningr   PendingDeprecationWarningr   ZRemovedInNextVersionWarningr(   r)   r*   r   r   r+   r
   r
   r
   r   <module>   s   .