File: //lib/python3.10/__pycache__/graphlib.cpython-310.pyc
o
    E�he%  �                   @   s@   d dgZ dZdZG dd� d�ZG dd� de�ZG dd � d �ZdS )	�TopologicalSorter�
CycleError������c                   @   s   e Zd ZdZdd� ZdS )�	_NodeInfo��node�
npredecessors�
successorsc                 C   s   || _ d| _g | _d S �N�    r   )�selfr   � r
   �/usr/lib/python3.10/graphlib.py�__init__
   s   
z_NodeInfo.__init__N)�__name__�
__module__�__qualname__�	__slots__r   r
   r
   r
   r   r      s    r   c                   @   s   e Zd ZdZdS )r   aC  Subclass of ValueError raised by TopologicalSorter.prepare if cycles
    exist in the working graph.
    If multiple cycles exist, only one undefined choice among them will be reported
    and included in the exception. The detected cycle can be accessed via the second
    element in the *args* attribute of the exception instance and consists in a list
    of nodes, such that each node is, in the graph, an immediate predecessor of the
    next node in the list. In the reported list, the first and the last node will be
    the same, to make it clear that it is cyclic.
    N)r   r   r   �__doc__r
   r
   r
   r   r      s    c                   @   sb   e Zd ZdZddd�Zdd� Zdd� Zd	d
� Zdd� Zd
d� Z	dd� Z
dd� Zdd� Zdd� Z
dS )r   zFProvides functionality to topologically sort a graph of hashable nodesNc                 C   sL   i | _ d | _d| _d| _|d ur"|�� D ]\}}| j|g|�R �  qd S d S r
   )�
_node2info�_ready_nodes�_npassedout�
_nfinished�items�add)r   �graphr   �predecessorsr
   r
   r   r   *   s   �zTopologicalSorter.__init__c                 C   s*   | j �|� }d u rt|� | j |<