Ë
    pPêjó<  ã                  óL  — U d Z ddlmZ ddlmZ ddlZddlZddlZddl	m
Z
 ddlmZ ddlmZmZmZmZmZmZmZmZ ddlmZ dd	lmZ dd
lmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z& dhZ'de(d<   h d£Z)de(d<   dZ*de(d<    G d„ d«      Z+	 d	 	 	 	 	 dd„Z,dd„Z-dd„Z.dd„Z/dd„Z0d d„Z1y)!z<Plugin for supporting the functools standard library module.é    )Úannotations)ÚFinalN)Úmap_actuals_to_formals)Úerase_typevars)ÚARG_POSÚ	ARG_STAR2ÚSYMBOL_FUNCBASE_TYPESÚArgKindÚArgumentÚCallExprÚNameExprÚVar)Úadd_method_to_class)Úget_all_type_vars)ÚAnyTypeÚCallableTypeÚInstanceÚ
OverloadedÚParamSpecFlavorÚParamSpecTypeÚTypeÚ	TypeOfAnyÚTypeVarTypeÚUnboundTypeÚ	UnionTypeÚget_proper_typezfunctools.total_orderingr   Úfunctools_total_ordering_makers>   Ú__ge__Ú__gt__Ú__le__Ú__lt__Ú_ORDERING_METHODSzfunctools.partialÚPARTIALc                  ó   — e Zd Zdd„Zy)Ú_MethodInfoc                ó    — || _         || _        y ©N)Ú	is_staticÚtype)Úselfr(   r)   s      ú[/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/mypy/plugins/functools.pyÚ__init__z_MethodInfo.__init__/   s   € Ø )ˆŒØˆ�	ó    N)r(   Úboolr)   r   ÚreturnÚNone)Ú__name__Ú
__module__Ú__qualname__r,   © r-   r+   r%   r%   .   s   „ ô r-   r%   c                óÞ  ‡
— t        | «      Š
‰
s'| j                  j                  d| j                  «       yt	        ‰
ˆ
fd„¬«      }‰
|   }|syt        |«      }| j                  j                  d«      }|}|j                  j                  | j                  j                  d«      k7  rit        |j                  j                  «      }t        |t        «      r!|j                  j                  d«      d   dk(  st        t        j                   «      }t"        D ]T  }‰
j%                  |«      rŒt'        t)        d	|«      |d
t*        «      g}	t-        | j                  | j.                  ||	|«       ŒV y)zFAdd dunder methods to classes decorated with functools.total_ordering.zNNo ordering operation defined when using "functools.total_ordering": < > <= >=Tc                ó   •— ‰|    d u | fS r'   r4   )ÚkÚcomparison_methodss    €r+   ú<lambda>z9functools_total_ordering_maker_callback.<locals>.<lambda>A   s   ø€ Ð2DÀQÑ2GÈ4Ð2OÐQRÐ1S€ r-   )Úkeyzbuiltins.boolú.éÿÿÿÿr.   ÚotherN)Ú_analyze_classÚapiÚfailÚreasonÚmaxÚ_find_other_typeÚ
named_typer)   Úret_typer   Ú
isinstancer   ÚnameÚsplitr   r   Úimplementation_artifactr"   Úgetr   r   r   r   Úcls)ÚctxÚauto_attribs_defaultÚrootÚroot_methodÚ
other_typeÚ	bool_typerE   Úproper_ret_typeÚadditional_opÚargsr8   s             @r+   Ú'functools_total_ordering_maker_callbackrU   4   s>  ø€ ô (¨Ó,ÐÙØ�‰�‰Ø\Ø�J‰Jô	
ð ô Ð!Ó'SÔT€DØ$ TÑ*€KÙàä! +Ó.€JØ—‘×"Ñ" ?Ó3€IØ€HØ×Ñ× Ñ  C§G¡G×$6Ñ$6°Ó$GÒGÜ)¨+×*:Ñ*:×*CÑ*CÓDˆä�¬Ô4Ø×$Ñ$×*Ñ*¨3Ó/°Ñ3°vÒ=äœy×@Ñ@ÓAˆHÜ*ò Qˆð "×%Ñ% mÕ4ÜœS ¨*Ó5°zÀ4ÌÓQÐRˆDÜ §¡¨¯©°-ÀÀxÕPðQð r-   c                ó4  — | j                   rdnd}d}d}t        | j                  j                  | j                  j                  «      D ]1  \  }}|j                  «       r||k(  r|} n|dz  }Œ%|t        k7  sŒ/|} n |€t        t        j                  «      S |S )z?Find the type of the ``other`` argument in a comparison method.r   é   N)
r(   Úzipr)   Ú	arg_kindsÚ	arg_typesÚis_positionalr   r   r   rI   )ÚmethodÚfirst_arg_posÚcur_pos_argÚ	other_argÚarg_kindÚarg_types         r+   rC   rC   [   sŸ   € à×)Ò)‘A¨q€MØ€KØ€IÜ! &§+¡+×"7Ñ"7¸¿¹×9NÑ9NÓOò 	Ñˆ�(Ø×!Ñ!Ô#Ø˜mÒ+Ø$�	Ùà˜1Ñ‰KØœÓ"Ø ˆIÙð	ð ÐÜ”y×8Ñ8Ó9Ð9àÐr-   c                ó  — i }| j                   j                  j                  dd D ]Ü  }t        D ]Ñ  }||j                  v sŒ||vsŒ|j                  |   j
                  }t        |t        «      r>t        |j                  t        «      r$t        |j                  |j                  «      ||<   Œ~t        |t        «      r?t        |j                  «      }t        |t        «      rt        |j                  |«      ||<   ŒÍd||<   ŒÓ ŒÞ |S )zMAnalyze the class body, its parents, and return the comparison methods found.Nr<   )rK   ÚinfoÚmror"   ÚnamesÚnoderF   r	   r)   r   r%   r(   r   r   Úis_staticmethod)rL   r8   rK   rG   rf   Úproper_types         r+   r>   r>   q   së   € ð 9;Ðà�w‰w�|‰|×Ñ  Ð$ò 0ˆÜ%ò 	0ˆDØ�s—y‘yÒ  TÐ1CÒ%CØ—y‘y ‘×+Ñ+�Ü˜dÔ$9Ô:¼zÈ$Ï)É)ÔUaÔ?bÜ/:¸4¿>¹>È4Ï9É9Ó/UÐ& tÑ,Øä˜d¤CÔ(Ü"1°$·)±)Ó"<�KÜ! +¬|Ô<Ü3>¸t×?SÑ?SÐU`Ó3aÐ*¨4Ñ0Ø à+/Ð" 4Ò(ñ	0ð0ð  Ðr-   c                ó°  — t        | j                  t        j                  j                  «      s| j
                  S t        | j                  «      dk7  r| j
                  S t        | j                  d   «      dk7  r| j
                  S t        t        | j                  d   d   «      t        «      r| j
                  S t        | | j                  d   d   ¬«      S )z6Infer a more precise return type for functools.partialé   r   rW   )Úcallee)rF   r?   ÚmypyÚcheckerÚTypeCheckerÚdefault_return_typeÚlenrZ   r   r   Úhandle_partial_with_callee©rL   s    r+   Úpartial_new_callbackrs   ‰   s©   € ä�c—g‘gœtŸ|™|×7Ñ7Ô8Ø×&Ñ&Ð&Ü
ˆ3�=‰=Ó˜QÒØ×&Ñ&Ð&Ü
ˆ3�=‰=˜ÑÓ Ò!Ø×&Ñ&Ð&ä”/ #§-¡-°Ñ"2°1Ñ"5Ó6¼
ÔCà×&Ñ&Ð&Ü% c°#·-±-ÀÑ2BÀ1Ñ2EÔFÐFr-   c                ó  ‡!‡"— t        | j                  t        j                  j                  «      s| j
                  S t        t        |«      x}t        «      r7t        j                  |j                  D �cg c]  }t        | |«      ‘Œ c}«      S | j                  j                  || j
                  ¬«      }|€| j
                  S |j                  «       j                  «       }| j                  j                  d   }|j                  «       s.| j                  j!                  t"        |j$                  g«      }d}n'|j$                  }d | j                  j                  d<   d}g }g Š!g }	g Š"t'        «       }
t)        | j*                  dd  d¬«      D ]¢  \  }}t)        |«      D ]�  \  }}||
v rŒ|
j-                  |«       |j/                  |«       ‰!j/                  | j0                  |   |   «       |	j/                  | j2                  |   |   «       ‰"j/                  | j4                  |   |   «       Œ‘ Œ¤ t7        ‰!|	|j0                  |j2                  ˆ"fd„¬«      }t'        «       }t)        |j4                  «      D ]=  \  }}||   sŒ|j9                  t;        |«      D �ch c]  }|j<                  ’Œ c}«       Œ? |j?                  |j0                  D �cg c]J  }|t@        jB                  k(  rt@        jD                  n$|t@        jF                  k(  rt@        jH                  n|‘ŒL c}||jJ                  D �cg c]"  }|j<                  |v st        |tL        «      s|‘Œ$ c}d	¬
«      }|jN                  dk  r|jQ                  | j
                  «       tS        | j*                  d   d   |‰!|	t        | jT                  tR        «      r| jT                  jV                  nd ¬«      }|jQ                  | jT                  «       | j                  jX                  j[                  ||‰!|	|¬«      \  }}|s|| j                  j                  d<   t        |«      }t        |t\        «      s| j
                  S |rmt        |j$                  «      }t        |t^        «      r|j`                  jb                  t"        k7  r| j
                  S |j?                  |j*                  d   ¬«      }g }g }g }t)        |«      D �]«  \  }}te        |j4                  «      te        |j4                  «      k(  rS|j4                  |   }t        j                  jg                  || j                  jh                  «      s|j4                  |   }n|j4                  |   }|r/|j0                  |   t@        jj                  t@        jl                  fv rO|j/                  |j0                  |   «       |j/                  |«       |j/                  |j2                  |   «       �Œ|sJ ‚to        ˆ!fd„|D «       «      r�Œ.‰!|d      }|t@        jF                  k(  s|t@        jl                  k(  rt@        jH                  }|j/                  |«       |j/                  |«       |j/                  |j2                  |   «       �Œ® |j$                  }t        j                  jg                  || j                  jh                  «      s|j$                  }|j?                  ||||d	¬«      }tq        ||jJ                  D �cg c]  }|j<                  ‘Œ c}«      }| j                  j!                  t"        |g«      }|js                  d|«      }|ju                  «       r‰|jv                  €J ‚|jv                  jy                  «       } t@        jj                  ‰!v r| jz                  j-                  d«       t@        jl                  ‰!v r| jz                  j-                  d«       | |_;        |S c c}w c c}w c c}w c c}w c c}w )Nrr   r<   TFrW   )Ústartc                ó   •— ‰|    S r'   r4   )ÚiÚactual_typess    €r+   r9   z,handle_partial_with_callee.<locals>.<lambda>Ï   s   ø€  ,¨q¡/€ r-   )Úactual_kindsÚactual_namesÚformal_kindsÚformal_namesÚactual_arg_typeÚpartial)rY   rE   Ú	variablesÚspecial_sigr   )rk   rT   rY   Ú	arg_namesÚanalyzed©rk   rT   rY   r�   Úcontext)rE   c              3  óh   •K  — | ])  }‰|   t         j                  t         j                  fv –— Œ+ y ­wr'   )r
   r   ÚARG_STAR)Ú.0ÚjÚactual_arg_kindss     €r+   ú	<genexpr>z-handle_partial_with_callee.<locals>.<genexpr>&  s,   øè ø€ Ò_ÐRSÐ# AÑ&¬7¯?©?¼G×<LÑ<LÐ*MÔMÑ_ùs   ƒ/2)rZ   rY   r�   rE   r€   Ú__mypy_partialÚ#__mypy_partial_paramspec_args_boundÚ%__mypy_partial_paramspec_kwargs_bound)>rF   r?   rl   rm   rn   ro   r   r   Ú
make_unionÚitemsrq   Úextract_callable_typeÚwith_unpacked_kwargsÚwith_normalized_var_argsÚtype_contextÚis_type_objÚnamed_generic_typer#   rE   ÚsetÚ	enumeraterT   ÚaddÚappendrY   r�   rZ   r   Úupdater   ÚidÚcopy_modifiedr
   r   ÚARG_OPTÚ	ARG_NAMEDÚARG_NAMED_OPTr   r   ÚlineÚset_liner   r„   r‚   Úexpr_checkerÚ
check_callr   r   r)   Úfullnamerp   Úis_valid_inferred_typeÚoptionsr†   r   Úanyr   Úcopy_with_extra_attrÚ
param_specÚextra_attrsÚcopyÚ	immutable)#rL   rk   Úcallee_properÚitemÚfn_typeÚlast_contextrE   Úwrapped_returnÚactual_argsÚactual_arg_namesÚ	seen_argsrw   Úparamrˆ   ÚaÚformal_to_actualÚcan_infer_idsra   Útvr7   Ú	defaultedÚ	call_exprÚ_ÚboundÚpartial_kindsÚpartial_typesÚpartial_namesÚactualsÚkindÚpartially_appliedÚerased_ret_typeÚretÚattrsr‰   rx   s#                                    @@r+   rq   rq   ˜   s  ù€ Ü�c—g‘gœtŸ|™|×7Ñ7Ô8Ø×&Ñ&Ð&ä¤?°6Ó#:Ð:�-¼IÔFÜ×#Ñ#Ø?L×?RÑ?RÖS°tÔ'¨¨TÕ2ÒSó
ð 	
ð �g‰g×+Ñ+¨F¸×8OÑ8OÐ+ÓP€GØ€Ø×&Ñ&Ð&ð ×*Ñ*Ó,×EÑEÓG€Gà—7‘7×'Ñ'¨Ñ+€LØ×ÑÔ ð Ÿ™×3Ñ3´G¸g×>NÑ>NÐ=OÓPˆØ‰à×#Ñ#ˆð $(ˆ�‰×Ñ˜RÑ Øˆð €KØÐØÐØ€LÜ“€IÜ˜cŸh™h q r˜l°!Ô4ò 5‰ˆˆ5Ü˜eÓ$ò 	5‰DˆAˆqØ�I‰~ð ð �M‰M˜!ÔØ×Ñ˜qÔ!Ø×#Ñ# C§M¡M°!Ñ$4°QÑ$7Ô8Ø×#Ñ# C§M¡M°!Ñ$4°QÑ$7Ô8Ø×Ñ §¡¨aÑ 0°Ñ 3Õ4ñ	5ð5ô .Ø%Ø%Ø×&Ñ&Ø×&Ñ&Û1ôÐô “E€MÜ  ×!2Ñ!2Ó3ò L‰ˆˆ8Ø Ò"ØØ×ÑÔ.?ÀÓ.IÖJ¨˜bŸe›eÒJÕKðLð ×%Ñ%ð ×&Ñ&ö
ð ð œŸ™Ò'ô —’à/0´G×4EÑ4EÒ/E”g×+Ò+È1ñNò
ð ð ×'Ñ'ö
àà�u‰u˜Ñ%¬Z¸¼KÔ-Hò ò
ð ð! &ó €Ið$ ‡~�~˜Òà×Ñ˜3×2Ñ2Ô3ô Ø�x‰x˜‰{˜1‰~ØØ"Ø"Ü)3°C·K±KÄÔ)J�—‘×%Ò%ÐPTô€Ið ×Ñ�s—{‘{Ô#à�w‰w×#Ñ#×.Ñ.ØØØ"Ø"Øð /ó �H€A€uñ à#/ˆ�‰×Ñ˜RÑ ä˜EÓ"€EÜ�eœ\Ô*Ø×&Ñ&Ð&áä" 5§>¡>Ó2ˆÜ˜(¤HÔ-°·±×1GÑ1GÌ7Ò1RØ×*Ñ*Ð*Ø×#Ñ#¨X¯]©]¸1Ñ-=Ð#Ó>ˆà€MØ€MØ€Mô  Ð 0Ó1ó 7‰
ˆˆ7Üˆu�‰Ó¤3 w×'8Ñ'8Ó#9Ò9Ø—‘ qÑ)ˆHÜ—<‘<×6Ñ6°xÀÇÁÇÁÔQØ"×,Ñ,¨QÑ/‘ð ×(Ñ(¨Ñ+ˆHá˜'×+Ñ+¨AÑ.´7×3CÑ3CÄW×EVÑEVÐ2WÑWØ× Ñ  ×!2Ñ!2°1Ñ!5Ô6Ø× Ñ  Ô*Ø× Ñ  ×!2Ñ!2°1Ñ!5Ö6áˆN�7ÜÓ_ÐW^Ô_Ô_áà# G¨A¡JÑ/ˆDØ”w×(Ñ(Ò(¨D´G×4EÑ4EÒ,EÜ×,Ñ,�Ø× Ñ  Ô&Ø× Ñ  Ô*Ø× Ñ  ×!2Ñ!2°1Ñ!5Ö6ð37ð6 �~‰~€HÜ�<‰<×.Ñ.¨x¸¿¹¿¹ÔIØ×#Ñ#ˆð
  ×-Ñ-ØØØØØð .ó Ðô % XÀ×@QÑ@QÖ/R¸"°·³Ò/RÓS€Oà
�'‰'×
$Ñ
$¤W¨Ð.?Ó
@€CØ
×
"Ñ
"Ð#3Ð5FÓ
G€CØ×#Ñ#Ô%Ø�‰Ð*Ð*Ð*Ø—‘×$Ñ$Ó&ˆÜ×ÑÐ/Ñ/Ø�O‰O×ÑÐ EÔFÜ×ÑÐ 0Ñ0Ø�O‰O×ÑÐ GÔHØˆŒØ€Jùòa Tùòt Kùò
ùò
ùòz 0Ss   Á5_1Ê_6
ËA_;Ì0'` Ü	`
c                óú  — t        | j                  t        j                  j                  «      ryt        | j
                  t        «      r_| j
                  j
                  j                  t        k7  s8| j
                  j                  r"d| j
                  j                  j                  vr| j                  S | j
                  j                  }t        |j                  d   «      }t        | j                  «      dk7  r| j                  S g }g }g }t        «       }t!        | j"                  «      D ]�  \  }}t!        |«      D ]n  \  }	}
|
|v rŒ|j%                  |
«       |j'                  |
«       |j'                  | j(                  |   |	   «       |j'                  | j*                  |   |	   «       Œp Œƒ | j                  j,                  j/                  ||||| j0                  ¬«      \  }}t        |t2        «      r|j5                  «       €|S d|j6                  v }d|j6                  v }|D �cg c]f  }t        |t8        «      rTt        |j:                  t<        «      r:t        |j:                  j
                  t>        «      r|j:                  j
                  ‘Œh }}tA        d„ |D «       «      }|s>|s<| j                  j,                  jB                  jE                  || j0                  |«       n>|r<|r:| j                  j,                  jB                  jG                  || j0                  «       tA        d„ |D «       «      }|s=|s;| j                  j,                  jB                  jE                  || j0                  |«       |S c c}w )z@Infer a more precise return type for functools.partial.__call__.r‹   é   rƒ   rŒ   r�   c              3  óV   K  — | ]!  }|j                   t        j                  k(  –— Œ# y ­wr'   )Úflavorr   ÚARGS©r‡   Úparts     r+   rŠ   z(partial_call_callback.<locals>.<genexpr>„  s   è ø€ Ò]¸d�d—k‘k¤_×%9Ñ%9Õ9Ñ]ùó   ‚')c              3  óV   K  — | ]!  }|j                   t        j                  k(  –— Œ# y ­wr'   )rÊ   r   ÚKWARGSrÌ   s     r+   rŠ   z(partial_call_callback.<locals>.<genexpr>‹  s   è ø€ ÒaÀ$˜Ÿ™¤×'=Ñ'=Õ=ÑaùrÎ   )$rF   r?   rl   rm   rn   r)   r   r¤   r#   rª   rÆ   ro   r   rp   rZ   r–   r—   rT   r˜   r™   rY   r�   r¢   r£   r„   r   r©   r¬   r   rf   r   r   r§   ÚmsgÚtoo_few_argumentsÚtoo_many_arguments)rL   rª   Úpartial_typer²   r‰   r³   r´   rw   rµ   rˆ   r¶   Úresultr¼   Ú
args_boundÚkwargs_boundÚargÚpassed_paramspec_partsÚargs_passedÚkwargs_passeds                      r+   Úpartial_call_callbackrÜ   Q  s×  € ô �s—w‘w¤§¡× 8Ñ 8Ô9Ü˜#Ÿ(™(¤HÔ-Ø�8‰8�=‰=×!Ñ!¤WÒ,Ø�x‰x×#Ò#Ø 3§8¡8×#7Ñ#7×#=Ñ#=Ñ=à×&Ñ&Ð&à—(‘(×&Ñ&€KÜ" ;×#4Ñ#4Ð5EÑ#FÓG€LÜ
ˆ3�=‰=Ó˜QÒØ×&Ñ&Ð&ð €KØÐØÐÜ“€IÜ˜cŸh™hÓ'ò 9‰ˆˆ5Ü˜eÓ$ò 	9‰DˆAˆqØ�I‰~ØØ�M‰M˜!ÔØ×Ñ˜qÔ!Ø×#Ñ# C§M¡M°!Ñ$4°QÑ$7Ô8Ø×#Ñ# C§M¡M°!Ñ$4°QÑ$7Õ8ñ	9ð9ð —‘×$Ñ$×/Ñ/ØØØ"Ø"Ø—‘ð 0ó �I€FˆAô �l¤LÔ1°\×5LÑ5LÓ5NÐ5VØˆà6¸+×:OÑ:OÐO€JØ:¸k×>SÑ>SÐS€Lð öàÜ�cœ8Ô$Ü�s—x‘x¤Ô%Ü�s—x‘x—}‘}¤mÔ4ð	 	�‰�‹ðÐð ô Ñ]ÐF\Ô]Ó]€KÙ™kØ�‰×Ñ× Ñ ×2Ñ2°<ÀÇÁÐN^Õ_Ù	™Ø�‰×Ñ× Ñ ×3Ñ3°LÀ#Ç+Á+ÔNô ÑaÐJ`ÔaÓa€MÙ¡Ø�‰×Ñ× Ñ ×2Ñ2°<ÀÇÁÐN^Ô_à€Mùò's   È(A+M8)F)rL   úmypy.plugin.ClassDefContextrM   r.   r/   r.   )r\   r%   r/   r   )rL   rÝ   r/   zdict[str, _MethodInfo | None])rL   úmypy.plugin.FunctionContextr/   r   )rL   rÞ   rk   r   r/   r   )rL   zmypy.plugin.MethodContextr/   r   )2Ú__doc__Ú
__future__r   Útypingr   Úmypy.checkerrl   Úmypy.pluginÚmypy.semanalÚmypy.argmapr   Úmypy.erasetyper   Ú
mypy.nodesr   r   r	   r
   r   r   r   r   Úmypy.plugins.commonr   Úmypy.typeopsr   Ú
mypy.typesr   r   r   r   r   r   r   r   r   r   r   r   r   Ú__annotations__r"   r#   r%   rU   rC   r>   rs   rq   rÜ   r4   r-   r+   ú<module>rì      s¹   ðÚ Bå "å ã Û Û Ý .Ý )÷	÷ 	ó 	õ 4Ý *÷÷ ÷ ó ð +EÐ)EÐ  Ó EâCÐ �5Ó Cà$€ˆÓ $÷ ñ  ð DIð$Ø	$ð$Ø<@ð$à	ó$óNó,ó0Góvôr>r-   