§
    ñyIfp  ã                   ó¦   — 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       úM/var/www/piapp/venv/lib/python3.11/site-packages/astroid/brain/brain_attrs.pyÚis_decorated_with_attrsr   +   s™   € àŒ?ð ØˆuØ#œÔ4ð ð ÐÝÐ)­4Ñ0Ô0ð 	;Ø"5Ô":ÐØ×(Ò(Ñ*Ô*¨oÐ=Ð=Ø�4�4åÐ1Ñ2Ô2ˆØð 	˜Ÿš™œÔ,Ð0@Ò@Ð@Ø�4�4øØˆ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        <   ŒTŒ×d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Ð&:Ñ&:Ô&:Ð%;€D„KÐ!Ñ"àœ)ð >ð >ˆÝ˜.­6µ9Ð*=Ñ>Ô>ð 	ØÝ�nÔ*­DÑ1Ô1ð 	ØÔ#Ô(×2Ò2Ñ4Ô4½LÐHÐHØð Ið õ �~ yÑ1Ô1ð)ˆNÔ"Ð"à Ô'Ð(ð 	ð
 ð 	>ð 	>ˆFÝØ%Ô,Ø)Ô4Ø%ðñ ô ˆHõ
 ˜&¥*Ñ-Ô-ð >ð -5¨:�”˜FœKÑ(Ø4<°:�Ô# F¤KÑ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   