OwlCyberSecurity - MANAGER
Edit File: idtracking.cpython-37.pyc
B ����^�a�)������������������@���s����d�dl�ZddlmZ�ddlmZ�dZdZdZdZ dej ej�ejd �d d �dd�Z dejejd �d d �dd�ZG�dd ��d �ZG�dd��de�ZG�dd��de�ZdS�)�����N����)�nodes)�NodeVisitor�param�resolve�aliasZ undefined�Symbols)r����parent_symbols�returnc�������������C���s.���t�|d�}t|�}x|�D�]}|�|��qW�|S�)N)�parent)r����FrameSymbolVisitor�visit)r���r ����sym�visitor�node��r����B/opt/alt/python37/lib/python3.7/site-packages/jinja2/idtracking.py�find_symbols���s ���� r���)r���r ���r ���c�������������C���s���t�|d�}|�|���|S�)N)r���)r����analyze_node)r���r ���r���r���r���r����symbols_for_node���s���� r���c���������������@���s*��e�Zd�Zd#ejd��eje�dd�dd�Zejej dd�dd�Z d$eejejeeje�f��ed�d d �Z eejej �d�dd �Zeeje�d�dd�Zeed�dd�Zd�d�dd�Zedd�dd�Zeed�dd�Zedd�dd�Zejd��dd�dd�Zejeef�d�dd �Zeje�d�d!d"�ZdS�)%r���N)r����levelr ���c�������������C���sD���|d�kr |d�krd}n |j�d�}||�_�||�_i�|�_i�|�_t��|�_d�S�)Nr���r���)r���r����refs�loads�set�stores)�selfr���r���r���r���r����__init__���s���� zSymbols.__init__)r����kwargsr ���c�������������K���s���t�|��}|j|f|��d�S�)N)�RootVisitorr ���)r���r���r���r���r���r���r���r���.���s����zSymbols.analyze_node)�name�loadr ���c�������������C���s2���d|�j���d|���}||�j|<�|d�k r.||�j|<�|S�)NZl_�_)r���r���r���)r���r���r ����identr���r���r����_define_ref2���s ���� zSymbols._define_ref)�targetr ���c�������������C���s.���||�j�kr|�j�|�S�|�jd�k r*|�j�|�S�d�S�)N)r���r���� find_load)r���r$���r���r���r���r%���;���s ���� zSymbols.find_load)r���r ���c�������������C���s.���||�j�kr|�j�|�S�|�jd�k r*|�j�|�S�d�S�)N)r���r����find_ref)r���r���r���r���r���r&���D���s ���� zSymbols.find_refc�������������C���s&���|���|�}|d�kr"td|�d���|S�)NzFTried to resolve a name to a reference that was unknown to the frame (�))r&����AssertionError)r���r����rvr���r���r����refM���s ���� zSymbols.ref)r ���c�������������C���sJ���t��tt�|�j��}|j�|�j��|�j� ��|_|�j � ��|_ |�j� ��|_|S�)N)�t�castr����object�__new__� __class__�__dict__�updater����copyr���r���)r���r)���r���r���r���r2���V���s����zSymbols.copyc�������������C���s`���|�j��|��||�jkr\|�jd�k rJ|�j�|�}|d�k rJ|�j|t|fd��d�S�|�j|td�fd��d�S�)N)r ���)r����addr���r���r&���r#����VAR_LOAD_ALIAS�VAR_LOAD_UNDEFINED)r���r���Z outer_refr���r���r����store^���s���� z Symbols.storec�������������C���s���|�j��|��|�j|td�fd�S�)N)r ���)r���r3���r#����VAR_LOAD_PARAMETER)r���r���r���r���r����declare_parameterp���s����zSymbols.declare_parameterc�������������C���s$���|���|�d�kr |�j|t|fd��d�S�)N)r ���)r&���r#����VAR_LOAD_RESOLVE)r���r���r���r���r���r ���t���s����zSymbols.load)�branch_symbolsr ���c������� ������C���s����i�}x<|D�]4}x.|j�D�]$}||�j�kr&q|�|d�d�||<�qW�q W�x6|D�].}|�j�|j��|�j�|j��|�j��|j���qHW�xx|���D�]l\}}|t|�kr�q�|��|�}|d�k s�td��|�j d�k r�|�j �|�}|d�k r�t |f|�j|<�q�t|f|�j|<�q�W�d�S�)Nr���r���zshould not happen)r����getr���r1���r����items�lenr&���r(���r���r4���r9���) r���r:���r����branchr$���r���r���Zbranch_countZouter_targetr���r���r���� branch_updatex���s*���� zSymbols.branch_updatec�������������C���sJ���i�}|�}x<|d�k rDx(t�|j�D�]}||kr|��|�||<�qW�|j}q W�|S�)N)�sortedr���r&���r���)r���r)���r���r���r���r���r����dump_stores����s���� zSymbols.dump_storesc�������������C���sP���t���}|�}x@|d�k rJx,|�j���D�]\}\}}|tkr |�|��q W�|j}qW�|S�)N)r���r���r<���r7���r3���r���)r���r)���r���r$����instrr!���r���r���r����dump_param_targets����s���� zSymbols.dump_param_targets)NN)N)�__name__� __module__�__qualname__r+����Optional�intr���r����Node�Anyr����str�Tupler#���r%���r&���r*���r2���r6���r8���r ����Sequencer?����DictrA����SetrC���r���r���r���r���r������s��� c���������������@���s����e�Zd�Zddd�dd�Zejejdd�dd�ZeZ eZ eZeZeZ eZeZejejdd�d d �Zejejdd�dd�Zejejdd�d d�Zdejeejdd�dd�Zejejdd�dd�Zejejejdd�dd�ZdS�)r���r���N)�symbolsr ���c�������������C���s���t�|�|�_d�S�)N)r����sym_visitor)r���rP���r���r���r���r�������s����zRootVisitor.__init__)r���r���r ���c�������������K���s"���x|����D�]}|�j�|��q W�d�S�)N)�iter_child_nodesrQ���r ���)r���r���r����childr���r���r���� _simple_visit����s����zRootVisitor._simple_visitc�������������K���s ���x|j�D�]}|�j�|��qW�d�S�)N)�bodyrQ���r ���)r���r���r���rS���r���r���r����visit_AssignBlock����s����zRootVisitor.visit_AssignBlockc�������������K���s&���x |j�dd�D�]}|�j�|��qW�d�S�)N)�call)�exclude)rR���rQ���r ���)r���r���r���rS���r���r���r����visit_CallBlock����s����zRootVisitor.visit_CallBlockc�������������K���s ���x|j�D�]}|�j�|��qW�d�S�)N)rU���rQ���r ���)r���r���r���rS���r���r���r����visit_OverlayScope����s����zRootVisitor.visit_OverlayScoperU���)r���� for_branchr���r ���c�������������K���s����|dkr"|�j�j|jdd��|j}nN|dkr2|j}n>|dkrh|�j�j|jdd��|jd�k rd|�j��|j��d�S�td��|r�x|D�]}|�j��|��qzW�d�S�)NrU���T)�store_as_param�else�testzUnknown for branch)rQ���r ���r$���rU����else_r^����RuntimeError)r���r���r[���r���r>����itemr���r���r���� visit_For����s���� zRootVisitor.visit_Forc�������������K���s<���x|j�D�]}|�j�|��qW�x|jD�]}|�j�|��q$W�d�S�)N)�targetsrQ���r ���rU���)r���r���r���r$���rS���r���r���r���� visit_With����s����zRootVisitor.visit_With)r����argsr���r ���c�������������O���s���t�dt|�j����d�S�)NzCannot find symbols for )�NotImplementedError�typerD���)r���r���re���r���r���r���r���� generic_visit����s����zRootVisitor.generic_visit)rU���)rD���rE���rF���r���r���rI���r+���rJ���rT���Zvisit_Template�visit_Block�visit_Macro�visit_FilterBlock�visit_Scope�visit_IfZvisit_ScopedEvalContextModifier�AssignBlockrV���� CallBlockrY����OverlayScoperZ����ForrK���rb����Withrd���rh���r���r���r���r���r�������s ���r���c���������������@���sn��e�Zd�ZdZddd�dd�Zd(ejeej dd�d d �Z ejej dd�dd �Zej ej dd�dd�Zejej dd�dd�Zejej dd�dd�Zejej dd�dd�Zejej dd�dd�Zejej dd�dd�Zejej dd�dd�Zejej dd�dd�Zejej dd�dd�Zejej dd�d d!�Z ej!ej dd�d"d#�Z"ej#ej dd�d$d%�Z$ej%ej dd�d&d'�Z&dS�))r���zA visitor for `Frame.inspect`.r���N)rP���r ���c�������������C���s ���||�_�d�S�)N)rP���)r���rP���r���r���r���r�������s����zFrameSymbolVisitor.__init__F)r���r\���r���r ���c�������������K���sT���|s|j�dkr|�j�|j��n2|j�dkr8|�j�|j��n|j�dkrP|�j�|j��dS�)z2All assignments to names go through this function.r���r6���r ���N)�ctxrP���r8���r���r6���r ���)r���r���r\���r���r���r���r���� visit_Name����s���� zFrameSymbolVisitor.visit_Name)r���r���r ���c�������������K���s���|�j��|j��d�S�)N)rP���r ���r���)r���r���r���r���r���r����visit_NSRef����s����zFrameSymbolVisitor.visit_NSRefc����������������sn����j�|jf�����j�tjtj�dd�����fdd�}||j�}||j�}||j pTd�}�j� |||g��d�S�)Nr���)r���r ���c����������������s4����������_}x|�D�]}�j|f����qW���_|S�)N)r2���rP���r ���)r���r)���Zsubnode)r����original_symbolsr���r���r����inner_visit���s ���� z0FrameSymbolVisitor.visit_If.<locals>.inner_visitr���)r ���r^���rP���r+����Iterabler���rI���rU���Zelif_r_���r?���)r���r���r���rw���Zbody_symbolsZelif_symbolsZelse_symbolsr���)r���rv���r���r���rm�������s���� zFrameSymbolVisitor.visit_Ifc�������������K���s���|�j��|j��d�S�)N)rP���r6���r���)r���r���r���r���r���r���rj�����s����zFrameSymbolVisitor.visit_Macroc�������������K���s ���|�j�|f|��|�j�|j��d�S�)N)rh���rP���r6���r$���)r���r���r���r���r���r����visit_Import��s����zFrameSymbolVisitor.visit_Importc�������������K���sJ���|�j�|f|��x6|jD�],}t|t�r6|�j�|d���q|�j�|��qW�d�S�)Nr���)rh����names� isinstance�tuplerP���r6���)r���r���r���r���r���r���r����visit_FromImport��s ���� z#FrameSymbolVisitor.visit_FromImportc�������������K���s$���|�j�|jf|��|�j�|jf|��dS�)z'Visit assignments in the correct order.N)r ���r���r$���)r���r���r���r���r���r����visit_Assign��s����zFrameSymbolVisitor.visit_Assignc�������������K���s���|�j�|jf|��dS�)zqVisiting stops at for blocks. However the block sequence is visited as part of the outer scope. N)r ����iter)r���r���r���r���r���r���rb���#��s����zFrameSymbolVisitor.visit_Forc�������������K���s���|�j�|jf|��d�S�)N)r ���rW���)r���r���r���r���r���r���rY���)��s����z"FrameSymbolVisitor.visit_CallBlockc�������������K���s���|�j�|jf|��d�S�)N)r ����filter)r���r���r���r���r���r���rk���,��s����z$FrameSymbolVisitor.visit_FilterBlockc�������������K���s���x|j�D�]}|��|��qW�d�S�)N)�valuesr ���)r���r���r���r$���r���r���r���rd���/��s����zFrameSymbolVisitor.visit_Withc�������������K���s���|�j�|jf|��dS�)zStop visiting at block assigns.N)r ���r$���)r���r���r���r���r���r���rV���3��s����z$FrameSymbolVisitor.visit_AssignBlockc�������������K���s���dS�)zStop visiting at scopes.Nr���)r���r���r���r���r���r���rl���7��s����zFrameSymbolVisitor.visit_Scopec�������������K���s���dS�)zStop visiting at blocks.Nr���)r���r���r���r���r���r���ri���:��s����zFrameSymbolVisitor.visit_Blockc�������������K���s���dS�)z!Do not visit into overlay scopes.Nr���)r���r���r���r���r���r���rZ���=��s����z%FrameSymbolVisitor.visit_OverlayScope)F)'rD���rE���rF����__doc__r���r����Name�boolr+���rJ���rt���ZNSRefru����Ifrm���ZMacrorj����Importry���Z FromImportr}����Assignr~���rq���rb���ro���rY���ZFilterBlockrk���rr���rd���rn���rV���ZScoperl���ZBlockri���rp���rZ���r���r���r���r���r�������s$��� r���)N)N)�typingr+�����r���r���r���r7���r9���r4���r5���rx���rI���rG���r���r���r���r���r���r���r���r���r����<module>���s��� �: