B
    0zf.                 @   s   d dl Z d dlZd dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ ej	dkrpd dl
mZ nd dlZd	Zd
ZdZdZdZdZdZdZdZdZe jeedddZG dd de jZG dd dZdS )    N)Any)Dict)	Generator)List)Tuple)Type)      zHYTT101 `sys.version[:3]` referenced (python3.10), use `sys.version_info`zGYTT102 `sys.version[2]` referenced (python3.10), use `sys.version_info`zLYTT103 `sys.version` compared to string (python3.10), use `sys.version_info`z@YTT201 `sys.version_info[0] == 3` referenced (python4), use `>=`z8YTT202 `six.PY3` referenced (python4), use `not six.PY2`z_YTT203 `sys.version_info[1]` compared to integer (python4), compare `sys.version_info` to tuplezbYTT204 `sys.version_info.minor` compared to integer (python4), compare `sys.version_info` to tuplezEYTT301 `sys.version[0]` referenced (python10), use `sys.version_info`zJYTT302 `sys.version` compared to string (python10), use `sys.version_info`zFYTT303 `sys.version[:1]` referenced (python10), use `sys.version_info`)nodenreturnc             C   sD   t jdkr| j}nt| jtjr*| jj}ndS t|tjoB|j|kS )N)r   	   F)	sysversion_infoslice
isinstanceastIndexvalueNumr   )r
   r   Z
node_slice r   N/home/ankuromar296_gmail_com/.local/lib/python3.7/site-packages/flake8_2020.py	_is_index   s    

r   c               @   s   e Zd ZddddZejddddZeeje	dd	d
Z
ejee	dddZejddddZejddddZejddddZejddddZdS )VisitorN)r   c             C   s   g | _ i | _d S )N)errors_from_imports)selfr   r   r   __init__'   s    zVisitor.__init__)r
   r   c             C   s<   x,|j D ]"}|jd k	r|js|j| j|j< qW | | d S )N)namesmoduleZasnamer   namegeneric_visit)r   r
   aliasr   r   r   visit_ImportFrom+   s    zVisitor.visit_ImportFrom)attrr
   r   c             C   sX   t |tjr0t |jtjr0|jjdkr0|j|kpVt |tjoV|j|koV| j|jdkS )Nr   )	r   r   	Attributer   Nameidr$   r   get)r   r$   r
   r   r   r   _is_sys1   s    

zVisitor._is_sys)r
   r   r   c             C   sR   |  d|joPt|jtjoP|jjd koPt|jjtjoP|jjj	|koP|jj
d kS )Nversion)r)   r   r   r   r   Slicelowerupperr   r   step)r   r
   r   r   r   r   _is_sys_version_upper_slice>   s    z#Visitor._is_sys_version_upper_slicec             C   s   |  |dr(| j|jj|jjtf n|  |drP| j|jj|jjtf nj| d|jrt	|ddr| j|jj|jjt
f n4| d|jrt	|ddr| j|jj|jjtf | | d S )N   r   r*      )r   r   )r/   r   appendr   lineno
col_offsetYTT303YTT101r)   r   YTT102YTT301r!   )r   r
   r   r   r   visit_SubscriptH   s    zVisitor.visit_Subscriptc             C   sP  t |jtjr| d|jjrt|jddrt|jdkrt |jd tj	tj
frt |jd tjr|jd jdkr| j|jj|jjtf n| d|jr&t|jdkr&t |jd tjtjtjtjfr&t |jd tjr&t|jd jdkrt}nt}| j|jj|jj|f nt |jtjr| d|jjrt|jddrt|jdkrt |jd tjtjtjtjfrt |jd tjr| j|j|jtf nt |jtjrB| d|jjrB|jjdkrBt|jdkrBt |jd tjtjtjtjfrBt |jd tjrB| j|j|jtf | | d S )Nr   r   )r   r0   r   r*   minor) r   leftr   	Subscriptr)   r   r   lenZopsEqNotEqZcomparatorsr   r   r   r2   r3   r4   YTT201LtLtEGtGtEStrsYTT302YTT103YTT203r%   r$   YTT204r!   )r   r
   coder   r   r   visit_Compare\   sF    """zVisitor.visit_Comparec             C   sH   t |jtjr:|jjdkr:|jdkr:| j|j|j	t
f | | d S )NsixPY3)r   r   r   r&   r'   r$   r   r2   r3   r4   YTT202r!   )r   r
   r   r   r   visit_Attribute   s
    
zVisitor.visit_Attributec             C   s@   |j dkr2| j|j dkr2| j|j|jtf | | d S )NrN   rM   )	r'   r   r(   r   r2   r3   r4   rO   r!   )r   r
   r   r   r   
visit_Name   s    zVisitor.visit_Name)__name__
__module____qualname__r   r   
ImportFromr#   strASTboolr)   r<   intr/   r9   ComparerL   r%   rP   r&   rQ   r   r   r   r   r   &   s   
2	r   c               @   sR   e Zd Ze Zee ZejdddZe	e
eeeee f ddf dddZdS )Plugin)treec             C   s
   || _ d S )N)_tree)r   r\   r   r   r   r      s    zPlugin.__init__N)r   c             c   s>   t  }|| j x&|jD ]\}}}|||t| fV  qW d S )N)r   visitr]   r   type)r   visitorlinecolmsgr   r   r   run   s    z
Plugin.run)rR   rS   rT   r    importlib_metadatar*   r   rW   r   r   r   rY   rV   r   r   rd   r   r   r   r   r[      s   
r[   )r   r   typingr   r   r   r   r   r   r   importlib.metadatametadatare   r6   r7   rH   r@   rO   rI   rJ   r8   rG   r5   r<   rY   rX   r   NodeVisitorr   r[   r   r   r   r   <module>   s.   
w