File: //opt/saltstack/salt/lib/python3.10/site-packages/cherrypy/lib/__pycache__/gctools.cpython-310.pyc
o
�N�g� � @ s� d dl Z d dlZd dlZd dlZzd dlZW n ey! dZY nw d dlZd dlmZmZ d dl m
Z
G dd� de�Zdd� Z
G dd � d e
�Zeej�Ze�� d
d� ZG dd
� d
e�ZdS )� N)�
_cprequest�_cpwsgi)�SimplePluginc @ sB e Zd ZdZdZddd�Zdd d
�Zdd� Zddd�Zdd� Z dS )�ReferrerTreezDAn object which gathers all referrers of an object to a given depth.�( N� �
c C s, |pg | _ | j �t�� j� || _|| _d S )N)�ignore�append�inspect�currentframe�f_back�maxdepth�
maxparents)�selfr r r � r �H/opt/saltstack/salt/lib/python3.10/site-packages/cherrypy/lib/gctools.py�__init__ s
zReferrerTree.__init__� c C s� |d7 }g }t �|�}| j�|� t|�| jkr!dt|� g fgS z| jj}W n ty5 | jj j
}Y nw |D ]+}t�|�rE|j
|u rEq8|| jv rKq8|| jkr\|�|| �||�f� q8|�|g f� q8|S )z>Return a nested list containing referrers of the given object.r z[%s referrers])�gcZ
get_referrersr r
�lenr �ascend�__code__�AttributeErrorZim_funcZ func_coder �isframe�f_coder )r �obj�depth�parentsZrefsZ
ascendcode�parentr r r r s(
�
zReferrerTree.ascendc C s>