ó
|£*^c           @   s‡  d  Z  d j d d g ƒ Z d d d d d d	 g Z d
 d l Z d
 d l m Z m Z d
 d l	 Z	 y& d
 d l
 m Z m Z m Z m Z WnK e k
 rÔ y& d
 d l m Z m Z m Z m Z WqÕ e k
 rÐ qÕ Xn Xe d d d ƒd e d „ ƒ Z d e d „ Z e d d d ƒe d „ ƒ Z e d „ Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ d	 e f d „  ƒ  YZ d „  Z d „  Z d S(   s}  
*******
GraphML
*******
Read and write graphs in GraphML format.

This implementation does not support mixed graphs (directed and unidirected
edges together), hyperedges, nested graphs, or ports.

"GraphML is a comprehensive and easy-to-use file format for graphs. It
consists of a language core to describe the structural properties of a
graph and a flexible extension mechanism to add application-specific
data. Its main features include support of

    * directed, undirected, and mixed graphs,
    * hypergraphs,
    * hierarchical graphs,
    * graphical representations,
    * references to external data,
    * application-specific attribute data, and
    * light-weight parsers.

Unlike many other file formats for graphs, GraphML does not use a
custom syntax. Instead, it is based on XML and hence ideally suited as
a common denominator for all kinds of services generating, archiving,
or processing graphs."

http://graphml.graphdrawing.org/

Format
------
GraphML is an XML format.  See
http://graphml.graphdrawing.org/specification.html for the specification and
http://graphml.graphdrawing.org/primer/graphml-primer.html
for examples.
s   
s   Salim Fadhleys   Aric Hagberg (hagberg@lanl.gov)t   write_graphmlt   read_graphmlt   generate_graphmlt   parse_graphmlt   GraphMLWritert   GraphMLReaderiÿÿÿÿN(   t	   open_filet   make_str(   t   Elementt   ElementTreet   tostringt
   fromstringi   t   modet   wbs   utf-8c         C   s3   t  d | d | ƒ } | j |  ƒ | j | ƒ d S(   s„  Write G in GraphML XML format to path

    Parameters
    ----------
    G : graph
       A networkx graph
    path : file or string
       File or filename to write.
       Filenames 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_graphml(G, "test.graphml")

    Notes
    -----
    This implementation does not support mixed graphs (directed and unidirected
    edges together) hyperedges, nested graphs, or ports.
    t   encodingt   prettyprintN(   R   t   add_graph_elementt   dump(   t   Gt   pathR   R   t   writer(    (    sn   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/graphml.pyR    7   s    c         c   sH   t  d | d | ƒ } | j |  ƒ x t | ƒ j ƒ  D] } | Vq5 Wd S(   s•  Generate GraphML lines for G

    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_graphml(G))  # doctest: +SKIP
    >>> for line in nx.generate_graphml(G):  # doctest: +SKIP
    ...    print(line)

    Notes
    -----
    This implementation does not support mixed graphs (directed and unidirected
    edges together) hyperedges, nested graphs, or ports.
    R   R   N(   R   R   t   strt
   splitlines(   R   R   R   R   t   line(    (    sn   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/graphml.pyR   U   s    i    t   rbc         C   s,   t  d | ƒ } t | d |  ƒ ƒ } | d S(   s-  Read graph in GraphML format from path.

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

    node_type: Python type (default: str)
       Convert node ids to this type

    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 unidirected
    edges together), hypergraphs, nested graphs, or ports.

    For multigraphs the GraphML edge "id" will be used as the edge
    key.  If not specified then they "key" attribute will be used.  If
    there is no "key" attribute a default NetworkX multigraph edge key
    will be provided.

    Files with the yEd "yfiles" extension will can be read but the graphics
    information is discarded.

    yEd compressed files ("file.graphmlz" extension) can be read by renaming
    the file to "file.graphml.gz".

    t	   node_typeR   i    (   R   t   list(   R   R   t   readert   glist(    (    sn   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/graphml.pyR   s   s    $c         C   s,   t  d | ƒ } t | d |  ƒ ƒ } | d S(   sú  Read graph in GraphML format from string.

    Parameters
    ----------
    graphml_string : string
       String containing graphml information
       (e.g., contents of a graphml file).

    node_type: Python type (default: str)
       Convert node ids to this type

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

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

    >>> s=linefeed.join(nx.generate_graphml(G))
    >>> H=nx.parse_graphml(s)

    Notes
    -----
    This implementation does not support mixed graphs (directed and unidirected
    edges together), hypergraphs, nested graphs, or ports.

    For multigraphs the GraphML edge "id" will be used as the edge
    key.  If not specified then they "key" attribute will be used.  If
    there is no "key" attribute a default NetworkX multigraph edge key
    will be provided.

    R   t   stringi    (   R   R   (   t   graphml_stringR   R   R   (    (    sn   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/graphml.pyR   �   s    $t   GraphMLc        
   B   s  e  Z d  Z d Z d Z d j d  d g ƒ Z y e d ƒ e Z	 e
 Z Wn e k
 rZ n Xe
 d f e d f e d f e	 d f e
 d	 f e d
 f e d f e d f e d f g	 Z e 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 RS(   s%   http://graphml.graphdrawing.org/xmlnss)   http://www.w3.org/2001/XMLSchema-instances!   http://www.yworks.com/xml/graphmlt    s5   http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsdi90  t   integert   yfilesR   t   intt   longt   floatt   doublet   booleanc         c   s   |  ] } t  | ƒ Vq d  S(   N(   t   reversed(   t   .0t   a(    (    sn   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/graphml.pys	   <genexpr>ß   s    t   truet   falset   Truet   Falset   0i    t   1i   (   t   __name__t
   __module__t
   NS_GRAPHMLt   NS_XSIt   NS_Yt   joint   SCHEMALOCATIONt   chrR   t   unicodeR#   R$   t
   ValueErrorR%   t   boolt   typest   dictt   xml_typet   python_typeR-   R.   t   convert_bool(    (    (    sn   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/graphml.pyR   Ç   s.   	

	c           B   s}   e  Z d d  e d „ Z d „  Z d „  Z d d d „ Z d „  Z d „  Z	 d „  Z
 d	 „  Z d
 „  Z d „  Z d d „ Z RS(   s   utf-8c         C   s›   y d d  l  } Wn t k
 r/ t d ƒ ‚ n X| |  _ | |  _ t d i |  j d 6|  j d 6|  j d 6ƒ |  _ i  |  _	 | d  k	 r— |  j | ƒ n  d  S(   Niÿÿÿÿs3   GraphML writer requires xml.elementtree.ElementTreet   graphmlt   xmlnss	   xmlns:xsis   xsi:schemaLocation(   t   xml.etree.ElementTreet   ImportErrorR   R   R   R3   R4   R7   t   xmlt   keyst   NoneR   (   t   selft   graphR   R   RE   (    (    sn   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/graphml.pyt   __init__é   s    		
	c         C   s;   |  j  r |  j |  j ƒ n  t |  j ƒ j |  j ƒ } | S(   N(   R   t   indentRE   R
   t   decodeR   (   RH   t   s(    (    sn   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/graphml.pyt   __str__ü   s    	c   
      C   s×   | | | f } y |  j  | SWn² t k
 rÒ d t t |  j  ƒ ƒ } | |  j  | <i | d 6| d 6| d 6| d 6} t d | � } | d  k	 r¼ t d ƒ }	 t | ƒ |	 _ | j |	 ƒ n  |  j	 j
 d | ƒ n X| S(	   Ns   d%it   idt   fors	   attr.names	   attr.typet   keyt   defaulti    (   RF   t   KeyErrort   lenR   R   RG   R   t   textt   appendRE   t   insert(
   RH   t   namet	   attr_typet   scopeRR   t   keys_keyt   new_idt
   key_kwargst   key_elementt   default_element(    (    sn   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/graphml.pyt   get_key  s"    

t   allc         C   si   | |  j  k r% t j d | ƒ ‚ n  |  j | |  j  | | | ƒ } t d d | ƒ} t | ƒ | _ | S(   sn   
        Make a data element for an edge or a node. Keep a log of the
        type in the keys table.
        s2   GraphML writer does not support %s as data values.t   dataRQ   (   R>   t   nxt   NetworkXErrorR`   R   R   RU   (   RH   RX   t   element_typet   valueRZ   RR   t   key_idt   data_element(    (    sn   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/graphml.pyt   add_data  s    	c   	   	   C   sp   xi | j  ƒ  D][ \ } } | j | ƒ } |  j t | ƒ t | ƒ t | ƒ d | d | ƒ} | j | ƒ q Wd S(   s.   Appends attributes to edges or nodes.
        RZ   RR   N(   t   itemst   getRi   R   t   typeRV   (	   RH   RZ   t   xml_objRb   RR   t   kt   vt   default_valuet   obj(    (    sn   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/graphml.pyt   add_attributes&  s
    $c         C   sw   xp | j  d t ƒ D]\ \ } } t d d t | ƒ ƒ} | j j d i  ƒ } |  j d | | | ƒ | j | ƒ q Wd  S(   NRb   t   nodeRO   t   node_default(   t
   nodes_iterR-   R   R   RI   Rk   Rr   RV   (   RH   R   t   graph_elementRs   Rb   t   node_elementRR   (    (    sn   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/graphml.pyt	   add_nodes/  s
    c   	      C   s=  | j  ƒ  r· x*| j d t d t ƒ D]‹ \ } } } } t d d t | ƒ d t | ƒ ƒ} | j j d i  ƒ } |  j d | | | ƒ |  j d | i | d 6| ƒ | j | ƒ q% Wn‚ x | j d t ƒ D]k \ } } } t d d t | ƒ d t | ƒ ƒ} | j j d i  ƒ } |  j d | | | ƒ | j | ƒ qÊ Wd  S(   NRb   RF   t   edget   sourcet   targett   edge_defaultRQ   (	   t   is_multigrapht
   edges_iterR-   R   R   RI   Rk   Rr   RV   (	   RH   R   Rv   t   uRo   RQ   Rb   t   edge_elementRR   (    (    sn   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/graphml.pyt	   add_edges6  s    +"c         C   sØ   | j  ƒ  r d } n d } | j j d d ƒ } | d k rQ t d d | ƒ} n t d d | d | ƒ} i  } t d „  | j j ƒ  Dƒ ƒ } |  j d | | | ƒ |  j | | ƒ |  j	 | | ƒ |  j
 j | ƒ d S(   s=   
        Serialize graph G in GraphML to the stream.
        t   directedt
   undirectedRO   RI   t   edgedefaultc         s   s-   |  ]# \ } } | d k r | | f Vq d S(   Rt   R|   N(   Rt   R|   (    (   R)   Rn   Ro   (    (    sn   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/graphml.pys	   <genexpr>[  s    	N(   t   is_directedRI   t   popRG   R   R=   Rj   Rr   Rx   R�   RE   RV   (   RH   R   t   default_edge_typet   graphidRv   RR   Rb   (    (    sn   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/graphml.pyR   H  s     				c         C   s"   x | D] } |  j  | ƒ q Wd S(   s;   
        Add many graphs to this GraphML document.
        N(   R   (   RH   t
   graph_listR   (    (    sn   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/graphml.pyt
   add_graphsb  s    c         C   sK   |  j  r |  j |  j ƒ n  t |  j ƒ } | j | d |  j d t ƒd  S(   NR   t   xml_declaration(   R   RK   RE   R	   t   writeR   R-   (   RH   t   streamt   document(    (    sn   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/graphml.pyR   i  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   (   RT   RU   t   stript   tailRK   (   RH   t   elemt   levelt   i(    (    sn   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/graphml.pyRK   o  s     N(   R1   R2   RG   R-   RJ   RN   R`   Ri   Rr   Rx   R�   R   RŠ   R   RK   (    (    (    sn   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/graphml.pyR   è   s   									c           B   sV   e  Z d  Z e d „ Z d d d „ Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z RS(	   s?   Read a GraphML document.  Produces NetworkX graph objects.
    c         C   sF   y d d  l  } Wn t k
 r/ t d ƒ ‚ n X| |  _ t |  _ d  S(   Niÿÿÿÿs3   GraphML reader requires xml.elementtree.ElementTree(   RC   RD   R   R.   t
   multigraph(   RH   R   RE   (    (    sn   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/graphml.pyRJ   ƒ  s    	c         c   sŸ   | d  k	 r! t d | ƒ |  _ n* | d  k	 r? t | ƒ |  _ n t d ƒ ‚ |  j |  j ƒ \ } } x5 |  j j d |  j ƒ D] } |  j | | | ƒ Vq} Wd  S(   Nt   files0   Must specify either 'path' or 'string' as kwarg.s	   {%s}graph(	   RG   R	   RE   R   R:   t   find_graphml_keyst   findallR3   t
   make_graph(   RH   R   R   RF   t   defaultst   g(    (    sn   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/graphml.pyt   __call__Œ  s     c         C   sò  | j  d d  ƒ } | d k r- t j ƒ  } n t j ƒ  } i  | j d <i  | j d <x¤ | j ƒ  D]– \ } } | | d } | | d }	 | | d }
 | d k rÆ | j d j i |
 | ƒ |	 6ƒ n  | d	 k r` | j d j i |
 | ƒ |	 6ƒ q` q` W| j d
 |  j	 ƒ } | d  k	 r.t j
 d ƒ ‚ n  x1 | j d |  j	 ƒ D] } |  j | | | ƒ qEWx1 | j d |  j	 ƒ D] } |  j | | | ƒ qyW|  j | | ƒ } | j j | ƒ |  j sê| j ƒ  rÚt j | ƒ St j | ƒ Sn | Sd  S(   NR„   R‚   Rt   R|   RP   RX   Rl   Rs   Ry   s   {%s}hyperedges*   GraphML reader does not support hyperedgess   {%s}nodes   {%s}edge(   Rk   RG   Rc   t   MultiDiGrapht
   MultiGraphRI   Rj   t   updatet   findR3   Rd   R—   t   add_nodet   add_edget   decode_data_elementsR”   R…   t   DiGrapht   Graph(   RH   t	   graph_xmlt   graphml_keysR™   R„   R   Rg   Rf   t   key_forRX   R?   t	   hyperedget   node_xmlt   edge_xmlRb   (    (    sn   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/graphml.pyR˜   —  s8    $(	c         C   sp   | j  d |  j ƒ } | d k	 r2 t j d ƒ n  |  j | j d ƒ ƒ } |  j | | ƒ } | j | | ƒ d S(   s!   Add a node to the graph.
        s   {%s}ports   GraphML port tag not supported.RO   N(	   RŸ   R3   RG   t   warningst   warnR   Rk   R¢   R    (   RH   R   R©   R¦   t   portst   node_idRb   (    (    sn   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/graphml.pyR    À  s    c   
      C   sV  | j  d |  j ƒ } | d k	 r2 t j d ƒ n  | j d ƒ } | j ƒ  rk | d k rk t j d ƒ ‚ n  | j ƒ  r– | d k r– t j d ƒ ‚ n  |  j	 | j d ƒ ƒ } |  j	 | j d	 ƒ ƒ } |  j
 | | ƒ } | j d
 ƒ }	 |	 rú |	 | d
 <n  | j | | ƒ rt |  _ n  |	 d k r9| j d d ƒ }	 n  | j | | d |	 | �d S(   s"   Add an edge to the graph.
        s   {%s}ports   GraphML port tag not supported.R‚   R,   s,   directed=false edge found in directed graph.R+   s-   directed=true edge found in undirected graph.Rz   R{   RO   RQ   N(   RŸ   R3   RG   R«   R¬   Rk   R…   Rc   Rd   R   R¢   t   has_edgeR-   R”   R†   R¡   (
   RH   R   R€   R¦   R­   R‚   Rz   R{   Rb   t   edge_id(    (    sn   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/graphml.pyR¡   Í  s*    c         C   s.  i  } x!| j  d |  j ƒ D]	} | j d ƒ } y  | | d } | | d } Wn$ t k
 rx t j d | ƒ ‚ n X| j } | d k	 rÙ t t	 | ƒ ƒ d k rÙ | t
 k rÆ |  j | | | <q&| | ƒ | | <q t t	 | ƒ ƒ d k r d }	 xŸ d d d	 g D]Ž }
 | j d
 |  j |
 |  j f ƒ } | d k	 rd| j d ƒ | d <| j d ƒ | d <n  |	 d k r| j d |  j |
 |  j f ƒ }	 qqW|	 d k	 rµ|	 j | d <n  xO d d d d d g D]8 } | j d |  j | |  j f ƒ } | d k	 rËPqËqËW| d k	 r&| j | d <q&q q W| S(   s:   Use the key information to decode the data XML if present.s   {%s}dataRQ   RX   Rl   s   Bad GraphML data: no key %si    t	   ShapeNodet   SVGNodet	   ImageNodes   {%s}%s/{%s}Geometryt   xt   ys   {%s}%s/{%s}NodeLabelt   labelt   PolyLineEdget
   SplineEdget   QuadCurveEdget
   BezierEdget   ArcEdges   {%s}%s/{%s}EdgeLabelN(   R—   R3   Rk   RS   Rc   Rd   RU   RG   RT   R   R;   R@   RŸ   R5   (   RH   R¦   t   obj_xmlRb   Rh   RQ   t	   data_namet	   data_typeRU   t
   node_labelR   t   geometryt   et
   edge_label(    (    sn   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/graphml.pyR¢   ï  sD    	$		 	c   
      C   s7  i  } i  } x| j  d |  j ƒ D]} | j d ƒ } | j d ƒ } | j d ƒ } | j d ƒ } | d k	 r€ | } d } n  | d k r¦ d } t j d | ƒ n  | d k rÈ t j d	 | ƒ ‚ n  i | d
 6|  j | d 6| j d ƒ d 6| | <| j	 d |  j ƒ }	 |	 d k	 r# |	 j
 | | <q# q# W| | f S(   s=   Extracts all the keys and key defaults from the xml.
        s   {%s}keyRO   s	   attr.types	   attr.names   yfiles.typeR"   R   s#   No key type for id %s. Using strings   Unknown key for id %s in file.RX   Rl   RP   s   {%s}defaultN(   R—   R3   Rk   RG   R«   R¬   Rc   Rd   R?   RŸ   RU   (
   RH   Rv   R¦   t   graphml_key_defaultsRn   t   attr_idRY   t	   attr_namet   yfiles_typeRR   (    (    sn   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/graphml.pyR–     s.    	N(   R1   R2   t   __doc__R   RJ   RG   R›   R˜   R    R¡   R¢   R–   (    (    (    sn   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/graphml.pyR   €  s   		)		"	+c         C   s:   d d l  m } y d d  l } Wn | d ƒ ‚ n Xd  S(   Niÿÿÿÿ(   t   SkipTests#   xml.etree.ElementTree not available(   t   noseRÈ   RC   (   t   moduleRÈ   RE   (    (    sn   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/graphml.pyt   setup_module7  s
    c         C   s+   d d  l  } y | j d ƒ Wn n Xd  S(   Niÿÿÿÿs   test.graphml(   t   ost   unlink(   RÊ   RÌ   (    (    sn   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/graphml.pyt   teardown_module?  s
    (   RÇ   R6   t
   __author__t   __all__t   networkxRc   t   networkx.utilsR   R   R«   t   xml.etree.cElementTreeR   R	   R
   R   RD   RC   R-   R    R   R   R   R   t   objectR   R   R   RË   RÎ   (    (    (    sn   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/readwrite/graphml.pyt   <module>$   s2   		&&)*!˜·	