
    %^g                    ~    d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 dddZ
 G d d	e      Z	 d	 	 	 	 	 dd
ZddZy)    )annotations)Callable)TypeInfo)Instance)
type_stateNc                    t        | |      }|s
J d|         || _        t        d | j                  D              | _        t	        j
                  |        y)zbCalculate and set mro (method resolution order).

    Raise MroError if cannot determine mro.
    z#Could not produce a MRO at all for c              3  4   K   | ]  }|j                     y wN)fallback_to_any).0baseinfos     (lib/python3.12/site-packages/mypy/mro.py	<genexpr>z calculate_mro.<locals>.<genexpr>   s     QHx77s   N)linearize_hierarchymroanyr   r   reset_all_subtype_caches_for)infoobj_typer   s      r   calculate_mror   
   sQ    
 dH
-C<5dV<<3DHQQQD++D1    c                      e Zd ZdZy)MroErrorz<Raised if a consistent mro cannot be determined for a class.N)__name__
__module____qualname____doc__ r   r   r   r      s    Fr   r   c                V   | j                   r| j                   S | j                         }|s#| j                  dk7  r| |       j                  g}g }|D ]6  }|J d| j                   d|        |j	                  t        ||             8 |j	                  |       | gt        |      z   S )Nzbuiltins.objectzCannot linearize bases for  )r   direct_base_classesfullnametypeappendr   merge)r   r   bases	lin_basesbases        r   r   r      s     xxxx$$&ET]]&77H<P !IV#>t}}oQug!VV,T8<=  U6E)$$$r   c                4   | D cg c]  }|j                          } }g }	 | D cg c]  }|s|	 } }| s|S | D ]!  }|d   }| D cg c]  }||dd  v s| c}r! n t               |j                  |       | D ]  }|d   |u s|d=  jc c}w c c}w c c}w )Nr      )copyr   r$   )seqssresultseqheads        r   r%   r%   .   s    "#dAFFHdD#F
%4a14%MCq6D#5t!tqu}At5 
 *dAtt|aD   $ &
 6s   BBBBBr
   )r   r   r   Callable[[], Instance] | NonereturnNone)r   r   r   r1   r2   list[TypeInfo])r,   zlist[list[TypeInfo]]r2   r4   )
__future__r   typingr   
mypy.nodesr   
mypy.typesr   mypy.typestater   r   	Exceptionr   r   r%   r   r   r   <module>r;      sO    "    %
2Gy G
 ?C%
%;%%&r   