ó
    Ñ]j{  ã                  ó  • S r SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJ	r	  SS	KJ
r
  SS
KJr  SSKJr  SSKJr  SSKJr  \" S\S9r/ SQr      SS jr S       SS jjr      SS jrSS jrg)zTopological sorting algorithms.é    )Úannotations)ÚAny)Ú
Collection)ÚDefaultDict)ÚIterable)ÚIterator)ÚSequence)ÚSet)ÚTuple)ÚTypeVaré   )Úutil)ÚCircularDependencyErrorÚ_T)Úbound)ÚsortÚsort_as_subsetsÚfind_cyclesc              #  óè  #   • [         R                  " [        5      nU  H  u  p4X$   R                  U5        M     [	        U5      n[        U5      nU(       a”  / nU H.  nUR                  X(   5      (       d  M  UR                  U5        M0     U(       d  [        S[        X5      [        U5      5      eUR                  U5        U V	s/ s H  o™U;   d  M
  U	PM     nn	Uv •  U(       a  M“  g g s  sn	f 7f)NzCircular dependency detected.)r   ÚdefaultdictÚsetÚaddÚlistÚ
isdisjointÚappendr   r   Ú
_gen_edgesÚdifference_update)
ÚtuplesÚallitemsÚedgesÚparentÚchildÚtodoÚtodo_setÚoutputÚnodeÚts
             ÚX/home/mande/repo/quber/.venv/lib/python3.13/site-packages/sqlalchemy/util/topological.pyr   r      sÖ   é € ô '+×&6Ò&6´sÓ&;€EÛ‰ˆØ‰×Ñ˜Ö ñ  ô �‹>€DÜ�8‹}€Hæ
ØˆÛˆDØ×"Ñ" 5¡;×/Ó/Ø—‘˜dÖ#ñ ö Ü)Ø/Ü˜FÓ-Ü˜5Ó!óð ð 	×"Ñ" 6Ô*ÙÓ1š4�a¨¡=—™4ˆÐ1ØŠ÷ Š(ùò 2ùs%   ‚A3C2Á9AC2Ã		C-ÃC-ÃC2Ã+C2c              #  óH   #   • [        X5       H  nU Sh  v•N   M     g N	7f)a  sort the given list of items by dependency.

'tuples' is a list of tuples representing a partial ordering.

deterministic_order is no longer used, the order is now always
deterministic given the order of "allitems".    the flag is there
for backwards compatibility with Alembic.

N)r   )r   r   Údeterministic_orderÚset_s       r(   r   r   :   s    é € ô   Ö1ˆØ�Šò 2Ùùs   ‚"– —
"c                ó  • [         R                  " [        5      nU  H  u  p4X#   R                  U5        M     [        U5      n[        5       nU H¬  nU/nUR	                  U5      n	U(       d  M   US   n
X*    Hf  nXx;   a5  XˆR                  U5      S  nU	R                  U5        UR                  U5        Xy;   d  MD  UR                  U5        U	R                  U5          O   UR                  5         U(       a  MŒ  M®     U$ )Néÿÿÿÿ)r   r   r   r   Ú
differenceÚindexr   Úupdater   ÚremoveÚpop)r   r   r    r!   r"   Únodes_to_testr%   r&   Ústackr#   ÚtopÚcycs               r(   r   r   M   sé   € ô '+×&6Ò&6´sÓ&;€EÛ‰ˆØ‰×Ñ˜%Ö ñ  ä˜“J€Mä‹U€Fó ˆØ�ˆØ×'Ñ'¨Ó.ˆßˆeØ˜‘)ˆCØœ
�Ø“=Ø§¡¨DÓ 1Ð 3Ð4�CØ×*Ñ*¨3Ô/Ø—M‘M #Ô&à•<Ø—L‘L Ô&Ø—K‘K Ô%Ùñ #ð —	‘	”÷ Šeñ ð" €Mó    c                óR   • U  VVs1 s H  oU     H  o"U4iM     M     snn$ s  snnf )N© )r    ÚleftÚrights      r(   r   r   w   s&   € Ù&+ÔE¢e˜d¸t½°�D‹M¹‰M¡eÒEÐEùÓEs   †#N)r   úCollection[Tuple[_T, _T]]r   úCollection[_T]ÚreturnzIterator[Sequence[_T]])T)r   r<   r   r=   r*   Úboolr>   zIterator[_T])r   zIterable[Tuple[_T, _T]]r   zIterable[_T]r>   zSet[_T])r    zDefaultDict[_T, Set[_T]]r>   zSet[Tuple[_T, _T]])Ú__doc__Ú
__future__r   Útypingr   r   r   r   r   r	   r
   r   r   Ú r   Úexcr   r   Ú__all__r   r   r   r   r9   r7   r(   Ú<module>rF      s®   ðñ &å "å Ý Ý Ý Ý Ý Ý Ý Ý å Ý )áˆT˜Ñ€â
4€ðØ%ðØ1?ðàôð> !%ðØ%ðàðð ðð õ	ð&'Ø#ð'Ø/;ð'àô'õTFr7   