ó žÃÒYc@s'ddlZddlmZddlmZddlmZddlmZddlmZddlZddlm Z ddl m Z dd l m Z dd lmZd efd „ƒYZd „Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zeejƒd„ƒZeejƒd„ƒZd„Zd„Zd„Z d„Z!d„Z"d„Z#eejƒd„ƒZ$eejƒd„ƒZ%eej&ƒd „ƒZ'eej(ƒd!„ƒZ$d"„Z)d#„Z*d$„Z+d%„Z,d&„Z-d'„Z.eej(ƒd(„ƒZ/dS()iÿÿÿÿN(t assert_equal(t assert_false(t assert_raises(t assert_true(traises(tconvert_node_labels_to_integers(t_bidirectional_shortest_path(t_bidirectional_dijkstra(tarbitrary_elementtTestIsSimplePathcBszeZdZd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z d „Z d „Z d „Z d „ZRS( s^Unit tests for the :func:`networkx.algorithms.simple_paths.is_simple_path` function. cCs&tjƒ}ttj|gƒƒdS(s·Tests that the empty list is not a valid path, since there should be a one-to-one correspondence between paths as lists of nodes and paths as lists of edges. N(tnxt trivial_graphRtis_simple_path(tselftG((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_simple_paths.pyttest_empty_lists cCs)tjƒ}ttj|dgƒƒdS(slTests that the trivial path, a path of length one, is considered a simple path in a graph. iN(R R RR (R R((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_simple_paths.pyttest_trivial_paths cCs)tjƒ}ttj|dgƒƒdS(suTests that a list whose sole element is an object not in the graph is not considered a simple path. s not a nodeN(R R RR (R R((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_simple_paths.pyttest_trivial_nonpath's cCs/tjdƒ}ttj|ddgƒƒdS(Niii(R t path_graphRR (R R((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_simple_paths.pyttest_simple_path/scCs2tjdƒ}ttj|dddgƒƒdS(Niii(R RRR (R R((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_simple_paths.pyttest_non_simple_path3scCs5tjdƒ}ttj|ddddgƒƒdS(Niiii(R t cycle_graphRR (R R((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_simple_paths.pyt test_cycle7scCs/tjdƒ}ttj|ddgƒƒdS(Nii(R RRR (R R((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_simple_paths.pyttest_missing_node;scCs8tjddgƒ}ttj|dddgƒƒdS(Niii(ii(ii(R tDiGraphRR (R R((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_simple_paths.pyttest_directed_path?scCs8tjddgƒ}ttj|dddgƒƒdS(Niii(ii(ii(R RRR (R R((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_simple_paths.pyttest_directed_non_pathCscCs>tjdddgƒ}ttj|ddddgƒƒdS(Niii(ii(ii(ii(R RRR (R R((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_simple_paths.pyttest_directed_cycleGscCs5tjddgƒ}ttj|ddgƒƒdS(Nii(ii(ii(R t MultiGraphRR (R R((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_simple_paths.pyttest_multigraphKscCs;tjddddgƒ}ttj|ddgƒƒdS(Nii(ii(ii(ii(ii(R t MultiDiGraphRR (R R((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_simple_paths.pyttest_multidigraphOs(t__name__t __module__t__doc__RRRRRRRRRRRR(((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_simple_paths.pyR s          cCsHtjdƒ}tj|ddƒ}ttd„|DƒƒdhƒdS(Niiicss|]}t|ƒVqdS(N(ttuple(t.0tp((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_simple_paths.pys Xsii(iiii(R Rtall_simple_pathsRtset(Rtpaths((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_simple_paths.pyttest_all_simple_pathsUscCstjdƒ}tj|ddddƒ}ttd„|Dƒƒd hƒtj|ddddƒ}ttd„|Dƒƒd d d hƒdS( Niiitcutoffcss|]}t|ƒVqdS(N(R#(R$R%((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_simple_paths.pys ^sicss|]}t|ƒVqdS(N(R#(R$R%((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_simple_paths.pys `si(ii(ii(iii(iii(R tcomplete_graphR&RR'(RR(((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_simple_paths.pyttest_all_simple_paths_cutoff[s  cCsQtjddgƒ}tj|ddƒ}ttd„|DƒƒddhƒdS(Niicss|]}t|ƒVqdS(N(R#(R$R%((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_simple_paths.pys fs(ii(ii(ii(ii(R RR&RR'(RR(((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_simple_paths.pyt test_all_simple_paths_multigraphcscCs]tjdddd gƒ}tj|ddddƒ}ttd„|Dƒƒd d hƒdS( Niii R*css|]}t|ƒVqdS(N(R#(R$R%((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_simple_paths.pys ls(ii(ii(ii (i i(ii(ii(R RR&RR'(RR(((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_simple_paths.pyt,test_all_simple_paths_multigraph_with_cutoffiscCswtjƒ}tj|dddgƒtj|dddgƒtj|ddƒ}ttd„|DƒƒdhƒdS(Niiicss|]}t|ƒVqdS(N(R#(R$R%((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_simple_paths.pys ts(iii(R Rtadd_pathR&RR'(RR(((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_simple_paths.pyttest_all_simple_paths_directedos  cCsKtjdƒ}tj|ddddƒ}ttd„|DƒƒgƒdS(NiiiR*icss|]}t|ƒVqdS(N(tlist(R$R%((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_simple_paths.pys zs(R RR&RR1(RR(((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_simple_paths.pyttest_all_simple_paths_emptywsccs„t|ƒ}t||ƒt|gƒ}t|ƒ}xH|D]@}x7tj|||ƒD] }t|ƒ|krX|VqXqXWq<WdS(N(RR'tlenR R&(Rtsourcet neighborstnttargettpath((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_simple_paths.pythamiltonian_path}s   cCsœddlm}tjdƒ}gt|dƒD]}t|ƒ^q/}g|dddgdƒD]}dgt|ƒ^q`}tt|ƒt|ƒƒdS(Niÿÿÿÿ(t permutationsiiiii(t itertoolsR:R R+R9R1Rtsorted(R:RR%R(texact((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_simple_paths.pyttest_hamiltonian_path‡s (8cCsŒtjdƒ}tj|ddddƒ}ttd„|Dƒƒgƒtjtj|ƒddddƒ}ttd„|DƒƒgƒdS(NiiiR*css|]}t|ƒVqdS(N(R1(R$R%((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_simple_paths.pys ’scss|]}t|ƒVqdS(N(R1(R$R%((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_simple_paths.pys ”s(R R+R&RR1R(RR(((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_simple_paths.pyttest_cutoff_zeros $cCsMtjƒ}tj|dddgƒttjtj|ƒddƒƒ}dS(Niiii(R tGraphR/R1R&R(RR(((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_simple_paths.pyttest_source_missing—s cCsMtjƒ}tj|dddgƒttjtj|ƒddƒƒ}dS(Niiii(R R@R/R1R&R(RR(((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_simple_paths.pyttest_target_missingžs cCsêttjddƒddddƒ}tj|ddƒ}tt|ƒddddd dgƒtt|ƒdd d d d dgƒtgtj|ddƒD]}t|ƒ^qœtgtj|ddƒD]}t|ƒ^qʃƒdS( Nit first_labelitorderingR<i iiiiii( tcnltiR t grid_2d_graphtshortest_simple_pathsRtnextR3R<R&(RR(R8((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_simple_paths.pyttest_shortest_simple_paths§s $%%.cCsctjddtjƒƒ}tj|ddƒ}tg|D] }|^q:ddddggƒdS(Nit create_usingiiii(R RRRGR(RR(R8((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_simple_paths.pyt#test_shortest_simple_paths_directed°sc CsStjƒ}|jdddddgƒ|jdddddd d d ƒ|jdddd dd d dƒ|jddddddd dƒ|jdddddd d dƒ|jddddddd dƒ|jddddddd dƒdddgdddgddddgg}ttj|ddddƒƒ}t||ƒdS(NtN0tN1tN2tN3tN4tweightg$@tcapacityi2tnametL5g@i(tL4i-tL1tL0g(@itL2g.@i*tL3(R R@tadd_nodes_fromtadd_edgeR1RGR(tg1tsolutiontresult((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_simple_paths.pyttest_Greg_Bernstein¶s """"""-!cs™‡fd†}tjdƒ‰d„ˆjƒDƒ}tjˆ|dƒd}xEtjˆddddƒD](}||ƒ}t||kƒ|}qiWdS(Ncs't‡fd†t||dƒDƒƒS(Nc3s*|] \}}ˆj||dVqdS(RQN(tadj(R$tutv(R(s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_simple_paths.pys Æsi(tsumtzip(R8(R(s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_simple_paths.pyt cost_funcÅsicSs1i|]'\}}tjddƒ||f“qS(iid(trandomtrandint(R$RaRb((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_simple_paths.pys Ès RQii(R R+tedgestset_edge_attributesRGR(ReRQtcostR8t this_cost((Rs/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_simple_paths.pyt"test_weighted_shortest_simple_pathÄs" cs¥‡fd†}tjdƒ‰ˆjƒ‰d„ˆjƒDƒ}tjˆ|dƒd}xEtjˆddddƒD](}||ƒ}t||kƒ|}quWdS(Ncs't‡fd†t||dƒDƒƒS(Nc3s*|] \}}ˆj||dVqdS(RQN(R`(R$RaRb(R(s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_simple_paths.pys Ósi(RcRd(R8(R(s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_simple_paths.pyReÒsicSs1i|]'\}}tjddƒ||f“qS(iid(RfRg(R$RaRb((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_simple_paths.pys Ös RQii(R R+t to_directedRhRiRGR(ReRQRjR8Rk((Rs/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_simple_paths.pyt+test_directed_weighted_shortest_simple_pathÑs " cCs£tjdƒ}tj|ddƒtj|ddƒd|jddd5si(RRcRd(Rtstttsoln_lenR8((Rs/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_simple_paths.pyt validate_path2scCs't||ƒt|||||ƒdS(N(RRƒ(RR€RR‚RvR8((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_simple_paths.pytvalidate_length_path9s c Csâtjƒ}|jddddddddddg ƒtjƒ}|jd ddgdddgdd dgd ddgdddgdd dggƒt|dddt|ddƒŒt|dddt|ddddgƒŒt|dddt|dddd gƒŒttjt|ddddgdd!gƒt|d d dt|d d ƒŒt|d d dt|d d ddgƒŒt|d d dt|d d dd"gƒŒttjt|d d ddgdd#gƒdS($NR€Rai txiRbiityiiiii ii Rti Rxii(R€Rai (R€R…i(RaRbi(RaR…i(RbR†i(R…Rai(R…Rbi(R…R†i(R†R€i(R†Rbi(R€R…(R€R…(ii(ii(R Rtadd_weighted_edges_fromR@R„RRR|(tXGtXG3((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_simple_paths.pyt%test_bidirectional_dijksta_restricted>sF       "  cCsTtjƒ}tj|dddgƒtj|dddgƒt|ddƒ}dS(Niiiiii(R R@R/R(RR8((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_simple_paths.pyt#test_bidirectional_dijkstra_no_pathgs (0Rft nose.toolsRRRRRtnetworkxR RREt networkx.algorithms.simple_pathsRRtnetworkx.utilsRtobjectR R)R,R-R.R0R2R9R>R?t NodeNotFoundRARBRIRKR_RlRnRpRqRrtNetworkXNotImplementedRsR|RwR{R~RƒR„RŠR‹(((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/tests/test_simple_paths.pytsN  E                 )