grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026o ®û|je%ã@s@ddgZdZdZGdd„dƒZGdd„deƒZGdd„dƒZdS) ÚTopologicalSorterÚ CycleErroréÿÿÿÿéþÿÿÿc@seZdZdZdd„ZdS)Ú _NodeInfo©ÚnodeÚ npredecessorsÚ successorscCs||_d|_g|_dS©Nér)Úselfr©r ú//opt/alt/python310/lib64/python3.10/graphlib.pyÚ__init__ s z_NodeInfo.__init__N)Ú__name__Ú __module__Ú __qualname__Ú __slots__rr r r rrs rc@seZdZ dS)rN)rrrr r r rrs c@s`eZdZ ddd„Zdd„Zdd„Zdd „Zd d „Zd d „Zdd„Z dd„Z dd„Z dd„Z dS)rNcCsLi|_d|_d|_d|_|dur"| ¡D]\}}|j|g|¢RŽqdSdSr )Ú _node2infoÚ _ready_nodesÚ _npassedoutÚ _nfinishedÚitemsÚadd)r ZgraphrÚ predecessorsr r rr*sþzTopologicalSorter.__init__cCs*|j |¡}durt|ƒ|j|<}|S©N)rÚgetr)r rÚresultr r rÚ _get_nodeinfo4szTopologicalSorter._get_nodeinfocGsT |jdur tdƒ‚| |¡}|jt|ƒ7_|D] }| |¡}|j |¡qdS)Nz/Nodes cannot be added after a call to prepare())rÚ ValueErrorrrÚlenr Úappend)r rrÚnodeinfoZpredZ pred_infor r rr9s   þzTopologicalSorter.addcCsD |jdur tdƒ‚dd„|j ¡Dƒ|_| ¡}|r td|ƒ‚dS)Nzcannot prepare() more than oncecSsg|] }|jdkr|j‘qS)r )rr)Ú.0Úir r rÚ _sz-TopologicalSorter.prepare..znodes are in a cycle)rrrÚvaluesÚ _find_cycler)r Úcycler r rÚprepareTs ÿ ÿzTopologicalSorter.preparecCsX |jdur tdƒ‚t|jƒ}|j}|D]}t||_q|j ¡|jt|ƒ7_|S©Núprepare() must be called first) rrÚtuplerÚ _NODE_OUTrÚclearrr )r rÚn2irr r rÚ get_readyjs    zTopologicalSorter.get_readycCs* |jdur tdƒ‚|j|jkpt|jƒSr*)rrrrÚbool©r r r rÚ is_active„s zTopologicalSorter.is_activecCs| ¡Sr)r3r2r r rÚ__bool__’szTopologicalSorter.__bool__cGsÔ |jdur tdƒ‚|j}|D]X}| |¡}dur"td|›d�ƒ‚|j}|tkrA|dkr5td|›d�ƒ‚|tkrAtd|›d�ƒ‚t|_|jD]}||}|jd8_|jdkr_|j |¡qG|j d7_ qdS)Nr+znode z was not added using add()r z% was not passed out (still not ready)z was already marked doneé) rrrrrr-Ú _NODE_DONEr r!r)r Znodesr/rr"ÚstatZ successorZsuccessor_infor r rÚdone•s0  ÿ   €äzTopologicalSorter.donec CsÔ|j}g}g}tƒ}i}|D]Y}||vrq ||vr,||vr+|||d…|gSn| |¡| t||jƒj¡t|ƒ||<| |¡|rez|dƒ}Wntyb||  ¡=|  ¡Ynw|sInqqdS)NTr) rÚsetrr!Úiterr Ú__next__r Ú StopIterationÚpop)r r/ÚstackZitstackÚseenZ node2stackirr r rr'Äs<ÿ       þüézTopologicalSorter._find_cycleccs@� | ¡| ¡r| ¡}|EdH|j|Ž| ¡s dSdSr)r)r3r0r8)r Z node_groupr r rÚ static_orderés€  ýzTopologicalSorter.static_orderr) rrrrrrr)r0r3r4r8r'r@r r r rr's  / %N)Ú__all__r-r6rrrrr r r rÚs