o
    b                     @   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.ibattribzattr.attrib)zattr.sattrsz
attr.attrszattr.attributesc                 C   s@   | j sdS | j jD ]}t|tjr|j}| |v r dS q	dS )zBReturn True if a decorated node has
    an attr decorator applied.FT)Z
decoratorsnodes
isinstanceastroidCallfunc	as_string)nodeZdecorator_namesZdecorator_attribute r   X/var/www/secure340b-portal/env/lib/python3.10/site-packages/astroid/brain/brain_attrs.pyis_decorated_with_attrs   s   r   c                 C   s   t j| dg| jd< | jD ]2}t|t jsqt|jt jr'|jj	 t
vr&qnq|jD ]}t j|j|j|d}|g| j|j< q+qdS )zhGiven that the ClassNode has an attr decorator,
    rewrite class attributes as instance attributes
    )parentZ__attrs_attrs__)lineno
col_offsetr   N)r   Unknownlocalsbodyr   Assignvaluer   r	   r
   ATTRIB_NAMES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_transformClassDefr   r   r   r   <module>   s   