B
    S\                 @   sP   d Z ddlZddlmZ edZedZefddZdd	 Zeej	ee dS )
zy
Astroid hook for the attrs library

Without this hook pylint reports unsupported-assignment-operation
for attrs classes
    N)MANAGER)zattr.ibZattribzattr.attrib)zattr.sZattrsz
attr.attrszattr.attributesc             C   sB   | j s
dS x2| j jD ]&}t|tjr*|j}| |krdS qW dS )zBReturn True if a decorated node has
    an attr decorator applied.FT)Z
decoratorsZnodes
isinstanceastroidCallfunc	as_string)nodeZdecorator_namesZdecorator_attribute r	   8lib/python3.7/site-packages/astroid/brain/brain_attrs.pyis_decorated_with_attrs   s    r   c             C   s   t j| dg| jd< xr| jD ]h}t|t js.qt|jt jr|jj	 t
krRqnqx0|jD ]&}t j|j|j|d}|g| j|j< qZW qW dS )zhGiven that the ClassNode has an attr decorator,
    rewrite class attributes as instance attributes
    )parentZ__attrs_attrs__)lineno
col_offsetr   N)r   ZUnknownlocalsZbodyr   ZAssignvaluer   r   r   ATTRIB_NAMESZtargetsr   r   name)r   ZcdefbodynodetargetZrhs_noder	   r	   r
   attr_attributes_transform   s    r   )
__doc__r   r   	frozensetr   ZATTRS_NAMESr   r   Zregister_transformZClassDefr	   r	   r	   r
   <module>   s   