CasperSecurity

Current Path : /lib/python3.10/lib2to3/fixes/__pycache__/
Upload File :
Current File : //lib/python3.10/lib2to3/fixes/__pycache__/fix_dict.cpython-310.pyc

o

��bc��@sjdZddlmZddlmZddlmZddlmZmZmZddlmZej	dhBZ
Gdd	�d	ej�Zd
S)ajFixer for dict methods.

d.keys() -> list(d.keys())
d.items() -> list(d.items())
d.values() -> list(d.values())

d.iterkeys() -> iter(d.keys())
d.iteritems() -> iter(d.items())
d.itervalues() -> iter(d.values())

d.viewkeys() -> d.keys()
d.viewitems() -> d.items()
d.viewvalues() -> d.values()

Except in certain very specific contexts: the iter() can be dropped
when the context is list(), sorted(), iter() or for...in; the list()
can be dropped when the context is list() or sorted() (but not iter()
or for...in!). Special contexts that apply to both: list(), sorted(), tuple()
set(), any(), all(), sum().

Note: iter(d.keys()) could be written as iter(d) but since the
original d.iterkeys() was also redundant we don't fix this.  And there
are (rare) contexts where it makes a difference (e.g. when passing it
as an argument to a function that introspects the argument).
�)�pytree)�patcomp)�
fixer_base)�Name�Call�Dot)�
fixer_util�iterc@s@eZdZdZdZdd�ZdZe�e�Z	dZ
e�e
�Zdd�Zd	S)
�FixDictTa
    power< head=any+
         trailer< '.' method=('keys'|'items'|'values'|
                              'iterkeys'|'iteritems'|'itervalues'|
                              'viewkeys'|'viewitems'|'viewvalues') >
         parens=trailer< '(' ')' >
         tail=any*
    >
    c
	Cs|d}|dd}|d}|j}|j}|�d�}|�d�}	|s"|	r(|dd�}|dvs2Jt|���d	d
�|D�}dd
�|D�}|oH|�||�}
|t�|jt�t	||j
d�g�|d
��g}t�|j|�}|
sz|	szd|_
t
t	|rtdnd�|g�}|r�t�|j|g|�}|j
|_
|S)N�head�method��tailr	�view�)�keys�items�valuescS�g|]}|���qS���clone��.0�nrr�-/usr/lib/python3.10/lib2to3/fixes/fix_dict.py�
<listcomp>A�z%FixDict.transform.<locals>.<listcomp>cSrrrrrrrrBr)�prefix�parens��list)�syms�value�
startswith�repr�in_special_contextr�Node�trailerrrrr�powerr)
�self�node�resultsrrrr"�method_name�isiter�isview�special�args�newrrr�	transform6s<


���
�zFixDict.transformz3power< func=NAME trailer< '(' node=any ')' > any* >zmfor_stmt< 'for' any 'in' node=any ':' any* >
            | comp_for< 'for' any 'in' node=any any* >
         cCs�|jdurdSi}|jjdur/|j�|jj|�r/|d|ur/|r'|djtvS|djtjvS|s3dS|j�|j|�o@|d|uS)NFr+�func)�parent�p1�matchr#�iter_exemptr�consuming_calls�p2)r*r+r.r,rrrr&Zs
�zFixDict.in_special_contextN)
�__name__�
__module__�__qualname__�
BM_compatible�PATTERNr3�P1r�compile_patternr6�P2r:r&rrrrr
)s


r
N)
�__doc__r rrrrrrrr9r8�BaseFixr
rrrr�<module>s
Hacker Blog, Shell İndir, Sql İnjection, XSS Attacks, LFI Attacks, Social Hacking, Exploit Bot, Proxy Tools, Web Shell, PHP Shell, Alfa Shell İndir, Hacking Training Set, DDoS Script, Denial Of Service, Botnet, RFI Attacks, Encryption
Telegram @BIBIL_0DAY