c#)߾ F d Z ddlmZ ddlmZ g dZddZddZd Zd Z d
S )zTopological sorting algorithms. )util)CircularDependencyError)sortsort_as_subsetsfind_cyclesFc # K t j t }| D ] \ }}|| | !|rt j nt } || }|r | }|D ]2} | || r| | 3|s,t
dt | | t | | | |V |d S d S )NzCircular dependency detected.)
r defaultdictsetadd
OrderedSet
isdisjointr r
_gen_edgesdifference_update)
tuplesallitemsdeterministic_orderedgesparentchildSettodooutputnodes
o/builddir/build/BUILD/cloudlinux-venv-1.0.10/venv/lib64/python3.11/site-packages/sqlalchemy/util/topological.pyr r s S!!E ! !
e 0
9$//cC3x==D
! !DuT{++
!
4 )/FH--5!!
v&&& c # D K t | || D ]}|D ]}|V dS )zsort the given list of items by dependency.
'tuples' is a list of tuples representing a partial ordering.
'deterministic_order' keeps items within a dependency tier in list order.
N)r )r r r set_ss r r r , sM 2EFF AGGGG r c > t j t }| D ] \ }}|| | !t | }t }|D ]}|g}| | } |r|d }
||
D ]}}||v rG|| | d }| | | | || v r,| | | | n~|
}||S )N)r r r
r
differenceindexr updateappendremovepop)r r r r r
nodes_to_testr r stackr topcycs r r r 8 sH
S!!E ! !
f
% JJM
UUF # #''..
#)Cc
#
#5==D 1 1 3 34C**3///MM#&&&4<<LL&&&KK%%%E
yy{{
# Mr c : t fd D S )Nc . g | ]}| D ]}||fS r- ).0leftrightr s r