
    ,hh%                     ^    S SK Jr  SS/rSrSr " S S5      r " S S\5      r " S	 S5      rg
)    )GenericAliasTopologicalSorter
CycleErrorc                       \ rS rSrSrS rSrg)	_NodeInfo	   nodenpredecessors
successorsc                 ,    Xl         SU l        / U l        g Nr   r   )selfr   s     1/opt/python-3.13.8/usr/lib/python3.13/graphlib.py__init___NodeInfo.__init__   s    	
      N)__name__
__module____qualname____firstlineno__	__slots__r   __static_attributes__ r   r   r	   r	   	   s    5Ir   r	   c                       \ rS rSrSrg)r      r   N)r   r   r   r   r   r   r   r   r   r      s     	r   c                   d    \ rS rSrSS jrS rS rS rS rS r	S	 r
S
 rS rS r\" \5      rSrg)r   )   Nc                     0 U l         S U l        SU l        SU l        Ub-  UR	                  5        H  u  p#U R
                  " U/UQ76   M     g g r   )
_node2info_ready_nodes_npassedout
_nfinisheditemsadd)r   graphr   predecessorss       r   r   TopologicalSorter.__init__,   sO     &+kkm"-- '4 r   c                 v    U R                   R                  U5      =nc  [        U5      =U R                   U'   nU$ N)r"   getr	   )r   r   results      r   _get_nodeinfoTopologicalSorter._get_nodeinfo6   s8    oo))$//F8-6t_<DOOD!Fr   c                     U R                   b  [        S5      eU R                  U5      nU=R                  [	        U5      -  sl        U H/  nU R                  U5      nUR
                  R                  U5        M1     g )Nz/Nodes cannot be added after a call to prepare())r#   
ValueErrorr/   r   lenr   append)r   r   r)   nodeinfopred	pred_infos         r   r'   TopologicalSorter.add;   st     (NOO %%d+#l"33 !D**40I  ''- !r   c                    U R                   b  [        S5      eU R                  R                  5        Vs/ s H   oR                  S:X  d  M  UR
                  PM"     snU l         U R                  5       nU(       a  [        SU5      eg s  snf )Nzcannot prepare() more than oncer   znodes are in a cycle)r#   r2   r"   valuesr   r   _find_cycler   )r   icycles      r   prepareTopologicalSorter.prepareV   s     (>?? !OO224
4q18LFAFF4
   "3e<< 
s   BBc                    U R                   c  [        S5      e[        U R                   5      nU R                  nU H  n[        X#   l        M     U R                   R                  5         U =R                  [        U5      -  sl        U$ Nprepare() must be called first)	r#   r2   tupler"   	_NODE_OUTr   clearr$   r3   )r   r.   n2ir   s       r   	get_readyTopologicalSorter.get_readyl   sy     $=>> t(()ooD&/CI# 
 	!CK'r   c                     U R                   c  [        S5      eU R                  U R                  :  =(       d    [	        U R                   5      $ rA   )r#   r2   r%   r$   boolr   s    r   	is_activeTopologicalSorter.is_active   sA     $=>>!1!11LT$:K:K5LLr   c                 "    U R                  5       $ r,   )rL   rK   s    r   __bool__TopologicalSorter.__bool__   s    ~~r   c                 $   U R                   c  [        S5      eU R                  nU H  nUR                  U5      =nc  [        SU< S35      eUR                  nU[
        :w  a0  US:  a  [        SU< S35      eU[        :X  a  [        SU< S35      e[        Ul        UR                   HI  nX&   nU=R                  S-  sl        UR                  S:X  d  M.  U R                   R                  U5        MK     U =R                  S-  sl	        M     g )NrB   znode z was not added using add()r   z% was not passed out (still not ready)z was already marked done   )
r#   r2   r"   r-   r   rD   
_NODE_DONEr   r4   r%   )r   nodesrF   r   r5   stat	successorsuccessor_infos           r   doneTopologicalSorter.done   s    $=>>ooD  GGDM)2 50J!KLL ))Dy 19$x'LM  Z'$uTH4L%MNN
 &0H" &00	!$,,1,!//14%%,,Y7	 1
 OOq O9 r   c                    U R                   n/ n/ n[        5       n0 nU H  nXd;   a  M
   Xd;   a  Xe;   a  X%U   S  U/-   s  $ O_UR                  U5        UR                  [	        X   R
                  5      R                  5        [        U5      XV'   UR                  U5        U(       a   US   " 5       nOM  M     g ! [         a#    XRR                  5       	 UR                  5          Of = fU(       a  ML  NA)Nr   )
r"   setr'   r4   iterr   __next__r3   StopIterationpop)r   rF   stackitstackseennode2stackir   s          r   r;   TopologicalSorter._find_cycle   s    oouD|< *$%6%89TFBB + HHTNNN4	(<(<#=#F#FG(+E
K%LL& &&r{}
 / 	 8  ) &'		4&	 es   )
B;;*C('C(c              #      #    U R                  5         U R                  5       (       aA  U R                  5       nU S h  vN   U R                  " U6   U R                  5       (       a  M@  g g  N,7fr,   )r>   rL   rG   rX   )r   
node_groups     r   static_orderTopologicalSorter.static_order   sP      	nn)J!!!IIz" nn!s   ;A,A*(A,(A,)r%   r"   r$   r#   r,   )r   r   r   r   r   r/   r'   r>   rG   rL   rO   rX   r;   rg   classmethodr   __class_getitem__r   r   r   r   r   r   )   sD    .
.6=,4M -!^#J# $L1r   N)	typesr   __all__rD   rS   r	   r2   r   r   r   r   r   <module>rm      s>    
-	
 "	 	Q2 Q2r   