B
    0zf5             A   @   s  d dl Z d dlZd dlZ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 d dlmZ d d	lmZ ejd
krd dlmZ nd dlZejdkre je jdddZne je jdddZG dd deZeddd edfedddedfedddedfedddedfedddedfedddedfedddedfedddedfedddedfedddedfedddedfeddd ed feddded!feddded"feddded"feddded"feddded"feddded"feddded"feddded"feddded"feddded"feddd#ed"feddd$ed"feddd%ed"feddd&ed"feddd'ed"feddd ed(feddded(feddded)feddded)feddded)feddded)feddded)feddded)feddded)feddded)feddded)feddd#ed)feddd$ed)feddd ed*feddded*feddded*feddded*feddded*feddded*feddded*feddded*feddded*feddded*feddded*feddd#ed*feddd$ed*feddd ed+feddded+feddded+feddded+feddded+feddded+feddded+feddded+feddd ed,ff>Zed-d. eD ZG d/d0 d0e jZG d1d2 d2ZdS )3    N)Any)Dict)	Generator)List)
NamedTuple)Set)Tuple)Type)      )r
   	   )nodereturnc             C   s   | j S )N)slice)r    r   X/home/ankuromar296_gmail_com/.local/lib/python3.7/site-packages/flake8_typing_imports.py_get_subscript_slice   s    r   c             C   s    t | jtjr| jjS | jS d S )N)
isinstancer   astIndexvalue)r   r   r   r   r      s    c               @   sT   e Zd ZU dZeed< dZeed< dZeed< edddZ	e
ed dd	d
ZdS )Versionr   majorminorpatch)r   c             C   s   | j  d| j d| j S )N.)r   r   r   )selfr   r   r   __str__%   s    zVersion.__str__)sr   c             C   s   | dd | dD  S )Nc             s   s   | ]}t |V  qd S )N)int).0pr   r   r   	<genexpr>*   s    z Version.parse.<locals>.<genexpr>r   )split)clsr   r   r   r   parse(   s    zVersion.parseN)__name__
__module____qualname__r   r   __annotations__r   r   strr   classmethodr%   r   r   r   r   r       s   
r   r
      )/AbstractSetr   AnyStrBinaryIO
ByteStringCallable	Containerr   	FrozenSetr   GenericHashableIO	ItemsViewIterableIteratorKeysViewr   MappingMappingViewMatchMutableMappingMutableSequence
MutableSetr   OptionalPattern
ReversibleSequencer   SizedSupportsAbsSupportsBytesSupportsComplexSupportsFloatSupportsIntSupportsRoundTextIOr   TypeVarUnion
ValuesViewcastget_type_hintsno_type_checkno_type_check_decoratoroverload      )7r-   r   r.   AsyncIterableAsyncIterator	Awaitabler/   r0   r1   r2   DefaultDictr   r3   r   r4   r5   r6   r7   r8   r9   r:   r   r;   r<   r=   r>   r?   r@   r   NewTyperA   rB   rC   rD   r   rE   rF   rG   rH   rI   rJ   rK   TYPE_CHECKINGTextrL   r   r	   rM   rN   rO   rP   rQ   rR   rS   rT   )9r-   r   r.   rW   rX   rY   r/   r0   r1   ClassVarr2   	CoroutinerZ   r   r3   r   r4   r5   r6   r7   r8   r9   r:   r   r;   r<   r=   r>   r?   r@   r   r[   rA   rB   rC   rD   r   rE   rF   rG   rH   rI   rJ   rK   r\   r]   rL   r   r	   rM   rN   rO   rP   rQ   rR   rS   rT      )@r-   r   r.   AsyncContextManagerrW   rX   rY   r/   r0   r1   ChainMapr^   r2   ContextManagerr_   CounterrZ   Dequer   r3   r   r4   GenericMetar5   r6   r7   r8   r9   r:   r   r;   r<   r=   r>   r?   r@   r   r[   NoReturnrA   rB   rC   rD   r   rE   rF   rG   rH   rI   rJ   rK   r\   r]   rL   r   r	   rM   rN   rO   rP   rQ   rR   rS   rT         r   r   
   );r-   r   r.   rW   rX   rY   r/   r0   r1   r^   
Collectionr2   rc   r_   rZ   r   r3   r   r4   r5   r6   r7   r8   r9   r:   r   r;   r<   r=   r>   r?   r@   r   r[   rA   rB   rC   rD   r   rE   rF   rG   rH   rI   rJ   rK   r\   r]   rL   r   r	   rM   rN   rO   rP   rQ   rR   rS   rT   )@r-   r   r.   AsyncGeneratorrW   rX   rY   r/   r0   r1   rb   r^   rk   r2   rc   r_   rd   rZ   re   r   r3   r   r4   rf   r5   r6   r7   r8   r9   r:   r   r;   r<   r=   r>   r?   r@   r   r[   rA   rB   rC   rD   r   rE   rF   rG   rH   rI   rJ   rK   r\   r]   rL   r   r	   rM   rN   rO   rP   rQ   rR   rS   rT   )Br-   r   r.   ra   rl   rW   rX   rY   r/   r0   r1   rb   r^   rk   r2   rc   r_   rd   rZ   re   r   r3   r   r4   rf   r5   r6   r7   r8   r9   r:   r   r;   r<   r=   r>   r?   r@   r   r[   rg   rA   rB   rC   rD   r   rE   rF   rG   rH   rI   rJ   rK   r\   r]   rL   r   r	   rM   rN   rO   rP   rQ   rR   rS   rT                  )Br-   r   r.   ra   rl   rW   rX   rY   r/   r0   r1   rb   r^   rk   r2   rc   r_   rd   rZ   re   r   
ForwardRefr3   r   r4   r5   r6   r7   r8   r9   r:   r   r;   r<   r=   r>   r?   r@   r   r[   rg   rA   rB   rC   rD   r   rE   rF   rG   rH   rI   rJ   rK   r\   r]   rL   r   r	   rM   rN   rO   rP   rQ   rR   rS   rT   )Cr-   r   r.   ra   rl   rW   rX   rY   r/   r0   r1   rb   r^   rk   r2   rc   r_   rd   rZ   re   r   rr   r3   r   r4   r5   r6   r7   r8   r9   r:   r   r;   r<   r=   r>   r?   r@   r   r[   rg   rA   OrderedDictrB   rC   rD   r   rE   rF   rG   rH   rI   rJ   rK   r\   r]   rL   r   r	   rM   rN   rO   rP   rQ   rR   rS   rT   )Lr-   r   r.   ra   rl   rW   rX   rY   r/   r0   r1   rb   r^   rk   r2   rc   r_   rd   rZ   re   r   Finalrr   r3   r   r4   r5   r6   r7   r8   r9   r:   r   Literalr;   r<   r=   r>   r?   r@   r   r[   rg   rA   rs   rB   ProtocolrC   rD   r   rE   rF   rG   rH   rI   SupportsIndexrJ   rK   r\   r]   rL   r   r	   rM   	TypedDictrN   rO   rP   finalget_args
get_originrQ   rR   rS   rT   runtime_checkable)Mr-   	Annotatedr   r.   ra   rl   rW   rX   rY   r/   r0   r1   rb   r^   rk   r2   rc   r_   rd   rZ   re   r   rt   rr   r3   r   r4   r5   r6   r7   r8   r9   r:   r   ru   r;   r<   r=   r>   r?   r@   r   r[   rg   rA   rs   rB   rv   rC   rD   r   rE   rF   rG   rH   rI   rw   rJ   rK   r\   r]   rL   r   r	   rM   rx   rN   rO   rP   ry   rz   r{   rQ   rR   rS   rT   r|   )Tr-   r}   r   r.   ra   rl   rW   rX   rY   r/   r0   r1   rb   r^   rk   Concatenater2   rc   r_   rd   rZ   re   r   rt   rr   r3   r   r4   r5   r6   r7   r8   r9   r:   r   ru   r;   r<   r=   r>   r?   r@   r   r[   rg   rA   rs   	ParamSpecParamSpecArgsParamSpecKwargsrB   rv   rC   rD   r   rE   rF   rG   rH   rI   rw   rJ   rK   r\   r]   rL   r   r	   	TypeAlias	TypeGuardrM   rx   rN   rO   rP   ry   rz   r{   rQ   is_typeddictrR   rS   rT   r|   c             c   s   | ]\}}|V  qd S )Nr   )r    version_r   r   r   r"     s    r"   c                   s   e Zd ZddddZejeedf 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ejdd	ddZejdd	ddZejdd	 fddZ  ZS )VisitorN)r   c             C   sP   d| _ |  tt| _|  tt| _d| _g | _t | _	d| _
g | _g | _d S )NF)_levelcollectionsdefaultdictlistimports
attributesdefined_overloadunions_pattern_or_matchsetfrom_imported_names_in_namedtuplenamedtuple_methodsnamedtuple_defaults)r   r   r   r   __init__  s    zVisitor.__init__.)r   namesr   c             C   sR   t |tjr"|j|kr"|j| jkpPt |tjoPt |jtjoP|jjdkoP|j|kS )Ntyping)r   r   Nameidr   	Attributer   attr)r   r   r   r   r   r   
_is_typing  s    
zVisitor._is_typing)r   r   c             C   sj   |j dkr\|jdkr\| jdkr\x<|jD ]2}| j|j |j|jf |j	s&| j
|j q&W | | d S )Nr   r   )levelmoduler   r   r   nameappendlineno
col_offsetZasnamer   addgeneric_visit)r   r   r   r   r   r   visit_ImportFrom  s    zVisitor.visit_ImportFromc             C   sD   t |tjr@t |jtjr@|jjdkr@| j|j |j	|j
f d S )Nr   )r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   visit_Attribute  s    zVisitor.visit_Attributec             C   sB   | j dkr|jdkrd| _| jr4| j|j|jf | | d S )NrU   rT   T)	r   r   r   r   r   r   r   r   r   )r   r   r   r   r   visit_FunctionDef  s
    zVisitor.visit_FunctionDefc                sj   t |} |jdr\t|tjr\t|jdkr\t fdd|jD r\ j	
|j|jf  | d S )N)rN   rU   c             3   s   | ]}  |d V  qdS ))rB   r=   N)r   )r    x)r   r   r   r"     s   z*Visitor.visit_Subscript.<locals>.<genexpr>)r   r   r   r   r   r   leneltsanyr   r   r   r   r   )r   r   Zslice_valuer   )r   r   visit_Subscript  s    
zVisitor.visit_Subscriptc                sF   t  fdd|jD r8d _z | W d d _X n
 | d S )Nc             3   s   | ]}  |d V  qdS ))r   N)r   )r    base)r   r   r   r"     s    z)Visitor.visit_ClassDef.<locals>.<genexpr>TF)r   basesr   r   )r   r   r   )r   r   visit_ClassDef  s    
zVisitor.visit_ClassDefc             C   s2   | j r$|jd k	r$| j|j|jf | | d S )N)r   r   r   r   r   r   r   )r   r   r   r   r   visit_AnnAssign  s    zVisitor.visit_AnnAssignc                s,   |  j d7  _ t | |  j d8  _ d S )NrU   )r   superr   )r   r   )	__class__r   r   r     s    zVisitor.generic_visit)r&   r'   r(   r   r   ASTr   r*   boolr   
ImportFromr   r   r   FunctionDefr   	Subscriptr   ClassDefr   	AnnAssignr   r   __classcell__r   r   )r   r   r     s   	
r   c            	   @   s   e Zd Ze Zee ZedddZee	ddddZ
ee	ddd	d
ZejdddZeeeeeeef  f eeeeeee	 f ddf dddZeeeeeee	 f ddf dddZdS )Pluginr
   r,   r   N)option_managerr   c             C   s   | j dtddddd d S )Nz--min-python-versionVERSIONz3.5.0TzDMinimum version of python your code supports, (default: %(default)s))typemetavardefaultZparse_from_confighelp)
add_optionr*   )r   r   r   r   add_options  s    zPlugin.add_options)optionsr   c             C   s   t  }|d d|j |d d< tjdr<|d | j}x>|d d 	dD ](}|
 }|drVt|dd  }qVW t|td d }|tkrtd| d	|| _d S )
Nr   z>=Zpython_requiresz	setup.cfg,rV   r   zmin-python-version (z): unknown version)configparserConfigParseradd_sectionZmin_python_versionospathexistsread_min_python_versionr#   strip
startswithr   r%   maxSYMBOLSVERSIONS
ValueError)r$   r   cfgvpartr   r   r   parse_options#  s    


zPlugin.parse_options)treec             C   s
   || _ d S )N)_tree)r   r   r   r   r   r   7  s    zPlugin.__init__)msgname_positionsr   c             c   s   t t}x\tD ]T\}}|| jk r$qx>t|| D ].}x(|| D ]\}}||||f | q@W q2W qW xH| D ]<\\}}}}	ddd |	D }
|||	||
t
| fV  qrW d S )Nz, c             s   s   | ]}t |V  qd S )N)r*   )r    r   r   r   r   r"   J  s    z2Plugin._version_specific_errors.<locals>.<genexpr>)r   r   r   r   r   r   r   itemsjoinformatr   )r   r   r   Zerror_versionsr   symbolsklinecolversionsZ
versions_sr   r   r   _version_specific_errors:  s    

 zPlugin._version_specific_errors)r   c             c   s  t  }|| j | jtdddk r*d}nd}d| d}| ||jE d H  d}| jtdddk rd	|jkr|jsx(|jd	 D ]\}}|||t| fV  qW d
}| jtdddk r|j	rx$|j	D ]\}}|||t| fV  qW d}| jtdddk r(|j
r(x&|j
D ]\}}|||t| fV  qW d}| jtdddk rp|jrpx&|jD ]\}}|||t| fV  qPW d}| ||jE d H  d S )Nr
   r,   rV   z`if False:  # TYPE_CHECKING`z`if TYPE_CHECKING:`zTYP001 guard import by z: {} (not in {})zfTYP002 @overload is broken in <3.5.2, add `if sys.version_info < (3, 5, 2): def overload(f): return f`rT   zHTYP003 Union[Match, ...] or Union[Pattern, ...] must be quoted in <3.5.2z3TYP004 NamedTuple does not support methods in 3.6.0rh   rU   z4TYP005 NamedTuple does not support defaults in 3.6.0z:TYP006 guard `typing` attribute by quoting: {} (not in {}))r   visitr   r   r   r   r   r   r   r   r   r   r   )r   visitorguardr   r   r   r   r   r   runM  s<    
z
Plugin.run)r&   r'   r(   r   importlib_metadatar   r   r   staticmethodr   r   r+   r   r   r   r   r*   r   r   r   r   r   r	   r   r   r   r   r   r   r     s   

(r   )r   r   r   os.pathr   sysr   r   r   r   r   r   r   r   r	   version_infoimportlib.metadatametadatar   r   r   r   r   	frozensetr   r   NodeVisitorr   r   r   r   r   r   <module>   s$  


U