+
    i                         R t ^ RIHt ^ RIHt ^ RIHt ^ RIHt ]	! R4      t
]	! R4      t]	! . RO]O54      t]3R R lltR R ltR	 R
 ltR# )zy
Astroid hook for the attrs library

Without this hook pylint reports unsupported-assignment-operation
for attrs classes
)nodes)is_class_varAstroidManager)
safe_inferc                $    V ^8  d   QhR\         /# )   return)bool)formats   ";/usr/lib/python3/dist-packages/astroid/brain/brain_attrs.py__annotate__r   1   s      $     c                ^   V P                   '       g   R# V P                   P                   F~  p\        V\        P                  4      '       d   VP                  pVP                  4       V9   d    R# \        V4      pV'       g   K\  VP                  4       P                  R8X  g   K}   R# 	  R# )z>Return whether a decorated node has an attr decorator applied.FTzattr._next_gen)	
decoratorsr   
isinstanceCallfunc	as_stringr   rootname)nodedecorator_namesdecorator_attributeinferreds   &&  r   is_decorated_with_attrsr   1   s    ???#44)5::66"5":":((*o=128,,0@@  5 r   c                <    V ^8  d   QhR\         P                  RR/# )r   r   r	   N)r   ClassDef)r   s   "r   r   r   A   s     (> (>ENN (>t (>r   c                   \         P                  ! V R7      .V P                  R&   \        V \        4      pV P
                   EF  p\        V\         P                  \         P                  34      '       g   K6  \        VP                  \         P                  4      '       d1   VP                  P                  P                  4       \        9  d   K  M
V'       g   K  \        V\         P                  4      '       d   \        VP                  4      '       d   K  \!        VR4      '       d   VP"                  MVP$                  .pV F  p\         P                  ! VP&                  VP(                  VR7      p\        V\         P*                  4      '       g   KR  V.V P                  VP,                  &   V.V P.                  VP,                  &   K  	  EK  	  R# )z`Given that the ClassNode has an attr decorator,
rewrite class attributes as instance attributes
)parent__attrs_attrs__targets)lineno
col_offsetr   N)r   Unknownlocalsr   NEW_ATTRS_NAMESbodyr   Assign	AnnAssignvaluer   r   r   ATTRIB_NAMESr   
annotationhasattrr!   targetr"   r#   
AssignNamer   instance_attrs)r   use_bare_annotationscdef_body_noder!   r.   rhs_nodes   &     r   attr_attributes_transformr4   A   sb    ',mm4&@%ADKK!"24I)).5<<*IJJn**EJJ77##((224LH I% neoo66<%%<
 <
  ~y11 "" ''( 	
 F}}%,,)44%H
 &%"2"233 -5:FKK(4<:##FKK0 ) $r   c                (    V ^8  d   QhR\         RR/# )r   managerr	   Nr   )r   s   "r   r   r   l   s      n  r   c                 X    V P                  \        P                  \        \        4       R # )N)register_transformr   r   r4   r   )r6   s   &r   registerr9   l   s    13Jr   N)zattr.Factoryzattr.ibattribzattr.attribz
attr.fieldzattrs.fieldfield)zattrs.definezattrs.mutablezattrs.frozen)zattr.sattrsz
attr.attrszattr.attributeszattr.definezattr.mutablezattr.frozen)__doc__astroidr   astroid.brain.helpersr   astroid.managerr   astroid.utilr   	frozensetr+   r&   ATTRS_NAMESr   r4   r9    r   r   <module>rE      sh   
  . * #
  	 
	 3>  (>Vr   