B
    0zf%                 @   s   d dl Z d dlZd dlZyd dlmZ W n  ek
rH   d dlmZ Y nX ddddhZ	ej
dkrd dlZd	d
 eeD ZdZn d dlZdd
 eeD ZdZej
dkre jZnede jfi Zej
dkre jZnede jfi ZG dd deZdS )    N)pep8)utils__name____doc__credits_)   r   c             C   s    g | ]}|d  t kr|d  qS )r   )
WHITE_LIST).0a r   R/home/ankuromar296_gmail_com/.local/lib/python3.7/site-packages/flake8_builtins.py
<listcomp>   s   r   Tc             C   s    g | ]}|d  t kr|d  qS )r   )r	   )r
   r   r   r   r   r       s   F)r      	AnnAssign)r      	NamedExprc               @   sz   e Zd ZdZdZdZdZdZdd Zdd	 Z	d
d Z
dd Zdd Zdd Zdd Zdd Zdd Zdd ZdddZdS )BuiltinsCheckerZflake8_builtinsz1.5.2z1A001 variable "{0}" is shadowing a python builtinz1A002 argument "{0}" is shadowing a python builtinz8A003 class attribute "{0}" is shadowing a python builtinc             C   s   || _ || _d S )N)treefilename)selfr   r   r   r   r   __init__8   s    zBuiltinsChecker.__init__c             c   s  | j }| jdkr"t }t|}x,t|D ]}xt|D ]
}||_q>W q.W tj	g}t
tdd rp|tj t|}tjg}t
tdd r|tj t|}tjg}t
tdd r|tj t|}tjtjtjtjf}d }	xt|D ] }t|tjttfr| |}	nt||r,| |}	nt||rD| |}	nt||r\| |}	njt|tjrv| |}	nPt||r|  |}	n8t|tj!tj"fr| #|}	nt|tj$r| %|}	|	rx$|	D ]\}
}}}|
|||fV  qW qW d S )NstdinAsyncFunctionDefAsyncFor	AsyncWith)&r   r   stdin_utilsZstdin_get_valueastparsewalkiter_child_nodes(_BuiltinsChecker__flake8_builtins_parentFunctionDefgetattrappendr   tupleForr   Withr   ListCompSetCompDictCompGeneratorExp
isinstanceAssignr   r   check_assignmentcheck_function_definitioncheck_for_loop
check_withexcepthandlercheck_exceptioncheck_comprehensionImport
ImportFromcheck_importClassDefcheck_class)r   r   lines	statementchildZfunction_nodesZ	for_nodesZ
with_nodesZcomprehension_nodesvaluelineoffsetmsgZrtyper   r   r   run<   sX    


zBuiltinsChecker.runc             c   s   | j }t|jtjkr| j}t|tjr4t|j	}n|j
g}x|r| }t|tjtjfrn|t|j q>t|tjr|jtkr| j|||jdV  q>tr>t|tjr>t|jdr|jjtkr| j|||jjdV  q>t|jdr>|t|jj q>W d S )N)messagevariableidelts)
assign_msgtyper!   r   r8   class_attribute_msgr,   r-   listtargetstargetpopTupleListextendrE   NamerD   BUILTINSerrorPY3Starredhasattrr=   )r   r;   r@   stackitemr   r   r   r.   {   s*    
z BuiltinsChecker.check_assignmentc             c   s   |j tkr:| j}t|jtjkr&| j}| j|||j dV  t	rg }|
|jj |
t|jdg  |
t|jdg  xt|D ]0}t|tjr~|jtkr~| j|| j|jdV  q~W n:x8|jjD ],}t|tjr|jtkr| j|| jdV  qW d S )N)rB   rC   
kwonlyargsZposonlyargs)rB   )namerQ   rF   rG   r!   r   r8   rH   rR   rS   rO   argsr#   r,   argargument_msgrP   rD   )r   r;   r@   Zall_argumentsr[   r   r   r   r/      s*    



z)BuiltinsChecker.check_function_definitionc             c   s   |j g}x|r| }t|tjtjfr:|t|j q
t|tj	rd|j
tkrd| j||j
dV  q
tr
t|tjr
t|jdr|jj
tkr| j||jj
dV  q
t|jdr
|t|jj q
W d S )N)rC   rD   rE   )rK   rL   r,   r   rM   rN   rO   rI   rE   rP   rD   rQ   rR   rS   rT   rU   r=   )r   r;   rV   rW   r   r   r   r0      s    
zBuiltinsChecker.check_for_loopc             c   s>  t s|j}t|tjtjfrVx`|jD ],}t|tjr$|jt	kr$| j
||jdV  q$W n(t|tjr~|jt	kr~| j
||jdV  nx|jD ]}|j}t|tjtjfrx|jD ]Z}t|tjr|jt	kr| j
||jdV  qt|tjr|jjt	kr| j
||jjdV  qW qt|tjr|jt	kr| j
||jdV  qW d S )N)rC   )rS   Zoptional_varsr,   r   rM   rN   rE   rP   rD   rQ   rR   itemsrT   r=   )r   r;   varelementrW   r   r   r   r1      s.    

zBuiltinsChecker.check_withc             c   sH   |j }d}t|tjr|j}nt|tr,|}|tkrD| j||dV  d S )N )rC   )rY   r,   r   rP   rD   strrQ   rR   )r   r;   exception_namer=   r   r   r   r3      s    
zBuiltinsChecker.check_exceptionc             c   s   x|j D ]}t|jtjr<|jjtkr<| j||jjdV  qt|jtjtj	frx8|jj
D ],}t|tjrZ|jtkrZ| j||jdV  qZW qW d S )N)rC   )
generatorsr,   rK   r   rP   rD   rQ   rR   rM   rN   rE   )r   r;   	generatorZtuple_elementr   r   r   r4      s    
z#BuiltinsChecker.check_comprehensionc             c   s0   x*|j D ] }|jtkr| j||jdV  qW d S )N)rC   )namesZasnamerQ   rR   )r   r;   rY   r   r   r   r7      s    
zBuiltinsChecker.check_importc             c   s    |j tkr| j||j dV  d S )N)rC   )rY   rQ   rR   )r   r;   r   r   r   r9      s    
zBuiltinsChecker.check_classNc             C   s>   |s
| j }|s|j}|s|j}|s(|j}||||t| fS )N)rF   rD   lineno
col_offsetformatrG   )r   r;   rB   rC   r>   columnr   r   r   rR     s    zBuiltinsChecker.error)NNNN)r   
__module____qualname__rY   versionrF   r\   rH   r   rA   r.   r/   r0   r1   r3   r4   r7   r9   rR   r   r   r   r   r   1   s&   ?   r   )r   inspectsysZflake8.enginer   r   ImportErrorZflake8r   r	   version_infobuiltins
getmembersrQ   rS   __builtin__r   rG   ASTr   objectr   r   r   r   r   <module>   s4   


