ó ŸÃÒYc@s¤dZddlZddlmZmZmZddddgZd„Zed d d ƒd d „ƒZ edd dƒd d„ƒZ d„Z d„Z d„Z dS(s  ***** Pajek ***** Read graphs in Pajek format. This implementation handles directed and undirected graphs including those with self loops and parallel edges. Format ------ See http://vlado.fmf.uni-lj.si/pub/networks/pajek/doc/draweps.htm for format information. iÿÿÿÿN(tis_string_liket open_filetmake_strt read_pajekt parse_pajektgenerate_pajekt write_pajekc csE|jdkrd}n |j}d|jƒVt|ƒ}tt|tdt|ƒdƒƒƒ}xý|D]õ}|jj|iƒ}|jddƒ}|jddƒ}t |jd||ƒƒ}|||<|jd d ƒ} d j t t ||||| fƒƒ} xO|j ƒD]A\} } | jƒdkr| d t | ƒt | ƒf7} qqW| VqkW|jƒrxd VndVxÁ|jdtƒD]­\} } }|jƒ}|jddƒ}d j t t || || |fƒƒ} xO|j ƒD]A\} } | jƒdkró| d t | ƒt | ƒf7} qóqóW| VqWdS(sðGenerate lines in Pajek graph format. Parameters ---------- G : graph A Networkx graph References ---------- See http://vlado.fmf.uni-lj.si/pub/networks/pajek/doc/draweps.htm for format information. ttNetworkXs *vertices %sitxgtytidtshapetellipset s %s %ss*arcss*edgestdatatweightgð?N(tnametordertlisttdicttziptrangetlentnodestgettinttjointmapt make_qstrtitemststript is_directedtedgestTruetcopytpop(tGRRt nodenumbertntnaR R R R tstktvtutedgedatatdtvalue((sn/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/readwrite/pajek.pyRs:    (  ''  " )'itmodetwbsUTF-8cCs;x4t|ƒD]&}|d7}|j|j|ƒƒq WdS(sÂWrite graph in Pajek 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. Examples -------- >>> G=nx.path_graph(4) >>> nx.write_pajek(G, "test.net") References ---------- See http://vlado.fmf.uni-lj.si/pub/networks/pajek/doc/draweps.htm for format information. s N(Rtwritetencode(R%tpathtencodingtline((sn/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/readwrite/pajek.pyRUs itrbcs ‡fd†|Dƒ}t|ƒS(sTRead graph in Pajek format from path. Parameters ---------- path : file or string File or filename to write. Filenames ending in .gz or .bz2 will be uncompressed. Returns ------- G : NetworkX MultiGraph or MultiDiGraph. Examples -------- >>> G=nx.path_graph(4) >>> nx.write_pajek(G, "test.net") >>> G=nx.read_pajek("test.net") To create a Graph instead of a MultiGraph use >>> G1=nx.Graph(G) References ---------- See http://vlado.fmf.uni-lj.si/pub/networks/pajek/doc/draweps.htm for format information. c3s|]}|jˆƒVqdS(N(tdecode(t.0R6(R5(sn/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/readwrite/pajek.pys s(R(R4R5tlines((R5sn/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/readwrite/pajek.pyRpscs ddl}t|ƒr0t|jdƒƒ}ntg|D]}|jdƒ^q:ƒ}tjƒ}g‰x/|r›yt|ƒ}WnPnX|jƒj dƒrãy|jddƒ\}}Wnt k rÒq˜X||j dg|jt|ƒjdƒƒD]} | jdƒ^qW} Wn&tk r›|jt|ƒƒ} nX| d d !\} }ˆj|ƒ|j|ƒ||| <| |j|d g|jt|ƒjdƒƒD]} | jdƒ^q%} Wn&tk ri|jt|ƒƒ} nXt| ƒd kr‚qýn| d d !\}}|j||ƒ}|j||ƒ}i}y/| d d!}|jit|d ƒd6ƒWnnXt| ddd …| ddd …ƒ}|j|ƒ|j|||qýWqm|jƒj dƒrmtj|ƒ}‡fd†t |ƒDƒ}|j!|ƒqmqmW|S(sîParse Pajek format graph from string or iterable. Parameters ---------- lines : string or iterable Data in Pajek format. Returns ------- G : NetworkX graph See Also -------- read_pajek() iÿÿÿÿNs s*networkiRs *verticessutf-8iiR iR R R is*edgess*arcss*edgeiRis*matrixc3sj|]`\}}t|jƒƒD]A\}}t|ƒdkrˆ|ˆ|it|ƒd6fVqqdS(iRN(t enumeratetsplitR(R9trowR6tcolR(tlabels(sn/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/readwrite/pajek.pys òs ("tshlexRtiterR<trstriptnxt MultiDiGraphtnexttlowert startswithtNonet ValueErrortgraphRRRR3R8tAttributeErrortstrtappendtadd_nodeRtupdatetfloatRt MultiGrapht to_directedRRtadd_edgetDiGraphR;tadd_edges_from(R:R@R6R%tltlabelRt nodelabelstnnodestiR t splitlineR R R t extra_attrtuitviR,R+t edge_datatwtadj_list((R?sn/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/readwrite/pajek.pyR‘s  (    ;     )* ;  ")  cCs8t|ƒst|ƒ}nd|kr4d|}n|S(sbReturn the string representation of t. Add outer double-quotes if the string has a space. Rs"%s"(RRL(tt((sn/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/readwrite/pajek.pyRûs    cCsddl}|jdƒdS(Niÿÿÿÿstest.net(tostunlink(tmoduleRc((sn/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/readwrite/pajek.pytteardown_modules (t__doc__tnetworkxRCtnetworkx.utilsRRRt__all__RRRRRRf(((sn/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/readwrite/pajek.pyts  6 j