
    5 fp                         d Z ddlmZ ddlmZmZmZmZmZ ddl	m
Z
 ddlmZ  ed          Z ed          Zefdefd	Zd
e
ddfdZdeddfdZdS )zy
Astroid hook for the attrs library

Without this hook pylint reports unsupported-assignment-operation
for attrs classes
    )AstroidManager)	AnnAssignAssign
AssignNameCallUnknown)ClassDef)
safe_infer)zattr.Factoryzattr.ibattribzattr.attribz
attr.fieldzattrs.fieldfield)
zattr.sattrsz
attr.attrszattr.attributeszattr.definezattr.mutablezattr.frozenzattrs.definezattrs.mutablezattrs.frozenreturnc                    | j         sdS | j         j        D ]h}t          |t                    r|j        }|                                |v r dS t          |          }|r |                                j        dk    r dS idS )z>Return whether a decorated node has an attr decorator applied.FTzattr._next_gen)	
decoratorsnodes
isinstancer   func	as_stringr
   rootname)nodedecorator_namesdecorator_attributeinferreds       O/var/www/equiseq/venv/lib/python3.11/site-packages/astroid/brain/brain_attrs.pyis_decorated_with_attrsr   +   s    ? u#4  )400 	;"5":((**o==44122 	,0@@@445    r   Nc                    t          |           g| j        d<   | j        D ]}t          |t          t
          f          st          |j        t                    r'|j        j        	                                t          vr_nat          |d          r|j        n|j        g}|D ]S}t          |j        |j        |          }t          |t                     r |g| j        |j        <   |g| j        |j        <   TdS )zhGiven that the ClassNode has an attr decorator,
    rewrite class attributes as instance attributes
    )parent__attrs_attrs__targets)lineno
col_offsetr   N)r   localsbodyr   r   r   valuer   r   r   ATTRIB_NAMEShasattrr!   targetr"   r#   r   r   instance_attrs)r   cdef_body_noder!   r)   rhs_nodes        r   attr_attributes_transformr-   ;   s/    '.T&:&:&:%;DK!") > >.69*=>> 	n*D11 	#(2244LHH I  ~y11)N"" '( 	
  	> 	>F%,)4%  H
 &*-- > -5:FK(4<:#FK0	>> >r   managerc                 R    |                      t          t          t                     d S )N)register_transformr	   r-   r   )r.   s    r   registerr1   ^   s-    +-D    r   )__doc__astroid.managerr   astroid.nodes.node_classesr   r   r   r   r   astroid.nodes.scoped_nodesr	   astroid.utilr
   	frozensetr'   ATTRS_NAMESboolr   r-   r1    r   r   <module>r;      s  
  + * * * * * S S S S S S S S S S S S S S / / / / / / # # # # # #y
 
 i   3>  $      >H  >  >  >  >  >Fn       r   