a
�`�# � @ sp d dl mZ d dlmZ dZdZdZdZddd �Zdd
d�Z G dd
� d
e
�ZG dd� de�ZG dd� de�Z
dS )� )� iteritems)�NodeVisitor�param�resolve�aliasZ undefinedNc C s* t |d�}t|�}| D ]}|�|� q|S �N)�parent)�Symbols�FrameSymbolVisitor�visit)�nodes�parent_symbols�sym�visitor�node� r �5/usr/lib/python3.9/site-packages/jinja2/idtracking.py�find_symbols
s
r c C s t |d�}|�| � |S r )r �analyze_node)r r
r r r r �symbols_for_node s
r c @ sx e Zd Zddd�Zdd� Zddd�Zdd � Zd
d� Zdd
� Zdd� Z dd� Z
dd� Zdd� Zdd� Z
dd� Zdd� ZdS )r Nc C sD |d u r |d u rd}n
|j d }|| _ || _i | _i | _t� | _d S )N� r )�levelr �refs�loads�set�stores)�selfr r r r r �__init__ s
zSymbols.__init__c K s t | �}|j|fi |�� d S �N)�RootVisitorr )r r �kwargsr r r r r % s zSymbols.analyze_nodec C s. d| j |f }|| j|<