ó žÃÒYc@spdZddlTddlZddlmZmZddlmZddlmZddlm Z ddlm Z dd lm Z ee ee e gZ ej ejgZejejgZeeeggƒZee eggƒZd Zd Zd „Zd „Zd„Zdd„Zdfd„ƒYZdfd„ƒYZd„Zd„Zd„Z dfd„ƒYZ!dS(s$Maximum flow algorithms test suite. iÿÿÿÿ(t*N(tbuild_flow_dicttbuild_residual_network(tboykov_kolmogorov(t edmonds_karp(t preflow_push(tshortest_augmenting_path(tdinitzs!Assertion failed in function: {0}s2Assertion failed in function: {0} in interface {1}cs`|\}‰tƒ}xD‡fd†|DƒD],\‰}|j‡‡fd†|Dƒƒq,W|S(Nc3s|]}|ˆ|fVqdS(N((t.0tn(tG(s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/tests/test_maxflow.pys sc3s'|]}|ˆkrˆ|fVqdS(N((Rtv(t non_reachabletu(s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/tests/test_maxflow.pys s(tsettupdate(R t partitiont reachabletcutsettnbrs((R R R s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/tests/test_maxflow.pytcompute_cutsets   #$c CsÉtt|ƒt|ƒdtj|jƒƒxA|D]9}tt||ƒt||ƒdtj|jƒƒq2Wtd„|Dƒƒ}x¤|D]œ}x“||jƒD]\} } |||| krât| ||| |kƒnt| dkdtj|jƒƒ||c| 8<|| c| 7%si(t assert_equalRRtformatt__name__tdicttitemstok_( R tstttflowDictt solnValuetcapacityt flow_funcR texcessR tflowtexc((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/tests/test_maxflow.pytvalidate_flows s$+   " # "c s[tt‡fd†|dDƒƒdtj|jƒƒtt‡fd†|dDƒƒdtj|jƒƒtˆ|ƒ}tt‡fd†|Dƒƒdtj|jƒƒt|t‡‡fd†|Dƒƒdtj|jƒƒˆjƒ}|j |ƒˆj ƒs2t t j |ƒdtj|jƒƒn%t t j|ƒdtj|jƒƒdS(Nc3s|]}|ˆkVqdS(N((RR (R (s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/tests/test_maxflow.pys 7siRc3s|]}|ˆkVqdS(N((RR (R (s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/tests/test_maxflow.pys 9sic3s'|]\}}ˆj||ƒVqdS(N(thas_edge(RR R (R (s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/tests/test_maxflow.pys <sc3s'|]\}}ˆ||ˆVqdS(N((RR R (R R (s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/tests/test_maxflow.pys >s(t assert_truetallRRRRRtsumtcopytremove_edges_fromt is_directedt assert_falsetnxt is_connectedtis_strongly_connected( R RRRRR R!RtH((R R s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/tests/test_maxflow.pyt validate_cuts6s##%   (R c CsÄx½tD]µ}|||||ƒ}|jd}t||ƒ} t||dtj|jƒƒt|||| |||ƒtj |||d|d|ƒ\} } t ||||| ||ƒqWdS(Nt flow_valueRR R!( t flow_funcstgraphRRRRRR%R.t minimum_cutR2( R RRt solnFlowsRR R!tRR3t flow_dictt cut_valueR((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/tests/test_maxflow.pytcompare_flows_and_cutsIs  tTestMaxflowMinCutCommoncBs˜eZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z d „Z d „Z d „Zd „Z d „Zd„Zd„ZRS(cCs^tjƒ}|jddddƒiidd6d6idd6d6}t|dd|dƒdS(NiiR gð?(R.tGraphtadd_edgeR;(tselfR R7((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/tests/test_maxflow.pyt test_graph1Ys  cCs}tjƒ}|jddddƒ|jddddƒ|jddddƒ|jddddƒ|jdd dd ƒ|jd d dd ƒ|jdd dd ƒ|jd d ddƒiidd6dd6d6idd6dd6d6idd6dd 6dd6d6idd6dd6dd 6d6idd6dd 6d 6idd 6dd 6d 6idd6dd 6d 6}t|dd |d ƒdS(NtxtaR g@tbgð?tcg@tdg@teg@tyiii(R.R=R>R;(R?R R1((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/tests/test_maxflow.pyt test_graph2cs" cCsÙtjƒ}|jddddƒ|jddddƒ|jddddƒ|jddddƒ|jddddƒiidd6dd6d6idd6dd6d6idd6d6id6}t|dd|d ƒdS( NRBRCR g@@RDgð?REig@Ÿ@(R.tDiGraphR>R;(R?R R1((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/tests/test_maxflow.pyt test_digraph1zs  cCstjƒ}|jddddƒ|jddddƒ|jddddƒ|jddddƒ|jddddƒ|jdd ddƒiidd6d d6d6id d6d6id d6d6idd6d6idd 6d6id 6}t|dd |dƒdS( NRRCR iRDiRERBRi(R.RIR>R;(R?R R1((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/tests/test_maxflow.pyt test_digraph2Šs  cCsxtjƒ}|jddddƒ|jddddƒ|jddddƒ|jddddƒ|jdd dd ƒ|jd ddd ƒ|jdd dd ƒ|jd d ddƒ|jd dddƒ|jd dddƒiid d6dd6d6idd6dd 6d6idd6d d 6d6idd6dd6d 6idd 6dd6d 6id6}t|dd|dƒdS(NRtv1R g0@tv2g*@g$@g@tv3g(@g"@tv4g,@g@Rg4@g&@ig3@g7@(R.RIR>R;(R?R R1((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/tests/test_maxflow.pyt test_digraph3s$  cCsEtjƒ}|jddddƒ|jddddƒ|jddddƒ|jddddƒ|jdd dd ƒ|jd d dd ƒ|jdd dd ƒ|jd d ddƒiid d6dd6d6id d6d6idd6dd 6d6id d 6d6idd 6d 6idd 6d 6id 6}t|dd |dƒdS(NRARBR g@RCgð?RDg@REg@RFg@RGi(R.RIR>R;(R?R R1((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/tests/test_maxflow.pyt test_digraph4´s"  cCs[tjƒ}|jddddƒ|jddddƒ|jddddƒ|jddddƒ|jddddƒ|jdddd ƒ|jdd ddƒ|jdddd ƒ|jdd ddƒiid d6dd6d d6d6id d6d6id d 6d6id d6dd 6d6idd6d d6d6id 6}t|dd |dƒdS(NRiR i iiiii Riiii(R.RIR>R;(R?R R7((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/tests/test_maxflow.pyttest_wikipedia_dinitz_exampleËs"  cCs]tjƒ}|jddddƒ|jddddƒ|jddddƒ|jddddƒ|jdd dd ƒ|jd d dd ƒ|jdd dd ƒ|jd d ddƒiid d6dd6d6id d6d6idd6dd 6d6id d 6d6idd 6d 6idd 6d 6id 6}d}d}d }t|||||ddƒdS(NRARBtspamg@RCgð?RDg@REg@RFg@RGiR (R.RIR>R;(R?R R7RRR((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/tests/test_maxflow.pyttest_optional_capacityás(  cCsûtjƒ}|jddƒ|jddddƒ|jddddƒ|jddddƒ|jdd dd ƒ|jdd ƒiid d6dd6d6idd6d d 6d6idd6d6id d 6d6id 6}t|dd |d ƒtjƒ}|jdddd ƒ|jddddƒ|jddƒ|jddƒ|jddddƒ|jdd dd ƒ|jdd dd ƒiid d6dd6d6idd6d d 6d6idd6d d 6d6idd6d6id 6}t|dd |d ƒdS(NRRBRCR iRDii Ri<iUi%iai(R.RIR>R;(R?R R1((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/tests/test_maxflow.pyttest_digraph_infcap_edgesús6    cCs¬tjƒ}|jddƒ|jddddƒ|jddƒ|jddddƒ|jdddd ƒ|jddƒx'tD]}ttj||ddƒq…WdS( NRRBRCR iRDi Ri<(R.RIR>t all_funcst assert_raisestNetworkXUnbounded(R?R R!((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/tests/test_maxflow.pyttest_digraph_infcap_paths   cCstjƒ}|jddƒ|jddddƒ|jddddƒ|jddddƒ|jdd dd ƒ|jdd ƒiid d6dd6d6idd6d d6d d 6d6idd6dd6d6idd6dd6d d 6d6id d6d d6d 6}t|dd |d ƒdS(NRRBRCR iRDii Ri<iUi%ia(R.R=R>R;(R?R R1((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/tests/test_maxflow.pyttest_graph_infcap_edges-s cCsötjƒ}|jddddƒ|jddddƒ|jddddƒ|jddddƒ|jddddƒ|jdddd ƒiidd6dd6d6id d6d d6d6idd6dd6d6id6}t|dd|d ƒdS( NRRBR iRCiRiiii(R.RIR>R;(R?R tflowSoln((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/tests/test_maxflow.pyRQ?s  cCs”tjƒ}|jddd gddƒ|jdƒttj|ddƒdƒiid6idd6d6idd6d6}t|dd|dƒdS( NiiiitweightR (iii(iii(iii(R.R=tadd_weighted_edges_fromt remove_nodeRtmaximum_flow_valueR;(R?R R[((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/tests/test_maxflow.pyttest_disconnectedOs   )cCs¶tjƒ}|jddd gddƒ|jdƒx'tD]}ttj||ddƒq<W|jd d d gddƒ|jdƒx'tD]}ttj||ddƒqWdS( NiiiiR\R (iii(iii(iii(iii(iii(iii(R.R=R]R^RVRWt NetworkXError(R?R R!((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/tests/test_maxflow.pyttest_source_target_not_in_graphWs     cCsGtjƒ}|jdƒx'tD]}ttj||ddƒq WdS(Ni(R.R=tadd_nodeRVRWRa(R?R R!((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/tests/test_maxflow.pyttest_source_target_coincidebs   cCs_tjƒ}tjƒ}|jddgdtƒx'tD]}ttj||ddƒq8WdS(NiiR (ii(ii(R.t MultiGrapht MultiDiGraphtadd_edges_fromtTrueRVRWRa(R?R tMR!((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/tests/test_maxflow.pyttest_multigraphs_raisehs    (Rt __module__R@RHRJRKRPRQRRRTRURYRZR`RbRdRj(((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/tests/test_maxflow.pyR<Ws         %     tTestMaxFlowMinCutInterfacecBsGeZd„Zd„Zd„Zd„Zd„Zd„Zd„ZRS(cCs tjƒ}|jddddƒ|jddddƒ|jddddƒ|jddddƒ|jdd dd ƒ|jd d dd ƒ|jdd dd ƒ|jd d ddƒ||_tjƒ}|jddddƒ|jddddƒ||_dS(NRARBR g@RCgð?RDg@REg@RFg@RGiii(R.RIR>R R1(R?R R1((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/tests/test_maxflow.pytsetuprs   c Csªddtdddgƒg}tjƒ}|jd d d gddƒx]tD]U}xL|D]D}ttj||ddd |ƒttj||ddd |ƒqZWqMWdS( Ntthis_should_be_callablei iiiiR\R R!(iii(iii(iii(RR.R=R]tinterface_funcsRWRa(R?telementsR R!telement((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/tests/test_maxflow.pyttest_flow_func_not_callable‚s     c Cs‹|j}d}xutD]m}xdtD]\}||ddd|ƒ}|tkrZ|d}nt||dtj|j|jƒƒq#WqWdS(Ng@RARGR!iR(R RoR4t max_min_funcsRtmsgiRR(R?R tfvtinterface_funcR!tresult((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/tests/test_maxflow.pyttest_flow_func_parameterss     c Csn|j}x^tD]V}ttjtj|ddd|ddƒttjtj|ddd|ddƒqWdS(NRARGR!tcutoffgð?(R R4RWR.RaR6tminimum_cut_value(R?R R!((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/tests/test_maxflow.pyttest_minimum_cut_no_cutoff˜s    c Cs¾|j}d}ttdtƒfttddƒff}x~tD]v}xm|D]e\}}||ddd||}|tkr|d}nt||dtj |j |j ƒƒqMWq@WdS( Ngð?t two_phasetglobal_relabel_freqiiiR!R( R1RRRhRRoRsRRtRR(R?R Rutto_testRvR!tkwargsRw((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/tests/test_maxflow.pyt test_kwargs s    c Cs=|j}x-tD]%}ttj||ddddƒqWdS(NiiR}i(R1RoRWR.Ra(R?R Rv((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/tests/test_maxflow.pyttest_kwargs_default_flow_func¯s   c CsÃ|j}d}d \}}t|dƒ}x’tD]Š}xtD]y}xptdƒD]b}||ddd|d|ƒ} |tkrŽ| d} nt|| d tj|j |j ƒƒqQWq>Wq1WdS( Ng@RARGR iR!tresidualiR(RARG( R RRoR4trangeRsRRtRR( R?R RuRRR8RvR!tiRw((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/tests/test_maxflow.pyttest_reusing_residualµs         ( RRkRmRrRxR{R€RR…(((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/tests/test_maxflow.pyRlps    cCsqtjƒ}|jddddƒt|ddddƒ}t|jddƒttjt|ddddƒdS(NiiR R}R3iÿÿÿÿ( R.RIR>RtNoneRR5RWRa(R R8((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/tests/test_maxflow.pyt%test_preflow_push_global_relabel_freqÇs  cCsztjƒ}tj|dddgddƒtj|dddgddƒt|dddtƒ}t|jddƒdS(NiiiR it value_onlyR3(R.RItadd_pathRtFalseRR5(R R8((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/tests/test_maxflow.pyt$test_preflow_push_makes_enough_spaceÏs  csód}d}tjƒ}x|t|ƒD]n‰|jdˆdfddƒtj|‡fd†t|ƒDƒddƒ|jˆ|dfdddƒq%Wt|ddd tƒ}t|jd |ƒt|ddd t ƒ}t|jd |ƒdS( NiièRiR ic3s|]}ˆ|fVqdS(N((Rtj(R„(s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/tests/test_maxflow.pys ÝsRR|R3( R.RIRƒR>R‰RRhRR5RŠ(tktpR R8((R„s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/tests/test_maxflow.pyt'test_shortest_augmenting_path_two_phase×s ,$t TestCutoffcBseZd„Zd„ZRS(cspd}d}tjƒ}x|t|ƒD]n‰|jdˆdfddƒtj|‡fd†t|ƒDƒddƒ|jˆ|dfd ddƒq%Wt|dd d td |ƒ}t||jd koÚd|knƒt|dd d t d |ƒ}t||jd ko#d|knƒt |dd d |ƒ}t||jd kofd|knƒdS( NiièRiR ic3s|]}ˆ|fVqdS(N((RRŒ(R„(s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/tests/test_maxflow.pys ísiRR|RyR3( R.RIRƒR>R‰RRhRR5RŠR(R?RRŽR R8((R„s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/tests/test_maxflow.pyt test_cutoffçs ,$++c Cs­tjdƒ}tj|td„|jƒDƒƒdƒxnttgD]`}xWdddgD]F}tj|ddd |d |ƒ}t||d d j |j ƒƒq[WqEWdS( Nicss'|]\}}||fdfVqdS(iN((RR R ((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/tests/test_maxflow.pys ùsR iiiiiR!RyRscutoff error in {0}( R.tcomplete_graphtset_edge_attributesRtedgesRRR_RRR(R?R R!RyRw((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/tests/test_maxflow.pyttest_complete_graph_cutoff÷s"  (RRkR‘R•(((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/tests/test_maxflow.pyRås ("t__doc__t nose.toolstnetworkxR.tnetworkx.algorithms.flowRRRRRRRR4t maximum_flowR6RsR_Rztflow_value_funcsR)RoRVRRtRR%R2R;R<RlR‡R‹RR(((s/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/algorithms/flow/tests/test_maxflow.pyts4      ÿW