B
    .Kc                 @   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
   1lib/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   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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   r/   r0   )r.   r
   r   r2   ?   s    zDeprecatedDict.__setitem__)r/   defaultr   c                s"   t j| j| jdd t ||S )Nr1   )r    )r#   r$   r,   r   r-   
setdefault)r   r/   r3   )r.   r
   r   r4   C   s    zDeprecatedDict.setdefault)r/   r   c                s    t j| j| jdd t |S )Nr1   )r    )r#   r$   r,   r   r-   __getitem__)r   r/   )r.   r
   r   r5   G   s    zDeprecatedDict.__getitem__c                s"   t j| j| jdd t ||S )Nr1   )r    )r#   r$   r,   r   r-   r"   )r   r/   r3   )r.   r
   r   r"   K   s    zDeprecatedDict.get)otherr   c                s$   t j| j| jdd t | d S )Nr1   )r    )r#   r$   r,   r   r-   update)r   r6   )r.   r
   r   r7   O   s    zDeprecatedDict.update)N)N)r   r   r	   __doc__r   r'   r   r   r)   r   r2   r4   r5   r"   r7   __classcell__r
   r
   )r.   r   r*   7   s   $r*   )r8   r   r#   	importlibr   typingr   r   r   DeprecationWarningr   PendingDeprecationWarningr   ZRemovedInNextVersionWarningr'   r(   r)   r   r   r*   r
   r
   r
   r   <module>   s   .