
    \Mh$                         d Z ddgZddlZddlmZ ddlmZ  edd           ej        dd	
          dd                        Z	 ej        dd	
          d             Z
dS )z
Read graphs in LEDA format.

LEDA is a C++ class library for efficient data types and algorithms.

Format
------
See http://www.algorithmic-solutions.info/leda_guide/graphs/leda_native_graph_fileformat.html

	read_leda
parse_leda    N)NetworkXError)	open_filerb)modeT)graphsreturns_graphUTF-8c                 B    fd| D             }t          |          }|S )a  Read graph in LEDA format from path.

    Parameters
    ----------
    path : file or string
       Filename or file handle to read.
       Filenames ending in .gz or .bz2 will be decompressed.

    Returns
    -------
    G : NetworkX graph

    Examples
    --------
    >>> G = nx.read_leda("file.leda")  # doctest: +SKIP

    References
    ----------
    .. [1] http://www.algorithmic-solutions.info/leda_guide/graphs/leda_native_graph_fileformat.html
    c              3   B   K   | ]}|                               V  d S )N)decode).0lineencodings     W/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/networkx/readwrite/leda.py	<genexpr>zread_leda.<locals>.<genexpr>,   s/      44tT[[""444444    )r   )pathr   linesGs    `  r   r   r      s0    . 5444t444E5AHr   c                 h   t          | t                    r"t          |                     d                    } t          d | D                       } t	          d          D ]}t          |            t          t          |                     }|dk    rt          j                    }nt          j	                    }t          t          |                     }i }t	          d|dz             D ]P}t          |           
                                                    d          }|dk    rt          |          }|||<   Q|                    d |                                D                        t          t          |                     }t	          |          D ]}	 t          |                                           \  }}	}
}n(# t          $ r}t          d	|dz              |d
}~ww xY w|                    |t          |                   |t          |	                   |dd                    |S )a  Read graph in LEDA format from string or iterable.

    Parameters
    ----------
    lines : string or iterable
       Data in LEDA format.

    Returns
    -------
    G : NetworkX graph

    Examples
    --------
    >>> G = nx.parse_leda(string)  # doctest: +SKIP

    References
    ----------
    .. [1] http://www.algorithmic-solutions.info/leda_guide/graphs/leda_native_graph_fileformat.html
    
c                 n    g | ]2}|                     d           s|dk    |                    d          3S ))#r    r   )
startswithrstrip)r   r   s     r   
<listcomp>zparse_leda.<locals>.<listcomp>I   sK     	
 	
 	
OOK00	
 59BJJ KK4>JJr         z|{}|  r   c                     g | ]\  }}|S  r$   )r   iss      r   r   zparse_leda.<locals>.<listcomp>a   s    111DAqa111r   z"Too few fields in LEDA.GRAPH edge N   )label)
isinstancestritersplitrangenextintnxDiGraphGraphr   stripadd_nodes_fromitemsBaseExceptionr   add_edge)r   r%   dur   nnodesymbolmr&   treversalr)   errs                r   r   r   1   s)   * % (U[[&&''	
 	
	
 	
 	
 E 1XX  U	T%[[		B	RxxJLLHJJ 	DKKAD1a!e__  e##%%++H55R<<VVFQ11DJJLL111222 	DKKA1XX B B	W$(KK$5$5$7$7!Aq(EE 	W 	W 	W LQU L LMMSVV	W 	


4A<c!ffU1R4[
AAAAHs   &G
G(G##G()r   )__doc____all__networkxr1   networkx.exceptionr   networkx.utilsr   _dispatchabler   r   r$   r   r   <module>rG      s   	 	 
%     , , , , , , $ $ $ $ $ $ 14T222   32 4 T222: : 32: : :r   