ó
|£*^c           @   s{  d  Z  d j d g ƒ Z d d d d g Z d d l Z d d l Z d d	 l m Z m	 Z	 y  d d
 l
 m Z m Z m Z WnE e k
 r¿ y  d d
 l m Z m Z m Z Wn e k
 r» n Xn Xe d d d ƒd e d d „ ƒ Z d e d d „ Z e d d d ƒe e d d „ ƒ Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d „  Z d „  Z d „  Z d S(   sª  
****
GEXF
****
Read and write graphs in GEXF format.

GEXF (Graph Exchange XML Format) is a language for describing complex
network structures, their associated data and dynamics.

This implementation does not support mixed graphs (directed and
undirected edges together).

Format
------
GEXF is an XML format.  See http://gexf.net/format/schema.html for the
specification and http://gexf.net/format/basic.html for examples.
s   
s%   Aric Hagberg <aric.hagberg@gmail.com>t
   write_gexft	   read_gexft   relabel_gexf_grapht   generate_gexfiÿÿÿÿN(   t	   open_filet   make_str(   t   Elementt   ElementTreet   tostringi   t   modet   wbs   utf-8s   1.1draftc         C   s9   t  d | d | d | ƒ } | j |  ƒ | j | ƒ d S(   sô  Write G in GEXF format to path.

    "GEXF (Graph Exchange XML Format) is a language for describing
    complex networks structures, their associated data and dynamics" [1]_.

    Parameters
    ----------
    G : graph
       A NetworkX graph
    path : file or string
       File or file name to write.
       File names ending in .gz or .bz2 will be compressed.
    encoding : string (optional)
       Encoding for text data.
    prettyprint : bool (optional)
       If True use line breaks and indenting in output XML.

    Examples
    --------
    >>> G=nx.path_graph(4)
    >>> nx.write_gexf(G, "test.gexf")

    Notes
    -----
    This implementation does not support mixed graphs (directed and undirected
    edges together).

    The node id attribute is set to be the string of the node label.
    If you want to specify an id use set it as node data, e.g.
    node['a']['id']=1 to set the id of node 'a' to 1.

    References
    ----------
    .. [1] GEXF graph format, http://gexf.net/format/
    t   encodingt   prettyprintt   versionN(   t
   GEXFWritert	   add_grapht   write(   t   Gt   pathR   R   R   t   writer(    (    sk   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/gexf.pyR    &   s    %	c         c   sN   t  d | d | d | ƒ } | j |  ƒ x t | ƒ j ƒ  D] } | Vq; Wd S(   s  Generate lines of GEXF format representation of G"

    "GEXF (Graph Exchange XML Format) is a language for describing
    complex networks structures, their associated data and dynamics" [1]_.

    Parameters
    ----------
    G : graph
       A NetworkX graph
    encoding : string (optional)
       Encoding for text data.
    prettyprint : bool (optional)
       If True use line breaks and indenting in output XML.

    Examples
    --------
    >>> G=nx.path_graph(4)
    >>> linefeed=chr(10) # linefeed=

    >>> s=linefeed.join(nx.generate_gexf(G))  # doctest: +SKIP
    >>> for line in nx.generate_gexf(G):  # doctest: +SKIP
    ...    print line

    Notes
    -----
    This implementation does not support mixed graphs (directed and undirected
    edges together).

    The node id attribute is set to be the string of the node label.
    If you want to specify an id use set it as node data, e.g.
    node['a']['id']=1 to set the id of node 'a' to 1.

    References
    ----------
    .. [1] GEXF graph format, http://gexf.net/format/
    R   R   R   N(   R   R   t   strt
   splitlines(   R   R   R   R   R   t   line(    (    sk   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/gexf.pyR   P   s
    $	i    t   rbc         C   s@   t  d | d | ƒ } | r0 t | |  ƒ ƒ } n | |  ƒ } | S(   så  Read graph in GEXF format from path.

    "GEXF (Graph Exchange XML Format) is a language for describing
    complex networks structures, their associated data and dynamics" [1]_.

    Parameters
    ----------
    path : file or string
       File or file name to write.
       File names ending in .gz or .bz2 will be compressed.

    node_type: Python type (default: None)
       Convert node ids to this type if not None.

    relabel : bool (default: False)
       If True relabel the nodes to use the GEXF node "label" attribute
       instead of the node "id" attribute as the NetworkX node label.

    Returns
    -------
    graph: NetworkX graph
        If no parallel edges are found a Graph or DiGraph is returned.
        Otherwise a MultiGraph or MultiDiGraph is returned.

    Notes
    -----
    This implementation does not support mixed graphs (directed and undirected
    edges together).

    References
    ----------
    .. [1] GEXF graph format, http://gexf.net/format/
    t	   node_typeR   (   t
   GEXFReaderR   (   R   R   t   relabelR   t   readerR   (    (    sk   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/gexf.pyR   z   s
    #t   GEXFc        	   B   sØ  e  Z i  Z i d  d 6d d 6d d 6d j d  d g ƒ d 6d	 d
 6Z e e d <i d d 6d d 6d d 6d j d d g ƒ d 6d d
 6Z e e d <e d f e d f e d f e d f e d f e	 d f g Z
 yA e d ƒ Z e
 j e d f e d f e d f e d f g ƒ Wn] e k
 rle
 j e d f e d f e d f e d f e d f e d f e d f g ƒ n Xe	 e
 ƒ Z e	 d „  e
 Dƒ ƒ Z i e d 6e d 6e d 6e d 6e d 6e d  6e d! 6e d" 6Z d# „  Z RS($   s   http://www.gexf.net/1.1draftt   NS_GEXFs    http://www.gexf.net/1.1draft/vizt   NS_VIZs)   http://www.w3.org/2001/XMLSchema-instancet   NS_XSIt    s%   http://www.gexf.net/1.1draft/gexf.xsdt   SCHEMALOCATIONs   1.1t   VERSIONs   1.1drafts   http://www.gexf.net/1.2drafts    http://www.gexf.net/1.2draft/vizs%   http://www.gexf.net/1.2draft/gexf.xsds   1.2s   1.2draftt   integert   floatt   doublet   booleant   stringiÝ  t   longt
   liststringt   anyURIc         c   s   |  ] } t  | ƒ Vq d  S(   N(   t   reversed(   t   .0t   a(    (    sk   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/gexf.pys	   <genexpr>Ö   s    t   truet   falset   Truet   Falset   0i    t   1i   c         C   s‚   |  j  j | ƒ } | d  k r4 t j d | ƒ ‚ n  | d |  _ | d |  _ | d |  _ | d |  _ | d |  _	 | |  _
 d  S(   Ns   Unknown GEXF version %sR   R   R   R"   (   t   versionst   gett   Nonet   nxt   NetworkXErrorR   R   R   R!   R"   R   (   t   selfR   t   d(    (    sk   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/gexf.pyt   set_versionæ   s    (   t   __name__t
   __module__R4   t   joinR:   t   intR$   t   boolt   listt   dictt   typest   chrt   blurbt   extendR   t
   ValueErrorR(   t   unicodet   xml_typet   python_typeR0   R1   t   convert_boolR;   (    (    (    sk   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/gexf.pyR   ¤   sZ   
	


	

														
R   c           B   s•   e  Z d d  e d d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z d d „ Z RS(   s   utf-8s   1.1draftc         C   s8  y d d  l  } Wn t k
 r/ t d ƒ ‚ n X| |  _ | |  _ |  j | ƒ t d i |  j d 6|  j d 6|  j d 6|  j	 d 6|  j
 d 6ƒ |  _ t j ƒ  |  _ t j ƒ  |  _ i  |  _ i  |  j d	 <i  |  j d
 <i  |  j d	 d <i  |  j d	 d <i  |  j d
 d <i  |  j d
 d <| d  k	 r4|  j | ƒ n  d  S(   Niÿÿÿÿs0   GEXF writer requires xml.elementtree.ElementTreet   gexft   xmlnss	   xmlns:xsis	   xmlns:vizs   xsi:schemaLocationR   t   nodet   edget   dynamict   static(   t   xml.etree.ElementTreet   ImportErrorR   R   R;   R   R   R   R   R!   R"   t   xmlt	   itertoolst   countt   edge_idt   attr_idt   attrR6   R   (   R9   t   graphR   R   R   RT   (    (    sk   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/gexf.pyt   __init__÷   s0    		


	c         C   s;   |  j  r |  j |  j ƒ n  t |  j ƒ j |  j ƒ } | S(   N(   R   t   indentRT   R   t   decodeR   (   R9   t   s(    (    sk   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/gexf.pyt   __str__  s    	c         C   s—   | j  j d ƒ d k r! d } n d } | j ƒ  r< d } n d } t d d | d | ƒ} | |  _ |  j | | ƒ |  j | | ƒ |  j j | ƒ d  S(   NR	   RP   RQ   t   directedt
   undirectedRZ   t   defaultedgetype(	   RZ   R5   t   is_directedR   t   graph_elementt	   add_nodest	   add_edgesRT   t   append(   R9   R   R	   t   defaultRd   (    (    sk   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/gexf.pyR     s    			c         C   sm  t  d ƒ } xM| j d t ƒ D]9\ } } | j ƒ  } t | j d | ƒ ƒ } i | d 6} t | j d | ƒ ƒ }	 |	 | d <y# | j d ƒ }
 t |
 ƒ | d <Wn t k
 r´ n Xt  d | � } | j j d i  ƒ } |  j	 | | ƒ } |  j
 d k r|  j | | ƒ } n |  j | | ƒ } |  j | | ƒ } |  j d | | | ƒ } | j | ƒ q W| j | ƒ d  S(	   Nt   nodest   datat   idt   labelt   pidRN   t   node_defaults   1.1(   R   t
   nodes_iterR0   t   copyR   t   popt   KeyErrorRZ   R5   t   add_parentsR   t
   add_slicest
   add_spellst   add_vizt   add_attributesRg   (   R9   R   Rd   t   nodes_elementRN   Rj   t	   node_datat   node_idt   kwRl   Rm   t   node_elementRh   (    (    sk   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/gexf.pyRe   0  s.    
c            s3  ‡  f d †  } t  d ƒ } x| | ƒ D]ö\ } } } } i t | ƒ d 6}	 y# | j d ƒ }
 t |
 ƒ |	 d <Wn t k
 rƒ n Xy# | j d ƒ } t | ƒ |	 d <Wn t k
 rº n Xy0 | j d ƒ } t | ƒ |	 d <ˆ  j | ƒ Wn t k
 rþ n Xy0 | j d ƒ } t | ƒ |	 d <ˆ  j | ƒ Wn t k
 rBn Xt | j | j d | ƒ ƒ } t | j | j d | ƒ ƒ } t  d d	 | d
 | |	 �} | j j d i  ƒ } ˆ  j d k rÕˆ  j	 | | ƒ } n ˆ  j
 | | ƒ } ˆ  j | | ƒ } ˆ  j d | | | ƒ } | j | ƒ q( W| j | ƒ d  S(   Nc         3   s  |  j  ƒ  r› xÿ |  j d t d t ƒ D]o \ } } } } | j ƒ  } | j d | ƒ | j d d  ƒ } | d  k rƒ t ˆ  j ƒ } n  | | | | f Vq% Wns xp |  j d t ƒ D]\ \ } } } | j ƒ  } | j d d  ƒ } | d  k rù t ˆ  j ƒ } n  | | | | f Vq® Wd  S(   NRj   t   keyst   keyRk   (	   t   is_multigrapht
   edges_iterR0   Rp   t   updateRq   R6   t   nextRW   (   R   t   ut   vR~   Rj   t	   edge_dataRW   (   R9   (    sk   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/gexf.pyt   edge_key_dataP  s    +"t   edgesRk   t   weightt   typet   startt   endRO   t   sourcet   targett   edge_defaults   1.1(   R   R   Rq   Rr   t   alter_graph_mode_timeformatRN   R5   RZ   R   Rt   Ru   Rv   Rw   Rg   (   R9   R   Rd   R†   t   edges_elementRƒ   R„   R~   R…   R{   t   edge_weightt	   edge_typeRŠ   R‹   t	   source_idt	   target_idt   edge_elementRh   (    (   R9   sk   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/gexf.pyRf   O  sP    			c         C   sB  t  d ƒ } t | ƒ d k r" | Sd } x| j ƒ  D]ø\ } } | d k rV d } n  t | ƒ }	 t | ƒ t k r˜x_ | D]W \ }
 } } t |
 ƒ }	 | d  k	 s® | d  k	 r{ d } |  j | ƒ |  j | ƒ Pq{ q{ W|  j t | ƒ |  j	 |	 | | | ƒ } x,| D]Œ \ }
 } } t  d ƒ } | | j
 d <t |
 ƒ | j
 d	 <| d  k	 rbt | ƒ | j
 d
 <n  | d  k	 r„t | ƒ | j
 d <n  | j | ƒ qWq5 d } |  j t | ƒ |  j	 |	 | | | ƒ } t  d ƒ } | | j
 d <t | ƒ t k rt | ƒ j ƒ  | j
 d	 <n t | ƒ | j
 d	 <| j | ƒ q5 W| j | ƒ | S(   Nt	   attvaluesi    RQ   R~   t   networkx_keyRP   t   attvaluet   fort   valueRŠ   R‹   (   R   t   lent   itemsR‰   RA   R6   R�   t   get_attr_idR   RI   t   attribRg   R@   t   lower(   R9   t   node_or_edget   xml_objRj   Rh   R–   R	   t   kR„   t   val_typet   valRŠ   R‹   RX   t   e(    (    sk   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/gexf.pyRw   Œ  sL    	c         C   s€  y |  j  | | | SWnbt k
 r{t t |  j ƒ ƒ } | |  j  | | | <i | d 6| d 6| d 6} t d | � } | j | ƒ }	 |	 d  k	 rÁ t d ƒ }
 t |	 ƒ |
 _	 | j
 |
 ƒ n  d  } x\ |  j j d ƒ D]H } | j d ƒ } | j d d	 ƒ } | | k rÚ | | k rÚ | } qÚ qÚ W| d  k rki | d 6| d 6} t d | � } |  j j d
 | ƒ n  | j
 | ƒ n X| S(   NRk   t   titleR‰   t	   attributeRh   t
   attributest   classR	   RQ   i    (   RY   Rr   R   R‚   RX   R   R5   R6   R   t   textRg   Rd   t   findallt   insert(   R9   R¦   t	   attr_typet   edge_or_nodeRh   R	   t   new_idt   attr_kwargsR§   t   default_titlet   default_elementt   attributes_elementR-   t   a_classt   a_mode(    (    sk   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/gexf.pyR�   º  s0    c   
      C   s§  | j  d t ƒ } | r£| j d ƒ } | d  k	 r|  j d k r— t d |  j d t | j d ƒ ƒ d t | j d ƒ ƒ d t | j d ƒ ƒ ƒ} ng t d |  j d t | j d ƒ ƒ d t | j d ƒ ƒ d t | j d ƒ ƒ d t | j d ƒ ƒ ƒ} | j | ƒ n  | j d	 ƒ } | d  k	 rXt d
 |  j d t | ƒ ƒ} | j | ƒ n  | j d ƒ } | d  k	 r¢t d |  j d t | ƒ ƒ} | j | ƒ n  | j d ƒ } | d  k	 r#| j	 d ƒ rôt d |  j d d d t | ƒ ƒ} n t d |  j d t | ƒ ƒ} | j | ƒ n  | j d ƒ }	 |	 d  k	 r£t d |  j d t |	 j d ƒ ƒ d t |	 j d ƒ ƒ d t |	 j d ƒ ƒ ƒ} | j | ƒ q£n  | S(   Nt   vizt   colors   1.1s	   {%s}colort   rt   gt   bR-   t   sizes   {%s}sizeRš   t	   thicknesss   {%s}thicknesst   shapet   https	   {%s}shapet   imaget   urit   positions   {%s}positiont   xt   yt   z(
   Rq   R1   R5   R6   R"   R   R   R   Rg   t
   startswith(
   R9   t   elementRy   R¶   R·   R¥   R»   R¼   R½   RÁ   (    (    sk   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/gexf.pyRv   Û  sL    c         C   su   | j  d t ƒ } | rq t d ƒ } x: | D]2 } t d ƒ } t | ƒ | j d <| j | ƒ q+ W| j | ƒ n  | S(   Nt   parentst   parentR™   (   Rq   R1   R   R   Rž   Rg   (   R9   R|   Ry   RÇ   t   parents_elementt   pR¥   (    (    sk   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/gexf.pyRs     s    c         C   s€   | j  d t ƒ } | r| t d ƒ } xE | D]= \ } } t d d t | ƒ d t | ƒ ƒ} | j | ƒ q+ W| j | ƒ n  | S(   Nt   slicest   sliceRŠ   R‹   (   Rq   R1   R   R   Rg   (   R9   t   node_or_edge_elementt   node_or_edge_dataRË   t   slices_elementRŠ   R‹   R¥   (    (    sk   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/gexf.pyRt     s    $c         C   sÆ   | j  d t ƒ } | rÂ t d ƒ } x‹ | D]ƒ \ } } t d ƒ } | d  k	 rr t | ƒ | j d <|  j | ƒ n  | d  k	 r¡ t | ƒ | j d <|  j | ƒ n  | j | ƒ q+ W| j | ƒ n  | S(   Nt   spellst   spellRŠ   R‹   (   Rq   R1   R   R6   R   Rž   R�   Rg   (   R9   RÍ   RÎ   RÐ   t   spells_elementRŠ   R‹   R¥   (    (    sk   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/gexf.pyRu   "  s    c         C   s¥   |  j  j d ƒ d k r¡ | d  k	 r¡ t | ƒ t k r? d } n6 t | ƒ t k rZ d } n t | ƒ t k ru d } n  |  j  j d | ƒ |  j  j d d ƒ q¡ n  d  S(   NR	   RQ   t   dateR%   R(   t
   timeformatRP   (   Rd   R5   R6   R‰   R   R$   R?   t   set(   R9   t   start_or_endRÔ   (    (    sk   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/gexf.pyR�   3  s    			c         C   sK   |  j  r |  j |  j ƒ n  t |  j ƒ } | j | d |  j d t ƒd  S(   NR   t   xml_declaration(   R   R\   RT   R   R   R   R0   (   R9   t   fht   document(    (    sk   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/gexf.pyR   A  s    	i    c         C   sè   d | d } t  | ƒ r¸ | j s4 | j j ƒ  rD | d | _ n  | j s^ | j j ƒ  rj | | _ n  x" | D] } |  j | | d ƒ qq W| j s© | j j ƒ  rä | | _ qä n, | rä | j sØ | j j ƒ  rä | | _ n  d  S(   Ns   
s     i   (   R›   Rª   t   stript   tailR\   (   R9   t   elemt   levelt   i(    (    sk   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/gexf.pyR\   I  s     N(   R<   R=   R6   R0   R[   R_   R   Re   Rf   Rw   R�   Rv   Rs   Rt   Ru   R�   R   R\   (    (    (    sk   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/gexf.pyR   ô   s   					=	.	!	1					R   c           B   s}   e  Z d d  d „ Z d „  Z d „  Z d d „ Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z d
 „  Z d „  Z d „  Z RS(   s   1.1draftc         C   sS   y d d  l  } Wn t k
 r/ t d ƒ ‚ n X| |  _ t |  _ |  j | ƒ d  S(   Niÿÿÿÿs0   GEXF reader requires xml.elementtree.ElementTree(   RR   RS   R   R0   t   simple_graphR;   (   R9   R   R   RT   (    (    sk   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/gexf.pyR[   ]  s    		c         C   sª   t  d | ƒ |  _ |  j j d |  j ƒ } | d  k	 rD |  j | ƒ SxP |  j D]E } |  j | ƒ |  j j d |  j ƒ } | d  k	 rN |  j | ƒ SqN Wt j	 d ƒ ‚ d  S(   Nt   files	   {%s}graphs   No <graph> element in GEXF file(
   R   RT   t   findR   R6   t
   make_graphR4   R;   R7   R8   (   R9   t   streamR¹   R   (    (    sk   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/gexf.pyt   __call__h  s    c         C   s  | j  d d  ƒ } | d k r- t j ƒ  } n t j ƒ  } | j  d ƒ } | d  k	 rd | | j d <n  | j  d ƒ } | d  k	 r� | | j d <n  | j  d d ƒ } | d k r½ d | j d <n d | j d <| j  d	 ƒ |  _ |  j d
 k r÷ d |  _ n  | j d |  j ƒ } i  } i  }	 i  }
 i  } x¶ | D]® } | j  d ƒ } | d k rŒ|  j	 | ƒ \ } } | j
 | ƒ |	 j
 | ƒ |	 | j d <q,| d k r×|  j	 | ƒ \ } } |
 j
 | ƒ | j
 | ƒ | | j d <q,‚  q,Wi i d d 6d d 6d d 6d 6} i  } |
 j
 | ƒ | j
 | ƒ | | j d <| j d |  j ƒ } | d  k	 r†x4 | j d |  j ƒ D] } |  j | | | ƒ qfWn  | j d |  j ƒ } | d  k	 rßx4 | j d |  j ƒ D] } |  j | | |
 ƒ q¿Wn  |  j r| j ƒ  rt j | ƒ } qt j | ƒ } n  | S(   NRb   R`   RŠ   R‹   R	   t    RP   RQ   RÔ   RÓ   R'   s   {%s}attributesR©   RN   Rn   RO   RŽ   R%   R‰   Rˆ   R¦   s	   {%s}nodess   {%s}nodes	   {%s}edgess   {%s}edge(   R5   R6   R7   t   MultiDiGrapht
   MultiGraphRZ   RÔ   R«   R   t   find_gexf_attributesR�   Rá   t   add_nodet   add_edgeRß   Rc   t   DiGrapht   Graph(   R9   t	   graph_xmlt   edgedefaultR   t   graph_startt	   graph_endt
   graph_modet   attributes_elementst	   node_attrRn   t	   edge_attrRŽ   R-   t
   attr_classt   nat   ndt   eat   edRx   t   node_xmlR�   t   edge_xml(    (    sk   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/gexf.pyRâ   v  sj    "	c   	      C   se  |  j  | | ƒ } |  j | | ƒ } |  j d k rH |  j | | ƒ } n |  j | | ƒ } |  j | | ƒ } |  j | | ƒ } | j d ƒ } |  j d  k	 r® |  j | ƒ } n  | j d ƒ } | | d <| j d | ƒ } | d  k	 rò | | d <n  | j
 d |  j ƒ } | d  k	 rQx: | j d |  j ƒ D] } |  j | | | d | ƒq+Wn  | j | | ƒ d  S(   Ns   1.1Rk   Rl   Rm   s	   {%s}nodess   {%s}nodet   node_pid(   t   decode_attr_elementsRs   R   Rt   Ru   Rv   t   add_start_endR5   R   R6   Rá   R   R«   Ré   (	   R9   R   Rú   Ró   Rü   Rj   Rz   t
   node_labelt   subnodes(    (    sk   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/gexf.pyRé   Â  s(    
 c         C   sw   |  j  } | j d ƒ } | d  k	 r> |  j | | ƒ | d <n  | j d ƒ } | d  k	 rs |  j | | ƒ | d <n  | S(   NRŠ   R‹   (   RÔ   R5   R6   RJ   (   R9   Rj   RT   t   ttypet
   node_startt   node_end(    (    sk   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/gexf.pyRþ   å  s    	c   	      C   se  i  } | j  d |  j ƒ } | d  k	 rî |  j d k r† i t | j d ƒ ƒ d 6t | j d ƒ ƒ d 6t | j d ƒ ƒ d 6| d <qî i t | j d ƒ ƒ d 6t | j d ƒ ƒ d 6t | j d ƒ ƒ d 6t | j d d ƒ ƒ d 6| d <n  | j  d	 |  j ƒ } | d  k	 r,t | j d
 ƒ ƒ | d <n  | j  d |  j ƒ } | d  k	 rjt | j d
 ƒ ƒ | d <n  | j  d |  j ƒ } | d  k	 rÈ| j d ƒ | d <| d d k rÈ| j d ƒ | d <qÈn  | j  d |  j ƒ } | d  k	 rBi t | j d d ƒ ƒ d 6t | j d d ƒ ƒ d 6t | j d d ƒ ƒ d 6| d <n  t | ƒ d k ra| | d <n  | S(   Ns	   {%s}colors   1.1R¸   R¹   Rº   R·   R-   i   s   {%s}sizeRš   R»   s   {%s}thicknessR¼   s	   {%s}shapeR½   R¿   RÀ   s   {%s}positionRÂ   i    RÃ   RÄ   RÁ   R¶   (   Rá   R   R6   R"   R?   R5   R$   R›   (	   R9   Rj   Rú   R¶   R·   R»   R¼   R½   RÁ   (    (    sk   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/gexf.pyRv   ñ  s<     ##c         C   st   | j  d |  j ƒ } | d  k	 rp g  | d <xA | j d |  j ƒ D]& } | j d ƒ } | d j | ƒ qC Wn  | S(   Ns   {%s}parentsRÇ   s
   {%s}parentR™   (   Rá   R   R6   R«   R5   Rg   (   R9   Rj   Rú   RÉ   RÊ   RÈ   (    (    sk   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/gexf.pyRs     s    
c         C   s‰   | j  d |  j ƒ } | d  k	 r… g  | d <xV | j d |  j ƒ D]; } | j d ƒ } | j d ƒ } | d j | | f ƒ qC Wn  | S(   Ns
   {%s}slicesRË   s	   {%s}sliceRŠ   R‹   (   Rá   R   R6   R«   R5   Rg   (   R9   Rj   t   node_or_edge_xmlRÏ   R^   RŠ   R‹   (    (    sk   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/gexf.pyRt   "  s    
c         C   s¬   | j  d |  j ƒ } | d  k	 r¨ g  | d <|  j } xp | j d |  j ƒ D]U } |  j | | j d ƒ ƒ } |  j | | j d ƒ ƒ } | d j | | f ƒ qL Wn  | S(   Ns
   {%s}spellsRÐ   s	   {%s}spellRŠ   R‹   (   Rá   R   R6   RÔ   R«   RJ   R5   Rg   (   R9   Rj   R  RÒ   R  R^   RŠ   R‹   (    (    sk   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/gexf.pyRu   ,  s    
	c         C   s  | j  d ƒ } | j ƒ  r9 | d k r9 t j d ƒ ‚ n  | j ƒ  rd | d k rd t j d ƒ ‚ n  | j  d ƒ } | j  d ƒ } |  j d  k	 r² |  j | ƒ } |  j | ƒ } n  |  j | | ƒ } |  j | | ƒ } |  j d k rú |  j	 | | ƒ } n |  j
 | | ƒ } | j  d	 ƒ } | d  k	 r4| | d	 <n  | j d
 d  ƒ }	 |	 d  k	 r[|	 } n  | j  d ƒ }
 |
 d  k	 r‰t |
 ƒ | d <n  | j  d ƒ } | d  k	 r±| | d <n  | j | | ƒ rÏt |  _ n  | j | | d | | �| d k r| j | | d | | �n  d  S(   NR‰   Ra   s(   Undirected edge found in directed graph.R`   s(   Directed edge found in undirected graph.RŒ   R�   s   1.1Rk   R—   Rˆ   Rl   R~   t   mutual(   R5   Rc   R7   R8   R   R6   Rý   Rþ   R   Rt   Ru   Rq   R$   t   has_edgeR1   Rß   Rê   (   R9   R   R•   Rô   t   edge_directionRŒ   R�   Rj   RW   t   multigraph_keyRˆ   t
   edge_label(    (    sk   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/gexf.pyRê   8  sD    	c         C   s…  i  } | j  d |  j ƒ } | d  k	 r�xV| j d |  j ƒ D];} | j d ƒ } y | | d } Wn$ t k
 rŒ t j d | ƒ ‚ n X| | d } | j d ƒ }	 | d k rÆ |  j |	 }	 n |  j	 | |	 ƒ }	 | | d	 d
 k rp|  j
 }
 |  j	 |
 | j d ƒ ƒ } |  j	 |
 | j d ƒ ƒ } | | k rW| | j |	 | | f ƒ qz|	 | | f g | | <q? |	 | | <q? Wn  | S(   Ns   {%s}attvaluess   {%s}attvalueR™   R¦   s   No attribute defined for=%sR‰   Rš   R&   R	   RP   RŠ   R‹   (   Rá   R   R6   R«   R5   Rr   R7   R8   RK   RJ   RÔ   Rg   (   R9   t	   gexf_keyst   obj_xmlRY   t   attr_elementR-   R~   R¦   t   atypeRš   R  RŠ   R‹   (    (    sk   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/gexf.pyRý   p  s.    	c         C   sö   i  } i  } | j  d ƒ } xÎ | j d |  j ƒ D]¶ } | j  d ƒ } | j  d ƒ } | j  d ƒ } i | d 6| d 6| d 6| | <| j d |  j ƒ }	 |	 d  k	 r2 | d k rÅ |  j |	 j }
 n |  j | |	 j ƒ }
 |
 | | <q2 q2 W| | f S(   NR	   s   {%s}attributeRk   R¦   R‰   s   {%s}defaultR&   (   R5   R«   R   Rá   R6   RK   Rª   RJ   (   R9   R³   t   attrst   defaultsR	   R¢   RX   R¦   R  Rh   Rš   (    (    sk   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/gexf.pyRè   ’  s    N(   R<   R=   R6   R[   Rä   Râ   Ré   Rþ   Rv   Rs   Rt   Ru   Rê   Rý   Rè   (    (    (    sk   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/gexf.pyR   Z  s   		L#		(			
		8	"c   	      C   st  y. g  |  D] } | |  j  | d f ^ q
 } Wn  t k
 rP t j d ƒ ‚ n Xt | Œ  \ } } t t | ƒ ƒ t |  ƒ k r“ t j d ƒ ‚ n  t | ƒ } t j |  | ƒ } x¼ |  D]´ } | | } | | j  | d <| j  | j	 d ƒ d | j  | k r#| |  j  | d | j  | d <n  d | j  | k r¸ g  |  j  | d D] } | | ^ qH| j  | d <q¸ q¸ W| S(   s­  Relabel graph using "label" node keyword for node label.

    Parameters
    ----------
    G : graph
       A NetworkX graph read from GEXF data

    Returns
    -------
    H : graph
      A NetworkX graph with relabed nodes

    Notes
    -----
    This function relabels the nodes in a NetworkX graph with the
    "label" attribute.  It also handles relabeling the specific GEXF
    node attributes "parents", and "pid".
    Rl   sF   Failed to relabel nodes: missing node labels found. Use relabel=False.sH   Failed to relabel nodes: duplicate node labels found. Use relabel=False.Rk   Rm   RÇ   (
   RN   Rr   R7   R8   t   zipR›   RÕ   RB   t   relabel_nodesRq   (	   R   Rƒ   t   mappingRÂ   RÃ   t   Ht   nt   mRÊ   (    (    sk   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/gexf.pyR   §  s$    .
#:c         C   s:   d d l  m } y d d  l } Wn | d ƒ ‚ n Xd  S(   Niÿÿÿÿ(   t   SkipTests$   xml.etree.cElementTree not available(   t   noseR  t   xml.etree.cElementTree(   t   moduleR  RT   (    (    sk   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/gexf.pyt   setup_moduleÔ  s
    c         C   s+   d d  l  } y | j d ƒ Wn n Xd  S(   Niÿÿÿÿs	   test.gexf(   t   ost   unlink(   R  R  (    (    sk   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/gexf.pyt   teardown_moduleÜ  s
    (   t   __doc__R>   t
   __author__t   __all__RU   t   networkxR7   t   networkx.utilsR   R   R  R   R   R   RS   RR   R0   R    R   R6   R1   R   t   objectR   R   R   R   R  R  (    (    (    sk   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/gexf.pyt   <module>   s2     )*)Pÿ gÿ N	-	