Ë
    pPêj€K  ã                  óÖ  — U d Z ddlmZ ddlZddlZddlZddlZddlZddlm	Z	m
Z
mZ ddlmZmZmZmZ ddlZeeef   Zded<    ej0                  d«      Zd	ed
<    ej0                  d«      Zd	ed<   d+d„Z G d„ d«      Z G d„ de«      ZdZd	ed<   dZd	ed<   dZ d	ed<   dZ!d	ed<   dZ"d	ed<   dZ#d	ed<   dZ$d	ed<    G d „ d!«      Z%d,d"„Z&d-d#„Z'd.d$„Z(d/d%„Z)d0d&„Z*d1d'„Z+d2d(„Z,d3d)„Z-d4d*„Z.y)5z¡Parsing/inferring signatures from documentation.

This module provides several functions to generate better stubs using
docstrings and Sphinx docs (.rst files).
é    )ÚannotationsN)ÚMutableMappingÚMutableSequenceÚSequence)ÚAnyÚFinalÚ
NamedTupleÚ	TypeAliasÚ
_TypeAliasÚSigz5^[a-zA-Z_][\w\[\], .\"\'|]*(\.[a-zA-Z_][\w\[\], ]*)*$r   Ú_TYPE_REz\**[A-Za-z_][A-Za-z0-9_]*$Ú_ARG_NAME_REc                óL   — | dv ryd| v rd| vryt         j                  | «      duS )zCTry to determine whether a string might be a valid type annotation.)ÚTrueÚFalseÚretvalFú,ú[N)r   Úmatch)Úss    úQ/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/mypy/stubdoc.pyÚis_valid_typer      s2   € àÐ'Ñ'ØØ
ˆa�x�C˜q‘LØÜ�>‰>˜!Ó DÐ(Ð(ó    c                  óV   — e Zd ZdZ	 ddddœ	 	 	 	 	 	 	 	 	 dd„Zdd„Zdd„Zdd	„Zdd
„Zy)ÚArgSigz%Signature info for a single argument.NFz...)ÚdefaultÚdefault_valuec               ó<   — || _         || _        || _        || _        y ©N)ÚnameÚtyper   r   )Úselfr    r!   r   r   s        r   Ú__init__zArgSig.__init__'   s!   € ð ˆŒ	ØˆŒ	àˆŒØ*ˆÕr   c                ót   — | j                   j                  d«      xr | j                   j                  d«       S )NÚ*ú**©r    Ú
startswith©r"   s    r   Úis_star_argzArgSig.is_star_arg5   s.   € Ø�y‰y×#Ñ# CÓ(ÒK°·±×1EÑ1EÀdÓ1KÐ-KÐKr   c                ó8   — | j                   j                  d«      S )Nr&   r'   r)   s    r   Úis_star_kwargzArgSig.is_star_kwarg8   s   € Ø�y‰y×#Ñ# DÓ)Ð)r   c                óš   — dj                  t        | j                  «      t        | j                  «      t        | j                  «      «      S )Nz$ArgSig(name={}, type={}, default={}))ÚformatÚreprr    r!   r   r)   s    r   Ú__repr__zArgSig.__repr__;   s5   € Ø5×<Ñ<Ü�—‘‹OœT $§)¡)›_¬d°4·<±<Ó.@ó
ð 	
r   c                óø   — t        |t        «      rj| j                  |j                  k(  xrO | j                  |j                  k(  xr4 | j                  |j                  k(  xr | j
                  |j
                  k(  S y)NF)Ú
isinstancer   r    r!   r   r   )r"   Úothers     r   Ú__eq__zArgSig.__eq__@   sk   € Ü�eœVÔ$à—	‘	˜UŸZ™ZÑ'ò >Ø—I‘I §¡Ñ+ò>à—L‘L E§M¡MÑ1ò>ð ×&Ñ&¨%×*=Ñ*=Ñ=ð	ð r   r   )
r    Ústrr!   ú
str | Noner   Úboolr   r5   ÚreturnÚNone©r8   r7   )r8   r5   )r3   r   r8   r7   )	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r#   r*   r,   r0   r4   © r   r   r   r   $   sa   „ Ù/ð
  ð+ð
 Ø"ñ+àð+ð ð+ð
 ð+ð ð+ð 
ó+óLó*ó
ô
r   r   c                  óŠ   — e Zd ZU ded<   ded<   ded<   dZded<   d	Zded
<   dd„Zdd„Zdd„Z	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 dd„Z	y	)ÚFunctionSigr5   r    úlist[ArgSig]Úargsr6   Úret_typeÚ Ú	type_argsNÚ	docstringc                óÚ   — t        | j                  j                  d«      xrF | j                  j                  d«      xr) | j                  xr | j                  d   j                  dv «      S )NÚ__r   ©r"   Úcls)r7   r    r(   ÚendswithrC   r)   s    r   Úis_special_methodzFunctionSig.is_special_methodR   sa   € ÜØ�I‰I× Ñ  Ó&ò 5Ø—	‘	×"Ñ" 4Ó(ò5à—	‘	ò5ð —	‘	˜!‘×!Ñ! _Ð4ó	
ð 	
r   c                ó   — | j                   r+| j                   d   j                  dv r| j                   dd }n| j                   }t        |«      dk(  xr< t        d„ |D «       «      xr( |d   j	                  «       xr |d   j                  «       S )z=Return if this signature has catchall args: (*args, **kwargs)r   rJ   é   Né   c              3  ó8   K  — | ]  }|j                   d v –— Œ y­w))NÚobjectr   ú
typing.AnyN)r!   )Ú.0Úas     r   ú	<genexpr>z0FunctionSig.has_catchall_args.<locals>.<genexpr>b   s   è ø€ ÒRÈ�A—F‘FÐCÔCÑRùs   ‚)rC   r    ÚlenÚallr*   r,   )r"   rC   s     r   Úhas_catchall_argszFunctionSig.has_catchall_argsZ   s…   € à�9Š9˜Ÿ™ 1™×*Ñ*¨oÑ=Ø—9‘9˜Q˜R�=‰Dà—9‘9ˆDä�‹I˜‰Nò (ÜÑRÈTÔRÓRò(à�Q‘×#Ñ#Ó%ò(ð �Q‘×%Ñ%Ó'ð		
r   c                óB   — | j                  «       xr | j                  dv S )zKReturn if this signature is the catchall identity: (*args, **kwargs) -> Any)Nr   rS   )rY   rD   r)   s    r   Úis_catchall_signaturez!FunctionSig.is_catchall_signatureg   s    € à×%Ñ%Ó'ÒX¨D¯M©MÐ=XÐ,XÐXr   c           
     óî  — g }| j                   D ]Ã  }|j                  }|t        j                  v rd|z   }|j                  €.|�,|j                  dvr|j                  j                  d«      s|}	n|j                  }	|	r'|d|	z   z  }|j                  r1|d|j                  › �z  }n|j                  r|d|j                  › �z  }|j                  |«       ŒÅ d}
| j                  r| j                  n|}|�d|z   }
|rd	nd}|› |› d
| j                  › | j                  › ddj                  |«      › d|
› d�
}|r| j                  xs |nd }|r&d|› dt        j                  j                  |«      › �}nd}|› |› �S )NÚ_rJ   r%   z: z = ú=rE   z -> zasync zdef ú(ú, ú)ú:ú
z    z ...)rC   r    ÚkeywordÚkwlistr!   r(   r   r   ÚappendrD   rF   ÚjoinrG   ÚmypyÚutilÚquote_docstring)r"   ÚindentÚis_asyncÚany_valrG   Úinclude_docstringsrC   ÚargÚarg_defÚarg_typeÚretfieldrD   ÚprefixÚsigÚdocÚsuffixs                   r   Ú
format_sigzFunctionSig.format_sigk   sŽ  € ð ˆØ—9‘9ò 	!ˆCØ—h‘hˆGàœ'Ÿ.™.Ñ(Ø ™-�ð —‘Ð ØÐ'Ø—H‘H OÑ3ØŸ™×+Ñ+¨CÔ0à'.‘àŸ8™8�ÙØ˜4 (™?Ñ*�Ø—;’;Ø  S×%6Ñ%6Ð$7Ð8Ñ8‘Gà—’Ø˜Q˜s×0Ñ0Ð1Ð2Ñ2�à�K‰K˜Õ ð/	!ð2 ˆØ$(§M¢M�4—=’=°wˆØÐØ Ñ(ˆHá%‘¨2ˆØ�˜˜  T§Y¡Y K°·±Ð/?¸qÀÇÁÈ4ÃÐ@QÐQRÐS[ÐR\Ð\]Ð^ˆñ 0Bˆt�~‰~Ò*¡ÀtˆÙØ˜&˜ ¤d§i¡i×&?Ñ&?ÀÓ&DÐ%EÐF‰FàˆFØ��v�hÐÐr   r:   )rE   FNNF)rk   r5   rl   r7   rm   r6   rG   r6   rn   r7   r8   r5   )
r;   r<   r=   Ú__annotations__rF   rG   rM   rY   r[   rw   r?   r   r   rA   rA   K   s‡   … Ø
ƒIØ
ÓØÓØ€IˆsÓØ €IˆzÓ ó
ó
óYð ØØ"Ø $Ø#(ð0 àð0 ð ð0 ð ð	0 ð
 ð0 ð !ð0 ð 
ô0 r   rA   rO   Ú
STATE_INITrP   ÚSTATE_FUNCTION_NAMEé   ÚSTATE_ARGUMENT_LISTé   ÚSTATE_ARGUMENT_TYPEé   ÚSTATE_ARGUMENT_DEFAULTé   ÚSTATE_RETURN_VALUEé   ÚSTATE_OPEN_BRACKETc                  ó0   — e Zd ZdZdd„Zdd„Zd	d„Zd
d„Zy)ÚDocStringParserz+Parse function signatures in documentation.c                ó¶   — || _         t        g| _        d| _        d | _        d| _        d | _        d| _        d| _        g | _	        d | _
        d | _        g | _        y )NrE   r   F)Úfunction_namery   ÚstateÚaccumulatorrq   Úarg_nameÚarg_defaultrD   ÚfoundrC   Úpos_onlyÚkeyword_onlyÚ
signatures)r"   rˆ   s     r   r#   zDocStringParser.__init__«   s\   € à*ˆÔÜ �\ˆŒ
ØˆÔØ$(ˆŒØˆŒØ'+ˆÔØˆŒØˆŒ
Ø"$ˆŒ	Ø$(ˆŒØ(,ˆÔà-/ˆ�r   c           	     óâ  — |j                   t        j                  k(  rO|j                  | j                  k(  r6| j
                  d   t        k(  r | j
                  j                  t        «       y|j                   t        j                  k(  rm|j                  dk(  r^| j
                  d   t        k(  rH| j
                  j                  «        d| _        d| _        | j
                  j                  t        «       y| j
                  d   t        k(  r| j
                  j                  «        y|j                   t        j                  k(  rc|j                  dv rU| j
                  d   t        k7  r?| xj                  |j                  z  c_        | j
                  j                  t        «       y|j                   t        j                  k(  r^|j                  dv rP| j
                  d   t        k(  r:| xj                  |j                  z  c_        | j
                  j                  «        y|j                   t        j                  k(  r]|j                  dk(  rN| j
                  d   t        k(  r8| j                  | _        d| _        | j
                  j                  t         «       y|j                   t        j                  k(  rE|j                  dk(  r6| j
                  d   t         k(  r | j                  dk(  r| j#                  «        y|j                   t        j                  k(  r¤|j                  dk(  r•| j
                  d   t        t         fv rz| j
                  d   t         k(  r,| j                  | _        | j
                  j                  «        n| j                  | _        d| _        | j
                  j                  t&        «       y|j                   t        j                  k(  �r&|j                  d	v �r| j
                  d   t        t&        t         fv �rö| j
                  d   t&        k(  r-| j                  | _        | j
                  j                  «        �nL| j
                  d   t         k(  r-| j                  | _        | j
                  j                  «        �n	| j
                  d   t        k(  ró| j                  d
k(  r?| j*                  �| j#                  «        yt-        | j.                  «      | _        d| _        n¥| j                  j1                  d
«      rt-        | j.                  «      dz   | _        | j                  | _        |j                  dk(  r| j                  j3                  «       dk(  s0t4        j7                  | j                  «      s| j#                  «        y|j                  dk(  r{| j
                  d   t        k(  rK| j*                  �?| j*                  t-        | j.                  «      k(  r| j                  s| j#                  «        y| j
                  j                  «        | j                  r´| j$                  rZt9        | j$                  «      sE| j.                  j                  t;        | j                  dt=        | j(                  «      ¬«      «       nN| j.                  j                  t;        | j                  | j$                  t=        | j(                  «      ¬«      «       d| _        d| _        d| _        d| _        y|j                   t        j                  k(  r«|j                  dk(  rœ| j
                  d   t        k(  r†|j                  dk(  rv| j>                  €| j*                  €| j.                  s| j#                  «        yt-        | j.                  «      | _        | j
                  j                  t         «       d| _        yy|j                   t        j                  k(  rL|j                  dk(  r=| j
                  d   t        k(  r'd| _        | j
                  j                  t@        «       y|j                   t        jB                  t        jD                  fv rð| j
                  d   t        t@        fv rÕ| j
                  d   t@        k(  rXt9        | j                  «      s| j#                  «        y| j                  | _#        d| _        | j
                  j                  «        | j                  rL| jH                  j                  tK        | j                  | j.                  | jF                  ¬«      «       d| _        g | _        d| _#        y| xj                  |j                  z  c_        y)z)Process next token from the token stream.éÿÿÿÿr_   rE   T)r   r_   ú{)ú]ra   ú}rb   r^   )r   ra   r%   NrO   ra   )r    r!   r   ú/z->)r    rC   rD   Fr   )&r!   ÚtokenizeÚNAMEÚstringrˆ   r‰   ry   rf   rz   ÚOPÚpoprŠ   r�   r|   r„   r‹   r~   Úresetrq   r€   rŒ   r�   rW   rC   r(   Ústripr   r   r   r   r7   rŽ   r‚   ÚNEWLINEÚ	ENDMARKERrD   r�   rA   )r"   Útokens     r   Ú	add_tokenzDocStringParser.add_token»   s¿  € ð �J‰Jœ(Ÿ-™-Ò'Ø—‘ × 2Ñ 2Ò2Ø—
‘
˜2‘¤*Ò,à�J‰J×ÑÔ1Õ2ð �J‰Jœ(Ÿ+™+Ò%Ø—‘ Ò#Ø—
‘
˜2‘Ô"5Ò5à�J‰J�N‰NÔØ!ˆDÔØˆDŒJØ�J‰J×ÑÔ1Õ2à�Z‰Z˜‰^Ô2Ò2à�J‰J�N‰NÕð �J‰Jœ(Ÿ+™+Ò%Ø—‘ Ñ/Ø—
‘
˜2‘¤*Ò,à×Ò §¡Ñ,ÕØ�J‰J×ÑÔ0Õ1ð �J‰Jœ(Ÿ+™+Ò%Ø—‘ Ñ/Ø—
‘
˜2‘Ô"4Ò4à×Ò §¡Ñ,ÕØ�J‰J�N‰NÕð �J‰Jœ(Ÿ+™+Ò%Ø—‘ Ò#Ø—
‘
˜2‘Ô"5Ò5à ×,Ñ,ˆDŒMØ!ˆDÔØ�J‰J×ÑÔ1Õ2ð �J‰Jœ(Ÿ+™+Ò%Ø—‘ Ò#Ø—
‘
˜2‘Ô"5Ò5Ø× Ñ  BÒ&ð �J‰J�Lð �J‰Jœ(Ÿ+™+Ò%Ø—‘ Ò#Ø—
‘
˜2‘Ô#6Ô8KÐ"LÑLà�z‰z˜"‰~Ô!4Ò4Ø $× 0Ñ 0�”Ø—
‘
—‘Õ à $× 0Ñ 0�”Ø!ˆDÔØ�J‰J×ÑÔ4Õ5ð �J‰Jœ(Ÿ+™+Ó%Ø—‘ 
Ò*Ø—
‘
˜2‘Ü#Ô%;Ô=PÐQòRð �z‰z˜"‰~Ô!7Ò7Ø#'×#3Ñ#3�Ô Ø—
‘
—‘Ö Ø—‘˜B‘Ô#6Ò6Ø $× 0Ñ 0�”Ø—
‘
—‘Ö Ø—‘˜B‘Ô#6Ò6Ø×#Ñ# sÒ*Ø×(Ñ(Ð4àŸ
™
œØÜ(+¨D¯I©I«�DÔ%Ø')�DÕ$à×'Ñ'×2Ñ2°3Ô7Ü,/°·	±	«N¸QÑ,>˜Ô)Ø$(×$4Ñ$4�D”MàŸ™¨Ò+°×0@Ñ0@×0FÑ0FÓ0HÈBÒ0NÜ*×0Ñ0°·±Ô?àŸ
™
œØà�|‰|˜sÒ"à—J‘J˜r‘NÔ&9Ò9Ø×)Ñ)Ð5Ø×)Ñ)¬S°·±«^Ò;Ø ŸMšMð —J‘J”LØØ—
‘
—‘Ô ð �}Š}Ø—=’=¬°t·}±}Ô)Eà—I‘I×$Ñ$Ü D§M¡M¸ÄdÈ4×K[ÑK[ÓF\Ô]õð —I‘I×$Ñ$ÜØ!%§¡°T·]±]ÌDÐQU×QaÑQaÓLbôôð
 ˆDŒMØ ˆDŒMØ#ˆDÔØ!ˆDÕà�J‰Jœ(Ÿ+™+Ò%Ø—‘ Ò#Ø—
‘
˜2‘Ô"5Ò5à�|‰|˜sÒ"Ø—=‘=Ð,°×0AÑ0AÐ0MÐUY×U^ÒU^ð
 —J‘J”LØÜ # D§I¡I£�”Ø—
‘
×!Ñ!Ô"5Ô6Ø#%�Õ ð #ð �Z‰Zœ8Ÿ;™;Ò&¨5¯<©<¸4Ò+?ÀDÇJÁJÈrÁNÔV`ÒD`Ø!ˆDÔØ�J‰J×ÑÔ0Õ1ð �Z‰ZœH×,Ñ,¬h×.@Ñ.@ÐAÑAÀdÇjÁjÐQSÁnÜÜðY
ñ G
ð �z‰z˜"‰~Ô!3Ò3Ü$ T×%5Ñ%5Ô6Ø—J‘J”LØØ $× 0Ñ 0�”Ø#%�Ô Ø—
‘
—‘Ô à�zŠzØ—‘×&Ñ&Ü T×%7Ñ%7¸d¿i¹iÐRV×R_ÑR_Ô`ôð #�”
ØˆDŒIØ!ˆD�Mð ×Ò §¡Ñ,Ör   c                óF   — t         g| _        g | _        d| _        d| _        y )NFrE   )ry   r‰   rC   r�   rŠ   r)   s    r   rœ   zDocStringParser.resetn  s!   € Ü �\ˆŒ
ØˆŒ	ØˆŒ
ØˆÕr   c                óN   ‡‡— dd„Šdˆfd„Št        | j                  ˆfd„¬«      S )z:Return sorted copy of the list of signatures found so far.c                ó@   ‡ — t        ˆ fd„|j                  D «       «      S )Nc              3  ó<   •K  — | ]  }|j                   ‰k(  –— Œ y ­wr   )r    )rT   Úxr    s     €r   rV   zBDocStringParser.get_signatures.<locals>.has_arg.<locals>.<genexpr>x  s   øè ø€ Ò>¨!�q—v‘v •~Ñ>ùs   ƒ)ÚanyrC   )r    Ú	signatures   ` r   Úhas_argz/DocStringParser.get_signatures.<locals>.has_argw  s   ø€ ÜÓ>¨y¯~©~Ô>Ó>Ð>r   c                ó,   •—  ‰d| «      xr	  ‰d| «      S )Nz*argsz**kwargsr?   )r¨   r©   s    €r   Úargs_kwargsz3DocStringParser.get_signatures.<locals>.args_kwargsz  s   ø€ Ù˜7 IÓ.ÒQ±7¸:ÀyÓ3QÐQr   c                ó   •—  ‰| «      rdS dS )NrO   r   r?   )r¦   r«   s    €r   ú<lambda>z0DocStringParser.get_signatures.<locals>.<lambda>~  s   ø€ ¹+Àa¼.°Q€ Èa€ r   )Úkey)r    r5   r¨   rA   r8   r7   )r¨   rA   r8   r7   )Úsortedr�   )r"   r«   r©   s    @@r   Úget_signatureszDocStringParser.get_signaturest  s"   ù€ ó	?õ	Rô �d—o‘oÓ+OÔPÐPr   N)rˆ   r5   r8   r9   )r    ztokenize.TokenInfor8   r9   )r8   r9   )r8   zlist[FunctionSig])r;   r<   r=   r>   r#   r¡   rœ   r°   r?   r   r   r†   r†   ¨   s   „ Ù5ó0ó q-ófô
Qr   r†   c                óö  — t        | t        «      r| syt        |«      }t        j                  t
        j                  «      5  	 t        j
                  t        j                  | j                  d«      «      j                  «      }|D ]  }|j                  |«       Œ 	 ddd«       |j                  «       }dd„}|D �cg c]  } ||«      sŒ|‘Œ c}S # t        $ r Y ddd«       yw xY w# 1 sw Y   ŒMxY wc c}w )a=  Convert function signature to list of FunctionSig

    Look for function signatures of function in docstring. Signature is a string of
    the format <function_name>(<signature>) -> <return type> or perhaps without
    the return type.

    Returns empty list, when no signature is found, one signature in typical case,
    multiple signatures, if docstring specifies multiple signatures for overload functions.
    Return None if the docstring is empty.

    Arguments:
        * docstr: docstring
        * name: name of function for which signatures are to be found
    Nzutf-8c                ó’   — t        | j                  «      t        | j                  D �ch c]  }|j                  ’Œ c}«      k(  S c c}w )z1return true if function argument names are unique)rW   rC   r    )rt   ro   s     r   Úis_unique_argsz0infer_sig_from_docstring.<locals>.is_unique_argsž  s0   € ä�3—8‘8‹}¤¸¿¹Ö$B°# S§X£XÒ$BÓ CÑCÐCùÒ$Bs   ¨A
)rt   rA   r8   r7   )r2   r5   r†   Ú
contextlibÚsuppressr—   Ú
TokenErrorÚioÚBytesIOÚencodeÚreadliner¡   ÚIndentationErrorr°   )Údocstrr    r‰   Útokensr    Úsigsr³   rt   s           r   Úinfer_sig_from_docstringr¿   �  sà   € ô �vœsÔ#©Øä˜DÓ!€Eä	×	Ñ	œX×0Ñ0Ó	1ñ ð	Ü×&Ñ&¤r§z¡z°&·-±-ÀÓ2HÓ'I×'RÑ'RÓSˆFØò '�Ø—‘ Õ&ñ'÷ð ×ÑÓ!€DóDð
  Ö7�C¡>°#Õ#6ŠCÒ7Ð7øô  ò 	Ø÷ð ð
	ú÷ð üò 8s7   ÁC*ÁACÂ>C6ÃC6Ã	C'ÃC*Ã&C'Ã'C*Ã*C3c                óF   — t        d| z   d«      }|r|d   j                  S g S )zXConvert signature in form of "(self: TestClass, arg0: str='ada')" to List[TypedArgList].Ústubr   )r¿   rC   )r¼   Úrets     r   Ú!infer_arg_sig_from_anon_docstringrÃ   ¦  s(   € ä
" 6¨F¡?°FÓ
;€CÙ
Ø�1‰v�{‰{ÐØ€Ir   c                ó>   — t        | |«      }|r|d   j                  S y)zWConvert signature in form of "func(self: TestClass, arg0) -> int" to their return type.r   N)r¿   rD   )r¼   r    rÂ   s      r   Ú!infer_ret_type_sig_from_docstringrÅ   ®  s"   € ä
" 6¨4Ó
0€CÙ
Ø�1‰v�‰ÐØr   c                óÞ   — | j                  «       D �cg c]5  }|j                  «       j                  d«      sŒ#d|j                  «       z   ‘Œ7 }}t        dj	                  |«      d«      S c c}w )zSConvert signature in form of "(self: TestClass, arg0) -> int" to their return type.r_   rÁ   rE   )Ú
splitlinesr�   r(   rÅ   rg   )r¼   ÚlineÚliness      r   Ú&infer_ret_type_sig_from_anon_docstringrÊ   ¶  sX   € à/5×/@Ñ/@Ó/BÖc tÀdÇjÁjÃl×F]ÑF]Ð^aÕFbˆV�d—j‘j“lÓ"Ðc€EÐcÜ,¨R¯W©W°U«^¸VÓDÐDùò ds
   “$A*¸A*c                óî  — t        j                  d| «      }|sy|j                  d«      }|j                  d«      d   }|j                  d«      }|j	                  «       s|g g fS |j                  d«      D �cg c]  }|j	                  «       ‘Œ }}g }g }d}|t        |«      k  rk||   j                  d	«      sd
||   v rnO|j                  ||   j                  d	«      «       |dz  }||dz
     j                  d	«      rn|t        |«      k  rŒk|t        |«      k  rO||   }|j	                  d«      }|j                  d
«      d   }|j                  |«       |dz  }|t        |«      k  rŒO|||fS c c}w )zàSplit function signature into its name, positional an optional arguments.

    The expected format is "func_name(arg, opt_arg=False)". Return the name of function
    and lists of positional and optional argument names.
    z([.a-zA-Z0-9_]+)\(([^)]*)\)NrO   ú.r’   rP   r   r   r   r^   z[])
Úrer   ÚgroupÚsplitr�   rW   r(   rf   ÚrstriprL   )	rt   Úmr    Ú
arg_stringro   rC   Ú
positionalÚoptionalÚis	            r   Úparse_signaturerÖ   ¼  sq  € ô 	�‰Ð/°Ó5€AÙØØ�7‰7�1‹:€DØ�:‰:�c‹?˜2Ñ€DØ—‘˜“€JØ×ÑÔà�R˜ˆ|Ðà#-×#3Ñ#3°CÓ#8Ö9˜CˆC�I‰I�KÐ9€DÐ9Ø€JØ€HØ	€AØ
Œc�$‹iŠ-à�‰7×Ñ˜cÔ" c¨T°!©W¡nØØ×Ñ˜$˜q™'Ÿ.™.¨Ó-Ô.Ø	ˆQ‰ˆØ��A‘‰;×Ñ Ô$Øð Œc�$‹i‹-ð Œc�$‹iŠ-Ø�1‰gˆØ�i‰i˜‹oˆØ�i‰i˜‹n˜QÑˆØ�‰˜ÔØ	ˆQ‰ˆð Œc�$‹i‹-ð �˜XÐ%Ð%ùò% :s   Á8E2c                óö   — g }|j                  | «       |D ]9  }|j                  d«      r|j                  |«       Œ&|j                  |› d�«       Œ; ddj                  |«      › d�}|j	                  dd«      }|S )zNBuild function signature from lists of positional and optional argument names.r%   z=...r_   r`   ra   z(self)rE   )Úextendr(   rf   rg   Úreplace)rÓ   rÔ   rC   ro   rt   s        r   Úbuild_signaturerÚ   á  sz   € à!#€DØ‡K�K�
ÔØò &ˆØ�>‰>˜#ÔØ�K‰K˜Õà�K‰K˜3˜%˜t˜Õ%ð	&ð
 ˆd�i‰i˜‹oÐ˜aÐ
 €Cà
�+‰+�h Ó
#€CØ€Jr   c                ó   — g }g }| D ]°  }|j                  «       }t        j                  d|«      }|sŒ,|j                  d«      d   j                  «       }t	        |«      }|sŒ\|\  }}}	|j                  d«      dk7  r|j                  |t        ||	«      f«       Œ”|j                  |t        ||	«      f«       Œ² t        |«      t        |«      fS )ztParse all signatures in a given reST document.

    Return lists of found signatures for functions and classes.
    z,\.\. *(function|method|class) *:: *[a-zA-Z_]z::rO   Úclass)	r�   rÍ   r   rÏ   rÖ   rÎ   rf   rÚ   r¯   )
rÉ   r¾   Ú
class_sigsrÈ   rÑ   rt   Úparsedr    ÚfixedrÔ   s
             r   Úparse_all_signaturesrà   ð  sË   € ð
 €DØ€JØò PˆØ�z‰z‹|ˆÜ�H‰HÐDÀdÓKˆÚØ—*‘*˜TÓ" 1Ñ%×+Ñ+Ó-ˆCÜ$ SÓ)ˆFÚØ(.Ñ%��e˜XØ—7‘7˜1“: Ò(Ø—K‘K ¤°u¸hÓ'GÐ HÕIà×%Ñ% t¬_¸UÀHÓ-MÐ&NÕOðPô �$‹<œ 
Ó+Ð+Ð+r   c                ó  — i }| D ]&  \  }}|j                  |g «      j                  |«       Œ( g }|j                  «       D ]3  \  }}t        t	        |«      «      dk(  sŒ|j                  ||d   f«       Œ5 t        |«      S )z-Remove names with duplicate found signatures.rO   r   )Ú
setdefaultrf   ÚitemsrW   Úsetr¯   )r¾   Úsig_mapr    rt   ÚresultÚ	name_sigss         r   Úfind_unique_signaturesrè     s‡   € à.0€GØò 1‰	ˆˆcØ×Ñ˜4 Ó$×+Ñ+¨CÕ0ð1ð €FØ"Ÿ=™=›?ò 0‰ˆˆiÜŒs�9‹~Ó !Ó#Ø�M‰M˜4 ¨1¡Ð.Õ/ð0ô �&‹>Ðr   c                ób   — | syd}t        j                  || «      }|r|j                  d«      S dS )ag  Check for Google/Numpy style docstring type annotation for a property.

    The docstring has the format "<type>: <descriptions>".
    In the type string, we allow the following characters:
    * dot: because sometimes classes are annotated using full path
    * brackets: to allow type hints like List[int]
    * comma/space: things like Tuple[int, int]
    Nz^([a-zA-Z0-9_, \.\[\]]*): rO   )rÍ   r   rÎ   )r¼   Útest_strrÑ   s      r   Úinfer_prop_type_from_docstringrë     s4   € ñ ØØ,€HÜ
�‰�˜6Ó"€AÙˆ1�7‰7�1‹:Ð$ Ð$r   )r   r5   r8   r7   )r¼   r6   r    r5   r8   zlist[FunctionSig] | None)r¼   r5   r8   rB   )r¼   r5   r    r5   r8   r6   )r¼   r5   r8   r6   )rt   r5   r8   z'tuple[str, list[str], list[str]] | None)rÓ   úSequence[str]rÔ   rì   r8   r5   )rÉ   rì   r8   ztuple[list[Sig], list[Sig]])r¾   zSequence[Sig]r8   z	list[Sig])r¼   r6   r8   r6   )/r>   Ú
__future__r   r´   r·   rd   rÍ   r—   Úcollections.abcr   r   r   Útypingr   r   r	   r
   r   Ú	mypy.utilrh   Útupler5   r   rx   Úcompiler   r   r   r   rA   ry   rz   r|   r~   r€   r‚   r„   r†   r¿   rÃ   rÅ   rÊ   rÖ   rÚ   rà   rè   rë   r?   r   r   ú<module>ró      s  ðòõ #ã Û 	Û Û 	Û ß EÑ Eß BÓ Bã ð ˜˜S˜‘/€€ZÓ !ð �"—*‘*ÐUÓV€ˆ%Ó VØ �b—j‘jÐ!>Ó?€ˆeÓ ?ó)÷$ñ $ôNP �*ô P ðh €
ˆEÓ ØÐ �UÓ ØÐ �UÓ ØÐ �UÓ Ø !Ð ˜Ó !ØÐ �EÓ ØÐ �EÓ ÷VQñ VQór"8óJóóEó"&óJó,ó.
ô%r   