§
    ñyIfh]  ã                  óä  — U d Z ddlmZ ddlZddlZddlmZ ddlmZ ddl	m
Z
 ddlZddlmZmZmZmZmZ ddlmZmZmZ dd	lmZ dd
lmZmZmZmZ ddlmZ dZded<   ddhZ ded<   h d£Z!ded<   d„ Z"d„ Z#	 	 d>d?d"„Z$d#„ Z%d@d$„Z& ej'        e&d%¬&¦  «        Z( ej'        e&d'¬&¦  «        Z) ej'        e&d(¬&¦  «        Z*	 dAdBd*„Z+d+„ Z,dCd,„Z-	 dAdDd.„Z.d/Z/dEd1„Z0dAdFd2„Z1dAdFd3„Z2	 dAdBd4„Z3dGd6„Z4dHd9„Z5dId=„Z6dS )Jz.Astroid hooks for the Python standard library.é    )ÚannotationsN)ÚIterator)Údedent)ÚFinal)Ú	argumentsÚbasesÚinference_tipÚnodesÚutil)ÚAstroidBuilderÚ_extract_single_nodeÚextract_node)ÚInferenceContext)ÚAstroidTypeErrorÚAstroidValueErrorÚInferenceErrorÚUseInferenceDefault)ÚAstroidManagerú	enum.Enumz
Final[str]Ú
ENUM_QNAMEútyping.NamedTupleútyping_extensions.NamedTupler   ÚTYPING_NAMEDTUPLE_QUALIFIED>   Ú
NamedTupler   r   ÚTYPING_NAMEDTUPLE_BASENAMESc                ó  — t          | t          j        ¦  «        rt          ‚	 t	          |                      |¬¦  «        ¦  «        }n# t          $ r}t          |‚d }~ww xY wt          |t          j        ¦  «        rt          ¦   «         ‚|S )N©Úcontext)Ú
isinstancer   ÚUninferableBaser   ÚnextÚinferÚStopIterationr   )Únoder   ÚvalueÚexcs       úW/var/www/piapp/venv/lib/python3.11/site-packages/astroid/brain/brain_namedtuple_enum.pyÚ_infer_firstr(   '   sŒ   € Ý�$�Ô,Ñ-Ô-ð "Ý!Ð!ð&Ý�T—Z’Z¨�ZÑ0Ô0Ñ1Ô1ˆˆøÝð &ð &ð &Ý #Ð%øøøøð&øøøå�%�Ô-Ñ.Ô.ð $Ý!Ñ#Ô#Ð#Ø€Ls   £#A Á
AÁAÁAc                óÀ   ‡‡‡— 	 dˆˆˆfd„	}| j         Š| j        }|rd„ |D ¦   «         ni Š |dd¬¦  «        } |dd¬¦  «        }|r|r	|j        |fS t          ¦   «         ‚)	Nc                ó–   •— t          ‰¦  «        | k    rt          ‰|          ‰¦  «        S |r|‰v rt          ‰|         ‰¦  «        S d S d S ©N)Úlenr(   )ÚpositionÚkey_nameÚargsr   Úfound_keywordss     €€€r'   Ú"_extract_namedtuple_arg_or_keywordzE_find_func_form_arguments.<locals>._extract_namedtuple_arg_or_keyword4   sd   ø€ õ ˆt‰9Œ9�xÒÐÝ  X¤°Ñ8Ô8Ð8Øð 	C˜ NÐ2Ð2Ý ¨xÔ 8¸'ÑBÔBÐBð	Cð 	CÐ2Ð2ó    c                ó(   — i | ]}|j         |j        “ŒS © )Úargr%   )Ú.0Úkeywords     r'   ú
<dictcomp>z-_find_func_form_arguments.<locals>.<dictcomp>?   s   € Ð<Ð<Ð<¨ˆŒ�g”mÐ<Ð<Ð<r2   r   Útypename)r-   r.   é   Úfield_namesr+   )r/   Úkeywordsr%   r   )r$   r   r1   r<   ÚnameÚnamesr/   r0   s    `    @@r'   Ú_find_func_form_argumentsr?   3   s½   øøø€ àðCð Cð Cð Cð Cð Cð Cð Cð Œ9€DØŒ}€Hà@HÐPÐ<Ð<°8Ð<Ñ<Ô<Ð<Èbð ð .Ð-°qÀ:ÐNÑNÔN€DØ.Ð.¸ÀMÐRÑRÔR€EØð !�ð !ØŒz˜5Ð Ð å
Ñ
Ô
Ðr2   Fr$   ú
nodes.CallÚ	base_typeúlist[nodes.NodeNG]r   úInferenceContext | NoneÚenumÚboolÚreturnú%tuple[nodes.ClassDef, str, list[str]]c           	     ó&  ‡— 	 t          | ‰¦  «        \  }}	 |j                             dd¦  «                             ¦   «         }nõ# t          $ rè}|s6g }t          | ¦  «        }|r"t          |¦  «        }	ˆfd„|	j        D ¦   «         }n¦t          |d¦  «        r.t          |j
        t          ¦  «        rˆfd„|j
        D ¦   «         }n^t          |d¦  «        rFt          d„ |j        D ¦   «         ¦  «        rˆfd„|j        D ¦   «         }nˆfd	„|j        D ¦   «         }nt          |‚|st          |‚Y d
}~nd
}~ww xY wn!# t          t          f$ r}t          |‚d
}~ww xY w|sd„ |D ¦   «         }d„ |D ¦   «         }|pd}t          j        || j        | j        | j        | j        t          j        ¦   «         ¬¦  «        }
| j        |
_        |
                     |g d
¬¦  «         |D ].}t          j        ¦   «         }|
|_        ||_        |g|
j        |<   Œ/|
||fS )z<Specific inference function for namedtuple or Python 3 enum.ú,ú c                ó:   •— g | ]}t          |‰¦  «        j        ‘ŒS r4   ©r(   r%   ©r6   Úconstr   s     €r'   ú
<listcomp>z#infer_func_form.<locals>.<listcomp>a   s3   ø€ ð "ð "ð "Ø?D� U¨GÑ4Ô4Ô:ð"ð "ð "r2   Úitemsc                ó†   •— g | ]=}t          |d          t          j        ¦  «        ¯"t          |d          ‰¦  «        j        ‘Œ>S ©r   )r   r
   ÚConstr(   r%   rM   s     €r'   rO   z#infer_func_form.<locals>.<listcomp>j   sP   ø€ ð "ð "ð "à!Ý% e¨A¤hµ´Ñ<Ô<ð"Ý$ U¨1¤X¨wÑ7Ô7Ô=ð"ð "ð "r2   Úeltsc              3  óJ   K  — | ]}t          |t          j        ¦  «        V — Œd S r+   )r   r
   ÚTuple)r6   rN   s     r'   ú	<genexpr>z"infer_func_form.<locals>.<genexpr>s   s.   è è € ÐRÐR¸e�: e­U¬[Ñ9Ô9ÐRÐRÐRÐRÐRÐRr2   c                ó„   •— g | ]<}t          |t          j        ¦  «        ¯t          |j        d          ‰¦  «        j        ‘Œ=S rR   )r   r
   rV   r(   rT   r%   rM   s     €r'   rO   z#infer_func_form.<locals>.<listcomp>t   sN   ø€ ð &ð &ð &à %Ý)¨%µ´Ñ=Ô=ð&Ý(¨¬°A¬¸Ñ@Ô@ÔFð&ð &ð &r2   c                ó:   •— g | ]}t          |‰¦  «        j        ‘ŒS r4   rL   rM   s     €r'   rO   z#infer_func_form.<locals>.<listcomp>z   s3   ø€ ð &ð &ð &ØCH�L¨°Ñ8Ô8Ô>ð&ð &ð &r2   Nc                ó,   — g | ]}t          |¦  «        ‘ŒS r4   )Ústr©r6   Úattrs     r'   rO   z#infer_func_form.<locals>.<listcomp>†   s   € Ð7Ð7Ð7 D•c˜$‘i”iÐ7Ð7Ð7r2   c                ó   — g | ]}d |v¯|‘Œ	S )rJ   r4   r\   s     r'   rO   z#infer_func_form.<locals>.<listcomp>‰   s   € ÐAÐAÐA˜4°¸D°°�$°°°r2   ÚUninferable)ÚlinenoÚ
col_offsetÚ
end_linenoÚend_col_offsetÚparent)r   ÚbodyÚ
decorators)r?   r%   ÚreplaceÚsplitÚAttributeErrorÚ_get_namedtuple_fieldsr   rT   Úhasattrr   rP   ÚlistÚallr   r   r
   ÚClassDefr`   ra   rb   rc   ÚUnknownrd   ÚpostinitÚ	EmptyNodeÚattrnameÚinstance_attrs)r$   rA   r   rD   r=   r>   Ú
attributesr&   ÚfieldsÚfields_nodeÚ
class_noder]   Ú	fake_nodes     `          r'   Úinfer_func_formry   J   sæ  ø€ ð,+Ý/°°gÑ>Ô>‰ˆˆeð(	2Ø$)¤K×$7Ò$7¸¸SÑ$AÔ$A×$GÒ$GÑ$IÔ$IˆJˆJøÝð &	2ð &	2ð &	2àð $2Ø�
Ý/°Ñ5Ô5�Øð Ý".¨vÑ"6Ô"6�Kð"ð "ð "ð "ØHSÔHXð"ñ "ô "�Jøõ ˜5 'Ñ*Ô*ð 2­z¸%¼+ÅtÑ/LÔ/Lð 2ð"ð "ð "ð "à%*¤[ð"ñ "ô "�J�Jõ
 ˜U FÑ+Ô+ð 2õ ÐRÐRÀuÄzÐRÑRÔRÑRÔRð 	ð&ð &ð &ð &à).¬ð&ñ &ô &˜
˜
ð&ð &ð &ð &ØLQÌJð&ñ &ô &˜
˜
õ )¨cÐ1Ø!ð 2Ý(¨cÐ1øøøøøøøøøðM&	2øøøøøõN �NÐ+ð +ð +ð +Ý! sÐ*øøøøð+øøøð ð 8à7Ð7¨JÐ7Ñ7Ô7ˆ
ð BÐA :ÐAÑAÔA€Jð Ð �=€Då”ØØŒ{Ø”?Ø”?ØÔ*ÝŒ}‰Œðñ ô €Jð œ€JÔØ×ÒàØØð	 ñ ô ð ð ð 6ð 6ˆÝ”OÑ%Ô%ˆ	Ø%ˆ	ÔØ!ˆ	ÔØ+4¨+ˆ
Ô! $Ñ'Ð'Ø�t˜ZÐ'Ð'sA   ƒD; —-A ÁD; Á
D7ÁCD2Ä-D; Ä2D7Ä7D; Ä;EÅEÅEc                ó:   — t          | j        ¦  «        t          z  S )zRPredicate for class inference tip.

    :type node: ClassDef
    :rtype: bool
    )ÚsetÚ	basenamesr   ©r$   s    r'   Ú_has_namedtuple_baser~   ª   s   € õ ˆtŒ~ÑÔÕ!<Ñ<Ð<r2   c                ó¨   — | j         }t          |t          j        ¦  «        r|j        |k    S t          |t          j        ¦  «        r|j        |k    S dS ©NF)Úfuncr   r
   Ú	Attributerr   ÚNamer=   )r$   r=   r�   s      r'   Ú_looks_liker„   ³   sP   € ØŒ9€DÝ�$�œÑ(Ô(ð %ØŒ} Ò$Ð$Ý�$�œ
Ñ#Ô#ð !ØŒy˜DÒ Ð Øˆ5r2   Ú
namedtuple©r=   ÚEnumr   úIterator[nodes.ClassDef]c                ó–  ‡— t          j        d|                      ¦   «         dddd¬¦  «        g}t          | ||¬¦  «        \  }}}t          j                             | |¬¦  «        }t          d¦  «        } 	 t          |  	                    ¦   «         ¦  «        }n## t          $ r}t          | ¬¦  «        |‚d}~ww xY w	 t          |                     |d|pt          ¦   «         ¦  «        ¦  «                             ¦   «         }	n# t          t          f$ r d	}	Y nw xY w	 t          |||	¦  «        }n_# t           $ r%}
t#          d
t%          |
¦  «        z   ¦  «        |
‚d}
~
wt&          $ r%}
t#          dt%          |
¦  «        z   ¦  «        |
‚d}
~
ww xY wd                     d„ |D ¦   «         ¦  «        }dŠd                     ˆfd„t+          |¦  «        D ¦   «         ¦  «        }t-          t/          ¦   «         ¦  «                             d|› d|›d|› d|› d�	¦  «        }|j        d         j        d         |j        d<   |j        d         j        d         |j        d<   |j        d         j        d         |j        d<   |j        d         j        d         |j        d<   |D ]"}|j        d         j        |         |j        |<   Œ#t7          |g¦  «        S )z5Specific inference function for namedtuple Call node.Útupler   N)r=   rd   r`   ra   rb   rc   r   z*import collections; collections.namedtupler}   ÚrenameFzTypeError: zValueError: ú, c              3  ó    K  — | ]	}|› d �V — Œ
dS )z=NoneNr4   )r6   r5   s     r'   rW   z$infer_named_tuple.<locals>.<genexpr>æ   s(   è è € ÐAÐA¨s ˜]˜]˜]ÐAÐAÐAÐAÐAÐAr2   z[    {name} = property(lambda self: self[{index:d}], doc='Alias for field number {index:d}')ú
c              3  óL   •K  — | ]\  }}‰                      ||¬ ¦  «        V — ŒdS ))r=   ÚindexN)Úformat)r6   r�   r=   Ú	field_defs      €r'   rW   z$infer_named_tuple.<locals>.<genexpr>ë   sN   øè è € ð ð áˆE�4ð 	×Ò˜d¨%ÐÑ0Ô0ðð ð ð ð ð r2   z
class z*(tuple):
    __slots__ = ()
    _fields = z¹
    def _asdict(self):
        return self.__dict__
    @classmethod
    def _make(cls, iterable, new=tuple.__new__, len=len):
        return new(cls, iterable)
    def _replace(self, zP):
        return self
    def __getnewargs__(self):
        return tuple(self)
z
    Ú_asdictÚ_makeÚ_replaceÚ_fields)r
   rƒ   Úrootry   r   ÚCallSiteÚ	from_callr   r!   r"   r#   r   Úinfer_argumentr   Ú
bool_valueÚ_check_namedtuple_attributesr   r   r[   r   ÚjoinÚ	enumerater   r   Ústring_buildre   ÚlocalsÚiter)r$   r   Útuple_base_namerw   r=   rt   Ú	call_siter�   Úer‹   r&   Úreplace_argsÚ
field_defsÚfaker]   r’   s                  @r'   Úinfer_named_tupler¨   Á   sS  ø€ õ
 	Œ
ØØ—9’9‘;”;ØØØØð	
ñ 	
ô 	
ð	+€Oõ $3Øˆo wð$ñ $ô $Ñ €J��jõ Ô"×,Ò,¨T¸7Ð,ÑCÔC€IÝÐDÑEÔE€Dð/Ý�D—J’J‘L”LÑ!Ô!ˆˆøÝð /ð /ð /Ý $Ð'Ñ'Ô'¨QÐ.øøøøð/øøøðÝØ×$Ò$ T¨8°WÐ5RÕ@PÑ@RÔ@RÑSÔSñ
ô 
ç
Š*‰,Œ,ð 	ˆøõ �MÐ*ð ð ð ØˆˆˆðøøøðFÝ1°$¸
ÀFÑKÔKˆ
ˆ
øÝð Eð Eð EÝ! -µ#°c±(´(Ñ":Ñ;Ô;ÀÐDøøøøÝð Fð Fð FÝ! .µ3°s±8´8Ñ";Ñ<Ô<À#ÐEøøøøðFøøøð —9’9ÐAÐA°jÐAÑAÔAÑAÔA€Lð	2ð ð —’ð ð ð ð å$ ZÑ0Ô0ðñ ô ñ ô €Jõ �.Ñ*Ô*Ñ+Ô+×8Ò8ð	Øð	ð 	ð ð	ð 	ð %ð	ð 	ð ð	ð 	ð 	ñô €Dð" $(¤9¨Q¤<Ô#6°yÔ#A€JÔ�iÑ Ø!%¤¨1¤Ô!4°WÔ!=€JÔ�gÑØ$(¤I¨a¤LÔ$7¸
Ô$C€JÔ�jÑ!Ø#'¤9¨Q¤<Ô#6°yÔ#A€JÔ�iÑ Øð <ð <ˆØ"&¤)¨A¤,Ô"5°dÔ";ˆ
Ô˜$ÑÐå��ÑÔÐsO   Á6!B Â
B8Â"B3Â3B8Â<AD ÄDÄDÄD- Ä-
F	Ä7 EÅF	Å$ FÆF	c                ó‚  — t          | ¦  «        }t          ¦   «         }t          | ¦  «        D ]„\  }}t          d„ |D ¦   «         ¦  «        rIt	          j        |¦  «        s5|r3|d                              ¦   «         s|                     d¦  «        s||v rd|z  ||<   |                     |¦  «         Œ…t          |¦  «        S )Nc              3  óJ   K  — | ]}|                      ¦   «         p|d k    V — ŒdS )Ú_N)Úisalnum)r6   Úcs     r'   rW   z5_get_renamed_namedtuple_attributes.<locals>.<genexpr>  s3   è è € Ð:Ð:°�A—I’I‘K”KÐ+ 1¨¢8Ð:Ð:Ð:Ð:Ð:Ð:r2   r   r«   z_%d)
rl   r{   rž   rm   r7   Ú	iskeywordÚisdigitÚ
startswithÚaddrŠ   )r;   r>   ÚseenÚir=   s        r'   Ú"_get_renamed_namedtuple_attributesr´   
  sÒ   € Ý�ÑÔ€EÝ‰5Œ5€DÝ˜[Ñ)Ô)ð 
ð 
‰ˆˆ4åÐ:Ð:°TÐ:Ñ:Ô:Ñ:Ô:ð	!åÔ  Ñ&Ô&ð	!ð ð	!ð �AŒw�ŠÑ Ô ð		!ð
 �Š˜sÑ#Ô#ð	!ð �tˆ|ˆ|à˜q‘yˆE�!‰HØ�Š�‰ŒˆˆÝ�‰<Œ<Ðr2   c                ó  — t          |¦  «        }|rt          |¦  «        }| g|¢R D ]u}t          |t          ¦  «        st	          d¦  «        ‚|                     ¦   «         st          dd|›�z   ¦  «        ‚t          j        |¦  «        rt          d|›�¦  «        ‚Œvt          ¦   «         }|D ]V}| 
                    d¦  «        r|st          d|›�¦  «        ‚||v rt          d|›�¦  «        ‚|                     |¦  «         ŒW|S )Nz*Type names and field names must be stringsz(Type names and field names must be validzidentifiers: z0Type names and field names cannot be a keyword: r«   z-Field names cannot start with an underscore: z"Encountered duplicate field name: )rŠ   r´   r   r[   r   Úisidentifierr   r7   r®   r{   r°   r±   )r9   rt   r‹   r=   r²   s        r'   rœ   rœ     s^  € Ý�zÑ"Ô"€JØð DÝ7¸
ÑCÔCˆ
ð Ð'˜JÐ'Ð'ð 
ð 
ˆÝ˜$¥Ñ$Ô$ð 	QÝ"Ð#OÑPÔPÐPØ× Ò Ñ"Ô"ð 	Ý#Ø:Ð=UÈTÐ=UÐ=UÑUñô ð õ Ô˜TÑ"Ô"ð 	Ý#ØKÀ4ÐKÐKñô ð ð	õ
 ‰5Œ5€DØð ð ˆØ�?Š?˜3ÑÔð 	¨ð 	Ý#ØHÀÐHÐHñô ð ð �4ˆ<ˆ<Ý#Ð$QÈÐ$QÐ$QÑRÔRÐRØ�Š�‰Œˆˆð Ðr2   úIterator[bases.Instance]c                óR  — 	 | j                              |¦  «        }n!# t          t          f$ r}t          |‚d}~ww xY wt          d„ |D ¦   «         ¦  «        st          ‚t          d¦  «        }t          | |g|d¬¦  «        d         }t          | 	                    ¦   «         g¦  «        S )z/Specific inference function for enum Call node.Nc              3  ó„   K  — | ];}t          |t          j        ¦  «        o|                     ¦   «         t          k    V — Œ<d S r+   )r   r
   rn   Úqnamer   )r6   Úitems     r'   rW   zinfer_enum.<locals>.<genexpr>F  sT   è è € ð ð àõ 	�4�œÑ(Ô(ÐG¨T¯ZªZ©\¬\½ZÒ-Gðð ð ð ð ð r2   a‡  
    class EnumMeta(object):
        'docstring'
        def __call__(self, node):
            class EnumAttribute(object):
                name = ''
                value = 0
            return EnumAttribute()
        def __iter__(self):
            class EnumAttribute(object):
                name = ''
                value = 0
            return [EnumAttribute()]
        def __reversed__(self):
            class EnumAttribute(object):
                name = ''
                value = 0
            return (EnumAttribute, )
        def __next__(self):
            return next(iter(self))
        def __getitem__(self, attr):
            class Value(object):
                @property
                def name(self):
                    return ''
                @property
                def value(self):
                    return attr

            return Value()
        __members__ = ['']
    T)r   rD   r   )
r�   r"   r   r#   r   Úanyr   ry   r¡   Úinstantiate_class)r$   r   Úinferredr&   Ú	enum_metarw   s         r'   Ú
infer_enumrÀ   <  sÒ   € ð
+Ø”9—?’? 7Ñ+Ô+ˆˆøÝ�MÐ*ð +ð +ð +Ý! sÐ*øøøøð+øøøõ ð ð àðñ ô ñ ô ð "õ "Ð!å$ð	ñ!ô !€IõD ! ¨	 {¸GÈ$ÐOÑOÔOÐPQÔR€JÝ�×-Ò-Ñ/Ô/Ð0Ñ1Ô1Ð1s   ‚ �;®6¶;a  
    def __or__(self, other):
        return {name}(self.value | other.value)
    def __and__(self, other):
        return {name}(self.value & other.value)
    def __xor__(self, other):
        return {name}(self.value ^ other.value)
    def __add__(self, other):
        return {name}(self.value + other.value)
    def __div__(self, other):
        return {name}(self.value / other.value)
    def __invert__(self):
        return {name}(~self.value)
    def __mul__(self, other):
        return {name}(self.value * other.value)
únodes.ClassDefc                ó  ‡— d„ |                       ¦   «         D ¦   «         D �]æ}|                      ¦   «         j        dk    r �nÅi }t          ¦   «         }| j                             ¦   «         D �]¦\  }}t          d„ |D ¦   «         ¦  «        s|dk    rŒ&|d                              ¦   «         }t          |t          j
        ¦  «        rMt          |j        d         t          j        ¦  «        r |j        d                              ¦   «         }n,|j        }n$t          |t          j        ¦  «        r	|j        g}nŒËd}|j        �~t          |j        t          j        ¦  «        rFt          |j        j        t$          ¦  «        rt'          |j        j        ¦  «        }n&|j        j        }n|j                             ¦   «         }g }	|D �]D}
t          |
t          j        ¦  «        rŒ|                     |
j        ¦  «         t/          d                     |
j        d                     | j        ¦  «        |¬	¦  «        ¦  «        }d
|v r#|t6                               |
j        ¬¦  «        z  }t9          t;          ¦   «         d¬¦  «                             |¦  «        |
j                 }|
j        |_        |                       ¦   «         D ]}|g|j        |j        <   Œ|	 !                    | "                    ¦   «         ¦  «         |j        €�Œ?|||<   �ŒF|	| j        |<   �Œ¨t          j#        | | j$        | j%        | j&        | j'        ¬¦  «        g| j        d<   t          j#        | | j$        | j%        | j&        | j'        ¬¦  «        Š‰ (                    ˆfd„|                     ¦   «         D ¦   «         ¦  «         ‰g| j        d<   d|vrNt/          d¦  «        }t9          t;          ¦   «         ¦  «                             |¦  «        d         }|g| j        d<    | S )zSpecific inference for enums.c              3  ó.   K  — | ]}|j         D ]}|V — ŒŒd S r+   )r|   )r6   ÚclsÚbs      r'   rW   z#infer_enum_class.<locals>.<genexpr>†  s1   è è € ÐDÐD˜3°c´mÐDÐD°�QÐDÐDÐDÐDÐDÐDÐDr2   rD   c              3  óL   K  — | ]}t          |t          j        ¦  «         V — Œ d S r+   )r   r
   Ú
AssignName)r6   r%   s     r'   rW   z#infer_enum_class.<locals>.<genexpr>Ž  s2   è è € ÐPÐPÀ�
 5­%Ô*:Ñ;Ô;Ð;ÐPÐPÐPÐPÐPÐPr2   Ú_ignore_r   Naò  
                class {name}({types}):
                    @property
                    def value(self):
                        return {return_value}
                    @property
                    def _value_(self):
                        return {return_value}
                    @property
                    def name(self):
                        return "{name}"
                    @property
                    def _name_(self):
                        return "{name}"
                rŒ   )r=   ÚtypesÚreturn_valueÚIntFlagr†   F)Úapply_transforms©rd   r`   ra   rb   rc   Ú_value2member_map_c                ó¨   •— g | ]N\  }}t          j        |‰¬ ¦  «        t          j        |j        ‰|j        |j        |j        |j        ¬¦  «        f‘ŒOS ))rd   rÍ   )r
   rS   rƒ   r=   r`   ra   rb   rc   )r6   ÚkÚvÚmemberss      €r'   rO   z$infer_enum_class.<locals>.<listcomp>é  st   ø€ ð ð ð ñ �A�qõ ”K ¨'Ð2Ñ2Ô2Ý”JØœØ&Ø œxØ#$¤<Ø#$¤<Ø'(Ô'7ðñ ô ð
ðð ð r2   Ú__members__r=   zY
            @property
            def name(self):
                return ''
            ))Úmror—   r=   r{   r    rP   r¼   Ú	statementr   r
   ÚAssignÚtargetsrV   ÚiteredÚ	AnnAssignÚtargetr%   rS   r[   ÚreprÚ	as_stringÚStarredr±   r   r‘   r�   r|   ÚINT_FLAG_ADDITION_METHODSr   r   rŸ   rd   Ú	mymethodsÚappendr½   ÚDictr`   ra   rb   rc   rp   )r$   ÚbasenameÚdunder_membersÚtarget_namesÚlocalÚvaluesÚstmtr×   Úinferred_return_valueÚnew_targetsrÚ   Úclassdefr§   ÚmethodÚcodeÚname_dynamicclassattrrÒ   s                   @r'   Úinfer_enum_classrî   „  s5  ø€ àDÐD $§(¢(¡*¤*ÐDÑDÔDð Jñ JˆØ�9Š9‰;Œ;Ô˜vÒ%Ð%à‰EØˆÝ‘u”uˆØ!œ[×.Ò.Ñ0Ô0ð H	-ñ H	-‰MˆE�6åÐPÐPÈÐPÑPÔPÑPÔPðà˜JÒ&Ð&àà˜!”9×&Ò&Ñ(Ô(ˆDÝ˜$¥¤Ñ-Ô-ð Ý˜dœl¨1œo­u¬{Ñ;Ô;ð +Ø"œl¨1œo×4Ò4Ñ6Ô6�G�Gà"œl�G�GÝ˜D¥%¤/Ñ2Ô2ð Øœ;˜-��àà$(Ð!ØŒzÐ%Ý˜dœj­%¬+Ñ6Ô6ð CÝ! $¤*Ô"2µCÑ8Ô8ð AÝ04°T´ZÔ5EÑ0FÔ0FÐ-Ð-à04´
Ô0@Ð-Ð-à,0¬J×,@Ò,@Ñ,BÔ,BÐ)àˆKØ!ð *-ñ *-�Ý˜f¥e¤mÑ4Ô4ð ØØ× Ò  ¤Ñ-Ô-Ð-å!ð÷ ’FØ#œ[Ø"Ÿiši¨¬Ñ7Ô7Ø%:ð ñ ô ñô �ð*  Ð(Ð(ð
 Õ 9× @Ò @ÀfÄkÐ @Ñ RÔ RÑR�Hå%Ý"Ñ$Ô$°uðñ ô ç’,˜xÑ(Ô(¨¬ô6�ð %œm�”Ø"ŸnšnÑ.Ô.ð 8ð 8�FØ06¨x�D”K ¤Ñ,Ð,Ø×"Ò" 4×#9Ò#9Ñ#;Ô#;Ñ<Ô<Ð<Ø”:Ð%ÙØ(,�˜uÑ%Ñ%Ø!,ˆDŒK˜ÑÑõ ŒJØØ”{Øœ?Øœ?Ø#Ô2ðñ ô ð-
ˆŒÐ(Ñ)õ ”*ØØ”;Ø”Ø”ØÔ.ð
ñ 
ô 
ˆð 	×Òðð ð ð ð +×0Ò0Ñ2Ô2ðñ ô ñ	
ô 	
ð 	
ð  '. YˆŒ�MÑ"ð ˜Ð%Ð%Ýðñô ˆDõ %3µ>Ñ3CÔ3CÑ$DÔ$D×$QÒ$QÐRVÑ$WÔ$WØô%Ð!ð $9Ð"9ˆDŒK˜ÑØØ€Kr2   c                ó˜  — d„ | j         D ¦   «         }t          d¦  «                             | j        d                     |¦  «        ¬¦  «        }t          |¦  «        }	 t          t          ||¦  «        ¦  «        }n$# t          $ r}t          ||¬¦  «        |‚d}~ww xY w|  
                    ¦   «         D ]}|g|j        |j        <   Œ| j         D ]m}t          |t          j        ¦  «        r'|j        D ]}	|	j        }
| j        |
         |j        |
<   ŒŒCt          |t          j        ¦  «        r|g|j        |j        <   Œnt#          |f¦  «        S )z&Infer a subclass of typing.NamedTuple.c                óZ   — g | ](}t          |t          j        ¦  «        ¯|j        j        ‘Œ)S r4   )r   r
   rÙ   rÚ   r=   )r6   Ú	annassigns     r'   rO   z1infer_typing_namedtuple_class.<locals>.<listcomp>  s@   € ð ð ð àÝ�i¥¤Ñ1Ô1ðØÔÔðð ð r2   zU
    from collections import namedtuple
    namedtuple({typename!r}, {fields!r})
    rI   )r9   ru   )r$   r   N)re   r   r‘   r=   r�   r   r!   r¨   r#   r   rß   r    r   r
   rÖ   r×   rn   r¡   )rw   r   Úannassigns_fieldsrì   r$   Úgenerated_class_noder¤   rë   Ú	body_noderÚ   r]   s              r'   Úinfer_typing_namedtuple_classrõ     s•  € ðð à#œðñ ô Ðõ
 ð	ñô ÷
 ‚f�j”o¨c¯hªhÐ7HÑ.IÔ.I€fÑJÔJð 	õ ˜ÑÔ€Dð@Ý#Õ$5°d¸GÑ$DÔ$DÑEÔEÐÐøÝð @ð @ð @Ý $°Ð8Ñ8Ô8¸aÐ?øøøøð@øøøà×&Ò&Ñ(Ô(ð <ð <ˆØ4:°8ÐÔ# F¤KÑ0Ð0à”_ð Fð Fˆ	Ý�i¥¤Ñ.Ô.ð 	FØ#Ô+ð Lð L�Ø”{�Ø4>Ô4EÀdÔ4KÐ$Ô+¨DÑ1Ð1ðLõ ˜	¥5¤>Ñ2Ô2ð 	FØ;D¸+Ð Ô'¨	¬Ñ7øåÐ%Ð'Ñ(Ô(Ð(s   ÁA< Á<
BÂBÂBc                óJ   — t          d¦  «        }|                     |¦  «        S )zÑ
    Starting with python3.9, NamedTuple is a function of the typing module.
    The class NamedTuple is build dynamically through a call to `type` during
    initialization of the `_NamedTuple` variable.
    zD
        from typing import _NamedTuple
        _NamedTuple
        )r   r"   )r$   r   Úklasss      r'   Ú infer_typing_namedtuple_functionrø   5  s,   € õ ð	ñô €Eð �;Š;�wÑÔÐr2   c                ó¦  — 	 t          | j                             ¦   «         ¦  «        }n!# t          t          f$ r}t
          |‚d}~ww xY w|                     ¦   «         t          vrt
          ‚t          | j	        ¦  «        dk    rt
          ‚t          | j	        d         t          j        t          j        f¦  «        st
          ‚t          | |¦  «        S )z$Infer a typing.NamedTuple(...) call.Né   r:   )r!   r�   r"   r   r#   r   rº   r   r,   r/   r   r
   ÚListrV   r¨   )r$   r   r�   r&   s       r'   Úinfer_typing_namedtuplerü   D  sº   € ð+Ý�D”I—O’OÑ%Ô%Ñ&Ô&ˆˆøÝ�MÐ*ð +ð +ð +Ý! sÐ*øøøøð+øøøð ‡z‚z�|„|Õ6Ð6Ð6Ý!Ð!å
ˆ4Œ9�~„~˜ÒÐÝ!Ð!å�d”i ”l¥U¤Zµ´Ð$=Ñ>Ô>ð "Ý!Ð!å˜T 7Ñ+Ô+Ð+s   ‚&) ©AºAÁAr[   c                ó˜  — g }d}	 t          | j        d                              ¦   «         ¦  «        }n,# t          t          f$ r}t
          |‚d}~wt          $ r Y nw xY w|s`| j        D ]X}|j        dk    rK	 t          |j	                             ¦   «         ¦  «        }n!# t          t          f$ r}t
          |‚d}~ww xY w nŒYt          |t          j        ¦  «        st
          ‚|j        D ]Â}t          |t          j        ¦  «        r(|                     |                     ¦   «         ¦  «         ŒDt          |t          j        t          j        f¦  «        st
          ‚t'          |j        ¦  «        dk    rt
          ‚|                     |j        d                              ¦   «         ¦  «         ŒÃ|rdd                     |¦  «        › d�}nd	}|S )
z¨Get and return fields of a NamedTuple in code-as-a-string.

    Because the fields are represented in their code form we can
    extract a node from them later on.
    Nr:   r;   rú   r   ú(rI   z,)Ú )r!   r/   r"   r   r#   r   Ú
IndexErrorr<   r5   r%   r   r
   ÚBaseContainerrT   rS   rà   rÜ   rû   rV   r,   r�   )r$   r>   Ú	containerr&   Úkeyword_nodeÚeltr;   s          r'   rj   rj   [  sæ  € ð €EØ€IðÝ˜œ 1œ×+Ò+Ñ-Ô-Ñ.Ô.ˆ	ˆ	øÝ�MÐ*ð +ð +ð +Ý! sÐ*øøøøåð ð ð Øˆðøøøàð Ø œMð 	ð 	ˆLØÔ =Ò0Ð0ð7Ý $ \Ô%7×%=Ò%=Ñ%?Ô%?Ñ @Ô @�I�IøÝ&­Ð6ð 7ð 7ð 7Ý-°3Ð6øøøøð7øøøà�ð 1õ �i¥Ô!4Ñ5Ô5ð "Ý!Ð!ØŒ~ð .ð .ˆÝ�c�5œ;Ñ'Ô'ð 	Ø�LŠL˜Ÿš™œÑ)Ô)Ð)ØÝ˜#¥¤
­E¬KÐ8Ñ9Ô9ð 	&Ý%Ð%ÝˆsŒx‰=Œ=˜AÒÐÝ%Ð%Ø�Š�S”X˜a”[×*Ò*Ñ,Ô,Ñ-Ô-Ð-Ð-àð Ø-˜#Ÿ(š( 5™/œ/Ð-Ð-Ð-ˆˆàˆØÐs3   †,3 ³AÁAÁAÁAÁ6&BÂB;Â.B6Â6B;rÄ   úastroid.ClassDefc                ó,   — |                       d¦  «        S )z,Return whether cls is a subclass of an Enum.r   )Úis_subtype_of)rÄ   s    r'   Ú_is_enum_subclassr  …  s   € à×Ò˜[Ñ)Ô)Ð)r2   Úmanagerr   ÚNonec                ó†  — |                       t          j        t          t          ¦  «        t
          ¦  «         |                       t          j        t          t          ¦  «        t          ¦  «         |                       t          j        t          t          ¬¦  «         |                       t          j        t          t          ¦  «        t          ¦  «         |                       t          j        t          t          ¦  «        d„ ¦  «         |                       t          j        t          t          ¦  «        t           ¦  «         d S )N)Ú	predicatec                óf   — | j         dk    o&t          |                      ¦   «         dd ¦  «        dk    S )Nr   r=   Útyping)r=   Úgetattrr—   r}   s    r'   ú<lambda>zregister.<locals>.<lambda>š  s1   € �T”Y ,Ò.ð ;Ý�D—I’I‘K”K ¨Ñ.Ô.°(Ò:ð r2   )Úregister_transformr
   ÚCallr	   r¨   Ú_looks_like_namedtuplerÀ   Ú_looks_like_enumrn   rî   r  rõ   r~   ÚFunctionDefrø   rü   Ú_looks_like_typing_namedtuple)r	  s    r'   Úregisterr  Š  s  € Ø×ÒÝŒ
•MÕ"3Ñ4Ô4Õ6Lñô ð ð ×Ò�uœz­=½Ñ+DÔ+DÕFVÑWÔWÐWØ×ÒÝŒÕ(Õ4Eð ñ ô ð ð ×ÒÝŒÝÕ3Ñ4Ô4Ýñô ð ð
 ×ÒÝÔÝÕ6Ñ7Ô7ð	;ð 	;ñô ð ð ×ÒÝŒ
ÝÕ-Ñ.Ô.Ý%ñô ð ð ð r2   r€   )
r$   r@   rA   rB   r   rC   rD   rE   rF   rG   )rF   rE   r+   )r$   r@   r   rC   rF   rˆ   )F)r$   r@   r   rC   rF   r·   )r$   rÁ   rF   rÁ   )r   rC   )r$   r@   rF   r[   )rÄ   r  rF   rE   )r	  r   rF   r
  )7Ú__doc__Ú
__future__r   Ú	functoolsr7   Úcollections.abcr   Útextwrapr   r  r   Úastroidr   r   r	   r
   r   Úastroid.builderr   r   r   Úastroid.contextr   Úastroid.exceptionsr   r   r   r   Úastroid.managerr   r   Ú__annotations__r   r   r(   r?   ry   r~   r„   Úpartialr  r  r  r¨   r´   rœ   rÀ   rÞ   rî   rõ   rø   rü   rj   r  r  r4   r2   r'   ú<module>r$     sK  ðð
 5Ð 4Ð 4à "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø €€€Ø $Ð $Ð $Ð $Ð $Ð $Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à €€€Ø @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ø NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NØ ,Ð ,Ð ,Ð ,Ð ,Ð ,ðð ð ð ð ð ð ð ð ð ð ð ð +Ð *Ð *Ð *Ð *Ð *à$€
Ð $Ð $Ð $Ñ $àØ"ð&Ð ð ð ð ñ ð&ð &ð &Ð ð ð ð ñ ð	ð 	ð 	ð ð  ð  ð4 (,Øð	](ð ](ð ](ð ](ð ](ð@=ð =ð =ðð ð ð ð +˜Ô*¨;¸\ÐJÑJÔJÐ Ø$�9Ô$ [°vÐ>Ñ>Ô>Ð Ø 1 	Ô 1°+ÀLÐ QÑ QÔ QÐ ð :>ðFð Fð Fð Fð FðRð ð ð"ð ð ð ðD :>ð32ð 32ð 32ð 32ð 32ðlÐ ð$Mð Mð Mð Mð`)ð )ð )ð )ð )ðB ð  ð  ð  ð  ð  :>ð,ð ,ð ,ð ,ð ,ð.'ð 'ð 'ð 'ðT*ð *ð *ð *ð
ð ð ð ð ð r2   