Repository: networkx/networkx

Issue:
`test_ring_of_cliques` test fails unexpectedly
### Current Behavior
The `test_ring_of_cliques` test failed while I pushed some unrelated commits to a PR in the nx-parallel repository. This test had failed previously also(idk remember in a PR in networkx or nx-parallel) when some unrelated changes were pushed. So, there might be some issues in this test. 

```
=========================== short test summary info ============================
FAILED algorithms/community/tests/test_label_propagation.py::TestFastLabelPropagationCommunities::test_ring_of_cliques - assert {frozenset({1...5, ...}), ...} == {frozenset({1...5, ...}), ...}
  Extra items in the left set:
  frozenset({1200, 1201, 1202, 1203, 1204, 1205, ...})
  Extra items in the right set:
  frozenset({1215, 1216, 1217, 1218, 1219, 1220, ...})
  frozenset({1200, 1201, 1202, 1203, 1204, 1205, ...})
  Full diff:
    {
     frozenset({1155,
                1156,
                1157,
                1158,
                1159,
                1160,
                1161,
                1162,
                1163,
                1164,
                1165,
                1166,
                1167,
                1168,
                1169}),
     frozenset({1185,
                1186,
                1187,
                1188,
                1189,
                1190,
                1191,
                1192,
                1193,
                1194,
                1195,
                1196,
                1197,
                1198,
                1199}),
     frozenset({1125,
                1126,
                1127,
                1128,
                1129,
                1130,
                1131,
                1132,
                1133,
                1134,
                1135,
                1136,
                1137,
                1138,
                1139}),
     frozenset({1380,
                1381,
                1382,
                1383,
                1384,
                1385,
                1386,
                1387,
                1388,
                1389,
                1390,
                1391,
                1392,
                1393,
                1394}),
     frozenset({96, 97, 98, 99, 100, 101, 102, 103, 104, 90, 91, 92, 93, 94, 95}),
     frozenset({330,
                331,
                332,
                333,
                334,
                335,
                336,
                337,
                338,
                339,
                340,
                341,
                342,
                343,
                344}),
     frozenset({510,
                511,
                512,
                513,
                514,
                515,
                516,
                517,
                518,
                519,
                520,
                521,
                522,
                523,
                524}),
     frozenset({975,
                976,
                977,
                978,
                979,
                980,
                981,
                982,
                983,
                984,
                985,
                986,
                987,
                988,
                989}),
     frozenset({345,
                346,
                347,
                348,
                349,
                350,
                351,
                352,
                353,
                354,
                355,
                356,
                357,
                358,
                359}),
     frozenset({360,
                361,
                362,
                363,
                364,
                365,
                366,
                367,
                368,
                369,
                370,
                371,
                372,
                373,
                374}),
     frozenset({705,
                706,
                707,
                708,
                709,
                710,
                711,
                712,
                713,
                714,
                715,
                716,
                717,
                718,
                719}),
     frozenset({555,
                556,
                557,
                558,
                559,
                560,
                561,
                562,
                563,
                564,
                565,
                566,
                567,
                568,
                569}),
     frozenset({64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 60, 61, 62, 63}),
     frozenset({735,
                736,
                737,
                738,
                739,
                740,
                741,
                742,
                743,
                744,
                745,
                746,
                747,
                748,
                749}),
     frozenset({750,
                751,
                752,
                753,
                754,
                755,
                756,
                757,
                758,
                759,
                760,
                761,
                762,
                763,
                764}),
     frozenset({1095,
                1096,
                1097,
                1098,
                1099,
                1100,
                1101,
                1102,
                1103,
                1104,
                1105,
                1106,
                1107,
                1108,
                1109}),
     frozenset({1455,
                1456,
                1457,
                1458,
                1459,
                1460,
                1461,
                1462,
                1463,
                1464,
                1465,
                1466,
                1467,
                1468,
                1469}),
     frozenset({645,
                646,
                647,
                648,
                649,
                650,
                651,
                652,
                653,
                654,
                655,
                656,
                657,
                658,
                659}),
     frozenset({285,
                286,
                287,
                288,
                289,
                290,
                291,
                292,
                293,
                294,
                295,
                296,
                297,
                298,
                299}),
     frozenset({885,
                886,
                887,
                888,
                889,
                890,
                891,
                892,
                893,
                894,
                895,
                896,
                897,
                898,
                899}),
     frozenset({945,
                946,
                947,
                948,
                949,
                950,
                951,
                952,
                953,
                954,
                955,
                956,
                957,
                958,
                959}),
     frozenset({1350,
                1351,
                1352,
                1353,
                1354,
                1355,
                1356,
                1357,
                1358,
                1359,
                1360,
                1361,
                1362,
                1363,
                1364}),
     frozenset({180,
                181,
                182,
                183,
                184,
                185,
                186,
                187,
                188,
                189,
                190,
                191,
                192,
                193,
                194}),
     frozenset({15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29}),
     frozenset({900,
                901,
                902,
                903,
                904,
                905,
                906,
                907,
                908,
                909,
                910,
                911,
                912,
                913,
                914}),
     frozenset({825,
                826,
                827,
                828,
                829,
                830,
                831,
                832,
                833,
                834,
                835,
                836,
                837,
                838,
                839}),
     frozenset({1410,
                1411,
                1412,
                1413,
                1414,
                1415,
                1416,
                1417,
                1418,
                1419,
                1420,
                1421,
                1422,
                1423,
                1424}),
  +  frozenset({1200,
  +             1201,
  +             1202,
  +             1203,
  +             1204,
  +             1205,
  +             1206,
  +             1207,
  +             1208,
  +             1209,
  +             1210,
  +             1211,
  +             1212,
  +             1213,
  +             1214,
  +             1215,
  +             1216,
  +             1217,
  +             1218,
  +             1219,
  +             1220,
  +             1221,
  +             1222,
  +             1223,
  +             1224,
  +             1225,
  +             1226,
  +             1227,
  +             1228,
  +             1229}),
     frozenset({1470,
                1471,
                1472,
                1473,
                1474,
                1475,
                1476,
                1477,
                1478,
                1479,
                1480,
                1481,
                1482,
                1483,
                1484}),
     frozenset({780,
                781,
                782,
                783,
                784,
                785,
                786,
                787,
                788,
                789,
                790,
                791,
                792,
                793,
                794}),
     frozenset({1320,
                1321,
                1322,
                1323,
                1324,
                1325,
                1326,
                1327,
                1328,
                1329,
                1330,
                1331,
                1332,
                1333,
                1334}),
     frozenset({915,
                916,
                917,
                918,
                919,
                920,
                921,
                922,
                923,
                924,
                925,
                926,
                927,
                928,
                929}),
  -  frozenset({1215,
  -             1216,
  -             1217,
  -             1218,
  -             1219,
  -             1220,
  -             1221,
  -             1222,
  -             1223,
  -             1224,
  -             1225,
  -             1226,
  -             1227,
  -             1228,
  -             1229}),
     frozenset({1395,
                1396,
                1397,
                1398,
                1399,
                1400,
                1401,
                1402,
                1403,
                1404,
                1405,
                1406,
                1407,
                1408,
                1409}),
     frozenset({165,
                166,
                167,
                168,
                169,
                170,
                171,
                172,
                173,
                174,
                175,
                176,
                177,
                178,
                179}),
     frozenset({255,
                256,
                257,
                258,
                259,
                260,
                261,
                262,
                263,
                264,
                265,
                266,
                267,
                268,
                269}),
  -  frozenset({1200,
  -             1201,
  -             1202,
  -             1203,
  -             1204,
  -             1205,
  -             1206,
  -             1207,
  -             1208,
  -             1209,
  -             1210,
  -             1211,
  -             1212,
  -             1213,
  -             1214}),
     frozenset({720,
                721,
                722,
                723,
                724,
                725,
                726,
                727,
                728,
                729,
                730,
                731,
                732,
                733,
                734}),
     frozenset({540,
                541,
                542,
                543,
                544,
                545,
                546,
                547,
                548,
                549,
                550,
                551,
                552,
                553,
                554}),
     frozenset({195,
                196,
                197,
                198,
                199,
                200,
                201,
                202,
                203,
                204,
                205,
                206,
                207,
                208,
                209}),
     frozenset({630,
                631,
                632,
                633,
                634,
                635,
                636,
                637,
                638,
                639,
                640,
                641,
                642,
                643,
                644}),
     frozenset({420,
                421,
                422,
                423,
                424,
                425,
                426,
                427,
                428,
                429,
                430,
                431,
                432,
                433,
                434}),
     frozenset({1170,
                1171,
                1172,
                1173,
                1174,
                1175,
                1176,
                1177,
                1178,
                1179,
                1180,
                1181,
                1182,
                1183,
                1184}),
     frozenset({765,
                766,
                767,
                768,
                769,
                770,
                771,
                772,
                773,
                774,
                775,
                776,
                777,
                778,
                779}),
     frozenset({960,
                961,
                962,
                963,
                964,
                965,
                966,
                967,
                968,
                969,
                970,
                971,
                972,
                973,
                974}),
     frozenset({120,
                121,
                122,
                123,
                124,
                125,
                126,
                127,
                128,
                129,
                130,
                131,
                132,
                133,
                134}),
     frozenset({105,
                106,
                107,
                108,
                109,
                110,
                111,
                112,
                113,
                114,
                115,
                116,
                117,
                118,
                119}),
     frozenset({615,
                616,
                617,
                618,
                619,
                620,
                621,
                622,
                623,
                624,
                625,
                626,
                627,
                628,
                629}),
     frozenset({1440,
                1441,
                1442,
                1443,
                1444,
                1445,
                1446,
                1447,
                1448,
                1449,
                1450,
                1451,
                1452,
                1453,
                1454}),
     frozenset({1485,
                1486,
                1487,
                1488,
                1489,
                1490,
                1491,
                1492,
                1493,
                1494,
                1495,
                1496,
                1497,
                1498,
                1499}),
     frozenset({1050,
                1051,
                1052,
                1053,
                1054,
                1055,
                1056,
                1057,
                1058,
                1059,
                1060,
                1061,
                1062,
                1063,
                1064}),
     frozenset({1260,
                1261,
                1262,
                1263,
                1264,
                1265,
                1266,
                1267,
                1268,
                1269,
                1270,
                1271,
                1272,
                1273,
                1274}),
     frozenset({405,
                406,
                407,
                408,
                409,
                410,
                411,
                412,
                413,
                414,
                415,
                416,
                417,
                418,
                419}),
     frozenset({270,
                271,
                272,
                273,
                274,
                275,
                276,
                277,
                278,
                279,
                280,
                281,
                282,
                283,
                284}),
     frozenset({465,
                466,
                467,
                468,
                469,
                470,
                471,
                472,
                473,
                474,
                475,
                476,
                477,
                478,
                479}),
     frozenset({1290,
                1291,
                1292,
                1293,
                1294,
                1295,
                1296,
                1297,
                1298,
                1299,
                1300,
                1301,
                1302,
                1303,
                1304}),
     frozenset({930,
                931,
                932,
                933,
                934,
                935,
                936,
                937,
                938,
                939,
                940,
                941,
                942,
                943,
                944}),
     frozenset({0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14}),
     frozenset({840,
                841,
                842,
                843,
                844,
                845,
                846,
                847,
                848,
                849,
                850,
                851,
                852,
                853,
                854}),
     frozenset({225,
                226,
                227,
                228,
                229,
                230,
                231,
                232,
                233,
                234,
                235,
                236,
                237,
                238,
                239}),
     frozenset({690,
                691,
                692,
                693,
                694,
                695,
                696,
                697,
                698,
                699,
                700,
                701,
                702,
                703,
                704}),
     frozenset({870,
                871,
                872,
                873,
                874,
                875,
                876,
                877,
                878,
                879,
                880,
                881,
                882,
                883,
                884}),
     frozenset({300,
                301,
                302,
                303,
                304,
                305,
                306,
                307,
                308,
                309,
                310,
                311,
                312,
                313,
                314}),
     frozenset({1230,
                1231,
                1232,
                1233,
                1234,
                1235,
                1236,
                1237,
                1238,
                1239,
                1240,
                1241,
                1242,
                1243,
                1244}),
     frozenset({240,
                241,
                242,
                243,
                244,
                245,
                246,
                247,
                248,
                249,
                250,
                251,
                252,
                253,
                254}),
     frozenset({990,
                991,
                992,
                993,
                994,
                995,
                996,
                997,
                998,
                999,
                1000,
                1001,
                1002,
                1003,
                1004}),
     frozenset({150,
                151,
                152,
                153,
                154,
                155,
                156,
                157,
                158,
                159,
                160,
                161,
                162,
                163,
                164}),
     frozenset({435,
                436,
                437,
                438,
                439,
                440,
                441,
                442,
                443,
                444,
                445,
                446,
                447,
                448,
                449}),
     frozenset({135,
                136,
                137,
                138,
                139,
                140,
                141,
                142,
                143,
                144,
                145,
                146,
                147,
                148,
                149}),
     frozenset({1020,
                1021,
                1022,
                1023,
                1024,
                1025,
                1026,
                1027,
                1028,
                1029,
                1030,
                1031,
                1032,
                1033,
                1034}),
     frozenset({1305,
                1306,
                1307,
                1308,
                1309,
                1310,
                1311,
                1312,
                1313,
                1314,
                1315,
                1316,
                1317,
                1318,
                1319}),
     frozenset({1035,
                1036,
                1037,
                1038,
                1039,
                1040,
                1041,
                1042,
                1043,
                1044,
                1045,
                1046,
                1047,
                1048,
                1049}),
     frozenset({1140,
                1141,
                1142,
                1143,
                1144,
                1145,
                1146,
                1147,
                1148,
                1149,
                1150,
                1151,
                1152,
                1153,
                1154}),
     frozenset({1275,
                1276,
                1277,
                1278,
                1279,
                1280,
                1281,
                1282,
                1283,
                1284,
                1285,
                1286,
                1287,
                1288,
                1289}),
     frozenset({315,
                316,
                317,
                318,
                319,
                320,
                321,
                322,
                323,
                324,
                325,
                326,
                327,
                328,
                329}),
     frozenset({1065,
                1066,
                1067,
                1068,
                1069,
                1070,
                1071,
                1072,
                1073,
                1074,
                1075,
                1076,
                1077,
                1078,
                1079}),
     frozenset({480,
                481,
                482,
                483,
                484,
                485,
                486,
                487,
                488,
                489,
                490,
                491,
                492,
                493,
                494}),
     frozenset({600,
                601,
                602,
                603,
                604,
                605,
                606,
                607,
                608,
                609,
                610,
                611,
                612,
                613,
                614}),
     frozenset({390,
                391,
                392,
                393,
                394,
                395,
                396,
                397,
                398,
                399,
                400,
                401,
                402,
                403,
                404}),
     frozenset({1425,
                1426,
                1427,
                1428,
                1429,
                1430,
                1431,
                1432,
                1433,
                1434,
                1435,
                1436,
                1437,
                1438,
                1439}),
     frozenset({570,
                571,
                572,
                573,
                574,
                575,
                576,
                577,
                578,
                579,
                580,
                581,
                582,
                583,
                584}),
     frozenset({210,
                211,
                212,
                213,
                214,
                215,
                216,
                217,
                218,
                219,
                220,
                221,
                222,
                223,
                224}),
     frozenset({855,
                856,
                857,
                858,
                859,
                860,
                861,
                862,
                863,
                864,
                865,
                866,
                867,
                868,
                869}),
     frozenset({525,
                526,
                527,
                528,
                529,
                530,
                531,
                532,
                533,
                534,
                535,
                536,
                537,
                538,
                539}),
     frozenset({810,
                811,
                812,
                813,
                814,
                815,
                816,
                817,
                818,
                819,
                820,
                821,
                822,
                823,
                824}),
     frozenset({1335,
                1336,
                1337,
                1338,
                1339,
                1340,
                1341,
                1342,
                1343,
                1344,
                1345,
                1346,
                1347,
                1348,
                1349}),
     frozenset({1080,
                1081,
                1082,
                1083,
                1084,
                1085,
                1086,
                1087,
                1088,
                1089,
                1090,
                1091,
                1092,
                1093,
                1094}),
     frozenset({675,
                676,
                677,
                678,
                679,
                680,
                681,
                682,
                683,
                684,
                685,
                686,
                687,
                688,
                689}),
     frozenset({450,
                451,
                452,
                453,
                454,
                455,
                456,
                457,
                458,
                459,
                460,
                461,
                462,
                463,
                464}),
     frozenset({1110,
                1111,
                1112,
                1113,
                1114,
                1115,
                1116,
                1117,
                1118,
                1119,
                1120,
                1121,
                1122,
                1123,
                1124}),
     frozenset({585,
                586,
                587,
                588,
                589,
                590,
                591,
                592,
                593,
                594,
                595,
                596,
                597,
                598,
                599}),
     frozenset({795,
                796,
                797,
                798,
                799,
                800,
                801,
                802,
                803,
                804,
                805,
                806,
                807,
                808,
                809}),
     frozenset({495,
                496,
                497,
                498,
                499,
                500,
                501,
                502,
                503,
                504,
                505,
                506,
                507,
                508,
                509}),
     frozenset({1365,
                1366,
                1367,
                1368,
                1369,
                1370,
                1371,
                1372,
                1373,
                1374,
                1375,
                1376,
                1377,
                1378,
                1379}),
     frozenset({75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89}),
     frozenset({660,
                661,
                662,
                663,
                664,
                665,
                666,
                667,
                668,
                669,
                670,
                671,
                672,
                673,
                674}),
     frozenset({1005,
                1006,
                1007,
                1008,
                1009,
                1010,
                1011,
                1012,
                1013,
                1014,
                1015,
                1016,
                1017,
                1018,
                1019}),
     frozenset({375,
                376,
                377,
                378,
                379,
                380,
                381,
                382,
                383,
                384,
                385,
                386,
                387,
                388,
                389}),
     frozenset({32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 30, 31}),
     frozenset({1245,
                1246,
                1247,
                1248,
                1249,
                1250,
                1251,
                1252,
                1253,
                1254,
                1255,
                1256,
                1257,
                1258,
                1259}),
     frozenset({45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59}),
    }
====== 1 failed, 5258 passed, 57 skipped, 6 warnings in 91.95s (0:01:31) =======
Error: Process completed with exit code 1.
```

### Expected Behavior

the above test shouldn't fail unexpectedly

### Steps to Reproduce and Additional context

It happens sometimes on its own. Right now it has failed on this PR https://github.com/networkx/nx-parallel/pull/34

### Environment

Python version: 3.10
machine: ubuntu-latest 




Discussion:

Patch:
diff --git a/doc/reference/algorithms/community.rst b/doc/reference/algorithms/community.rst
index 1d1070997..b031bcb34 100644
--- a/doc/reference/algorithms/community.rst
+++ b/doc/reference/algorithms/community.rst
@@ -14,6 +14,15 @@ Bipartitions
 
    kernighan_lin_bisection
 
+Divisive Communities
+---------------------
+.. automodule:: networkx.algorithms.community.divisive
+.. autosummary::
+   :toctree: generated/
+
+   edge_betweenness_partition
+   edge_current_flow_betweenness_partition
+
 K-Clique
 --------
 .. automodule:: networkx.algorithms.community.kclique
diff --git a/networkx/algorithms/community/__init__.py b/networkx/algorithms/community/__init__.py
index fa782201d..40549aff2 100644
--- a/networkx/algorithms/community/__init__.py
+++ b/networkx/algorithms/community/__init__.py
@@ -14,6 +14,7 @@ functions as attributes of ``community``. For example::
 """
 from networkx.algorithms.community.asyn_fluid import *
 from networkx.algorithms.community.centrality import *
+from networkx.algorithms.community.divisive import *
 from networkx.algorithms.community.kclique import *
 from networkx.algorithms.community.kernighan_lin import *
 from networkx.algorithms.community.label_propagation import *
diff --git a/networkx/algorithms/community/divisive.py b/networkx/algorithms/community/divisive.py
new file mode 100644
index 000000000..7dbf70ca3
--- /dev/null
+++ b/networkx/algorithms/community/divisive.py
@@ -0,0 +1,194 @@
+import functools
+
+import networkx as nx
+
+__all__ = [
+    "edge_betweenness_partition",
+    "edge_current_flow_betweenness_partition",
+]
+
+
+def edge_betweenness_partition(G, number_of_sets, *, weight=None):
+    """Partition created by iteratively removing the highest edge betweenness edge.
+
+    This algorithm works by calculating the edge betweenness for all
+    edges and removing the edge with the highest value. It is then
+    determined whether the graph has been broken into at least
+    `number_of_sets` connected components.
+    If not the process is repeated.
+
+    Parameters
+    ----------
+    G : NetworkX Graph, DiGraph or MultiGraph
+      Graph to be partitioned
+
+    number_of_sets : int
+      Number of sets in the desired partition of the graph
+
+    weight : key, optional, default=None
+      The key to use if using weights for edge betweenness calculation
+
+    Returns
+    -------
+    C : list of sets
+      Partition of the nodes of G
+
+    Raises
+    ------
+    NetworkXError
+      If number_of_sets is <= 0 or if number_of_sets > len(G)
+
+    Examples
+    --------
+    >>> G = nx.karate_club_graph()
+    >>> part = nx.community.edge_betweenness_partition(G, 2)
+    >>> {0, 1, 3, 4, 5, 6, 7, 10, 11, 12, 13, 16, 17, 19, 21} in part
+    True
+    >>> {2, 8, 9, 14, 15, 18, 20, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33} in part
+    True
+
+    See Also
+    --------
+    edge_current_flow_betweenness_partition
+
+    Notes
+    -----
+    This algorithm is fairly slow, as both the calculation of connected
+    components and edge betweenness relies on all pairs shortest
+    path algorithms. They could potentially be combined to cut down
+    on overall computation time.
+
+    References
+    ----------
+    .. [1] Santo Fortunato 'Community Detection in Graphs' Physical Reports
+       Volume 486, Issue 3-5 p. 75-174
+       http://arxiv.org/abs/0906.0612
+    """
+    if number_of_sets <= 0:
+        raise nx.NetworkXError("number_of_sets must be >0")
+    if number_of_sets == 1:
+        return [set(G)]
+    if number_of_sets == len(G):
+        return [{n} for n in G]
+    if number_of_sets > len(G):
+        raise nx.NetworkXError("number_of_sets must be <= len(G)")
+
+    H = G.copy()
+    partition = list(nx.connected_components(H))
+    while len(partition) < number_of_sets:
+        ranking = nx.edge_betweenness_centrality(H, weight=weight)
+        edge = max(ranking, key=ranking.get)
+        H.remove_edge(*edge)
+        partition = list(nx.connected_components(H))
+    return partition
+
+
+def edge_current_flow_betweenness_partition(G, number_of_sets, *, weight=None):
+    """Partition created by removing the highest edge current flow betweenness edge.
+
+    This algorithm works by calculating the edge current flow
+    betweenness for all edges and removing the edge with the
+    highest value. It is then determined whether the graph has
+    been broken into at least `number_of_sets` connected
+    components. If not the process is repeated.
+
+    Parameters
+    ----------
+    G : NetworkX Graph, DiGraph or MultiGraph
+      Graph to be partitioned
+
+    number_of_sets : int
+      Number of sets in the desired partition of the graph
+
+    weight : key, optional (default=None)
+      The edge attribute key to use as weights for
+      edge current flow betweenness calculations
+
+    Returns
+    -------
+    C : list of sets
+      Partition of G
+
+    Raises
+    ------
+    NetworkXError
+      If number_of_sets is <= 0 or number_of_sets > len(G)
+
+    Examples
+    --------
+    >>> G = nx.karate_club_graph()
+    >>> part = nx.community.edge_current_flow_betweenness_partition(G, 2)
+    >>> {0, 1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 16, 17, 19, 21} in part
+    True
+    >>> {8, 14, 15, 18, 20, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33} in part
+    True
+
+
+    See Also
+    --------
+    edge_betweenness_partition
+
+    Notes
+    -----
+    This algorithm is extremely slow, as the recalculation of the edge
+    current flow betweenness is extremely slow.
+
+    References
+    ----------
+    .. [1] Santo Fortunato 'Community Detection in Graphs' Physical Reports
+       Volume 486, Issue 3-5 p. 75-174
+       http://arxiv.org/abs/0906.0612
+    """
+    if number_of_sets <= 0:
+        raise nx.NetworkXError("number_of_sets must be >0")
+    elif number_of_sets == 1:
+        return [set(G)]
+    elif number_of_sets == len(G):
+        return [{n} for n in G]
+    elif number_of_sets > len(G):
+        raise nx.NetworkXError("number_of_sets must be <= len(G)")
+
+    rank = functools.partial(
+        nx.edge_current_flow_betweenness_centrality, normalized=False, weight=weight
+    )
+
+    # current flow requires a connected network so we track the components explicitly
+    H = G.copy()
+    partition = list(nx.connected_components(H))
+    if len(partition) > 1:
+        Hcc_subgraphs = [H.subgraph(cc).copy() for cc in partition]
+    else:
+        Hcc_subgraphs = [H]
+
+    ranking = {}
+    for Hcc in Hcc_subgraphs:
+        ranking.update(rank(Hcc))
+
+    while len(partition) < number_of_sets:
+        edge = max(ranking, key=ranking.get)
+        for cc, Hcc in zip(partition, Hcc_subgraphs):
+            if edge[0] in cc:
+                Hcc.remove_edge(*edge)
+                del ranking[edge]
+                splitcc_list = list(nx.connected_components(Hcc))
+                if len(splitcc_list) > 1:
+                    # there are 2 connected components. split off smaller one
+                    cc_new = min(splitcc_list, key=len)
+                    Hcc_new = Hcc.subgraph(cc_new).copy()
+                    # update edge rankings for Hcc_new
+                    newranks = rank(Hcc_new)
+                    for e, r in newranks.items():
+                        ranking[e if e in ranking else e[::-1]] = r
+                    # append new cc and Hcc to their lists.
+                    partition.append(cc_new)
+                    Hcc_subgraphs.append(Hcc_new)
+
+                    # leave existing cc and Hcc in their lists, but shrink them
+                    Hcc.remove_nodes_from(cc_new)
+                    cc.difference_update(cc_new)
+                # update edge rankings for Hcc whether it was split or not
+                newranks = rank(Hcc)
+                for e, r in newranks.items():
+                    ranking[e if e in ranking else e[::-1]] = r
+                break
+    return partition


Test patch:
diff --git a/networkx/algorithms/community/tests/test_divisive.py b/networkx/algorithms/community/tests/test_divisive.py
new file mode 100644
index 000000000..f3857613d
--- /dev/null
+++ b/networkx/algorithms/community/tests/test_divisive.py
@@ -0,0 +1,109 @@
+import pytest
+
+import networkx as nx
+
+
+def test_edge_betweenness_partition():
+    G = nx.barbell_graph(3, 0)
+    C = nx.community.edge_betweenness_partition(G, 2)
+    answer = [{0, 1, 2}, {3, 4, 5}]
+    assert len(C) == len(answer)
+    for s in answer:
+        assert s in C
+
+    G = nx.barbell_graph(3, 1)
+    C = nx.community.edge_betweenness_partition(G, 3)
+    answer = [{0, 1, 2}, {4, 5, 6}, {3}]
+    assert len(C) == len(answer)
+    for s in answer:
+        assert s in C
+
+    C = nx.community.edge_betweenness_partition(G, 7)
+    answer = [{n} for n in G]
+    assert len(C) == len(answer)
+    for s in answer:
+        assert s in C
+
+    C = nx.community.edge_betweenness_partition(G, 1)
+    assert C == [set(G)]
+
+    C = nx.community.edge_betweenness_partition(G, 1, weight="weight")
+    assert C == [set(G)]
+
+    with pytest.raises(nx.NetworkXError):
+        nx.community.edge_betweenness_partition(G, 0)
+
+    with pytest.raises(nx.NetworkXError):
+        nx.community.edge_betweenness_partition(G, -1)
+
+    with pytest.raises(nx.NetworkXError):
+        nx.community.edge_betweenness_partition(G, 10)
+
+
+def test_edge_current_flow_betweenness_partition():
+    pytest.importorskip("numpy")
+
+    G = nx.barbell_graph(3, 0)
+    C = nx.community.edge_current_flow_betweenness_partition(G, 2)
+    answer = [{0, 1, 2}, {3, 4, 5}]
+    assert len(C) == len(answer)
+    for s in answer:
+        assert s in C
+
+    G = nx.barbell_graph(3, 1)
+    C = nx.community.edge_current_flow_betweenness_partition(G, 2)
+    answer = [{0, 1, 2, 3}, {4, 5, 6}]
+    assert len(C) == len(answer)
+    for s in answer:
+        assert s in C
+
+    C = nx.community.edge_current_flow_betweenness_partition(G, 3)
+    answer = [{0, 1, 2}, {4, 5, 6}, {3}]
+    assert len(C) == len(answer)
+    for s in answer:
+        assert s in C
+
+    C = nx.community.edge_current_flow_betweenness_partition(G, 4)
+    answer = [{1, 2}, {4, 5, 6}, {3}, {0}]
+    assert len(C) == len(answer)
+    for s in answer:
+        assert s in C
+
+    C = nx.community.edge_current_flow_betweenness_partition(G, 5)
+    answer = [{1, 2}, {5, 6}, {3}, {0}, {4}]
+    assert len(C) == len(answer)
+    for s in answer:
+        assert s in C
+
+    C = nx.community.edge_current_flow_betweenness_partition(G, 6)
+    answer = [{2}, {5, 6}, {3}, {0}, {4}, {1}]
+    assert len(C) == len(answer)
+    for s in answer:
+        assert s in C
+
+    C = nx.community.edge_current_flow_betweenness_partition(G, 7)
+    answer = [{n} for n in G]
+    assert len(C) == len(answer)
+    for s in answer:
+        assert s in C
+
+    C = nx.community.edge_current_flow_betweenness_partition(G, 1)
+    assert C == [set(G)]
+
+    C = nx.community.edge_current_flow_betweenness_partition(G, 1, weight="weight")
+    assert C == [set(G)]
+
+    with pytest.raises(nx.NetworkXError):
+        nx.community.edge_current_flow_betweenness_partition(G, 0)
+
+    with pytest.raises(nx.NetworkXError):
+        nx.community.edge_current_flow_betweenness_partition(G, -1)
+
+    with pytest.raises(nx.NetworkXError):
+        nx.community.edge_current_flow_betweenness_partition(G, 10)
+
+    N = 10
+    G = nx.empty_graph(N)
+    for i in range(2, N - 1):
+        C = nx.community.edge_current_flow_betweenness_partition(G, i)
+        assert C == [{n} for n in G]
diff --git a/networkx/algorithms/community/tests/test_label_propagation.py b/networkx/algorithms/community/tests/test_label_propagation.py
index 9a0b3d89b..d86b1d7d4 100644
--- a/networkx/algorithms/community/tests/test_label_propagation.py
+++ b/networkx/algorithms/community/tests/test_label_propagation.py
@@ -163,7 +163,7 @@ class TestFastLabelPropagationCommunities:
     N = 100  # number of nodes
     K = 15  # average node degree
 
-    def _check_communities(self, G, truth, weight=None, seed=None):
+    def _check_communities(self, G, truth, weight=None, seed=42):
         C = nx.community.fast_label_propagation_communities(G, weight=weight, seed=seed)
         assert {frozenset(c) for c in C} == truth
 
@@ -203,10 +203,9 @@ class TestFastLabelPropagationCommunities:
         self._check_communities(G, truth)
 
     def test_ring_of_cliques(self):
-        G = nx.ring_of_cliques(self.N, self.K)
-        truth = {
-            frozenset([self.K * i + k for k in range(self.K)]) for i in range(self.N)
-        }
+        N, K = self.N, self.K
+        G = nx.ring_of_cliques(N, K)
+        truth = {frozenset([K * i + k for k in range(K)]) for i in range(N)}
         self._check_communities(G, truth)
 
     def test_larger_graph(self):
@@ -238,3 +237,5 @@ class TestFastLabelPropagationCommunities:
         C = nx.community.fast_label_propagation_communities(G, seed=2023)
         truth = {frozenset(c) for c in C}
         self._check_communities(G, truth, seed=2023)
+        # smoke test that seed=None works
+        C = nx.community.fast_label_propagation_communities(G, seed=None)
diff --git a/networkx/algorithms/tests/test_swap.py b/networkx/algorithms/tests/test_swap.py
index 378c8ecfa..c4aeb0682 100644
--- a/networkx/algorithms/tests/test_swap.py
+++ b/networkx/algorithms/tests/test_swap.py
@@ -3,7 +3,7 @@ import pytest
 import networkx as nx
 
 cycle = nx.cycle_graph(5, create_using=nx.DiGraph)
-tree = nx.random_tree(10, create_using=nx.DiGraph)
+tree = nx.random_tree(10, create_using=nx.DiGraph, seed=42)
 path = nx.path_graph(5, create_using=nx.DiGraph)
 binomial = nx.binomial_tree(3, create_using=nx.DiGraph)
 HH = nx.directed_havel_hakimi_graph([1, 2, 1, 2, 2, 2], [3, 1, 0, 1, 2, 3])