unlisted
ubuntu2004a
��c � @ sP d Z ddlmZ ddlZddlmZ dd� Zddd �ZG d
d� d�Zdd
� Z dS )z}
Convenience tools for handling deprecations.
Most of the code is taken from the SageMath source code in misc/superseded.py
� )�warnN)�lazy_attributec C s
d� | �S )Nz=https://gitlab.com/modulispaces/admcycles/-/merge_requests/{})�format)�num� r �8/home/user/Introduction lectures/admcycles/superseded.py�merge_request_url s r � c C s* |d7 }|d� t| ��7 }t|t|� d S )N�
zSee {} for details.)r r r �DeprecationWarning)�
merge_request�message�
stacklevelr r r �deprecation s r c @ s8 e Zd ZdZddd�Zedd� �Z dd� Zdd d
�ZdS )
�DeprecatedFunctionAliasze
A wrapper around methods or functions which automatically prints a
deprecation message.
Nc C s� z| j �|j � W n ty$ Y n0 || _|| _|| _|| _|| _t|t t
��rXd}nd}d}|d| d | jj d 7 }|d�t
|��7 }|| _d S )N�func�methzDeprecated: zUse :z:`z` instead.
zSee {} for details.
)�__dict__�update�AttributeErrorr r �instance�unbound�
__module__�
isinstance�typer �__name__r r �__doc__)�selfr r �moduler r �
sphinxrole�docr r r �__init__, s z DeprecatedFunctionAlias.__init__c C s� t �� D ]0}|d j�� D ]\}}|| u r| S qqdd l}dd l}|�� dd� }| jd u rh| n| j}|�|�D ]F}||�rx|| j urx|�|�} | �� D ]\}
}||u r�|
S q�qxt
d��d S )Nr c S s. t | t�sdS d| v pd| v }d| v }|p,|S )NFr �__package__�__new__)r �dict)�gc_ref�is_python_class�is_cython_classr r r �is_classK s
z2DeprecatedFunctionAlias.__name__.<locals>.is_classz9The name of this deprecated function cannot be determined)�inspect�stack� f_globals�items�gc�copy�collectr �
get_referrersr r )r �frame�name�objr- r. r( �
search_for�ref�ref_copy�key�valr r r r ? s
z DeprecatedFunctionAlias.__name__c O s� | j d u r.| j| jjkr.| jjd | jj }n| jj}t| jd�| j|�� | j d u rf| j|i |��S | j| j g|�R i |��S d S )N�.z({} is deprecated. Please use {} instead.)r r r r r r r )r �args�kwds�otherr r r �__call__Z s ��
z DeprecatedFunctionAlias.__call__c C s( |d u r| S t | j| j| j|| d�S d S )N)r r )r r r r )r �inst�clsr r r �__get__h s
�zDeprecatedFunctionAlias.__get__)NN)N)r r �__qualname__r r! r r= r@ r r r r r &