okstra 0.130.3 → 0.131.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (367) hide show
  1. package/README.md +0 -1
  2. package/docs/architecture.md +2 -2
  3. package/docs/cli.md +1 -1
  4. package/docs/for-ai/README.md +0 -2
  5. package/docs/for-ai/skills/okstra-run.md +13 -2
  6. package/docs/for-ai/skills/okstra-setup.md +4 -1
  7. package/docs/project-structure-overview.md +5 -4
  8. package/docs/task-process/implementation-planning.md +13 -0
  9. package/docs/task-process/implementation.md +17 -2
  10. package/package.json +1 -1
  11. package/runtime/BUILD.json +2 -2
  12. package/runtime/agents/workers/report-writer-worker.md +7 -0
  13. package/runtime/bin/lib/okstra/usage.sh +4 -4
  14. package/runtime/prompts/lead/okstra-lead-contract.md +2 -2
  15. package/runtime/prompts/lead/plan-body-verification.md +26 -5
  16. package/runtime/prompts/lead/report-writer.md +6 -2
  17. package/runtime/prompts/profiles/_common-contract.md +2 -1
  18. package/runtime/prompts/profiles/_implementation-deliverable.md +6 -1
  19. package/runtime/prompts/profiles/_implementation-executor.md +2 -2
  20. package/runtime/prompts/profiles/_implementation-verifier.md +33 -10
  21. package/runtime/prompts/profiles/final-verification.md +21 -6
  22. package/runtime/prompts/profiles/implementation-planning.md +21 -4
  23. package/runtime/python/okstra_ctl/codex_dispatch.py +31 -0
  24. package/runtime/python/okstra_ctl/conformance.py +49 -11
  25. package/runtime/python/okstra_ctl/report_finalize.py +52 -1
  26. package/runtime/python/okstra_ctl/report_views.py +32 -5
  27. package/runtime/python/okstra_ctl/run.py +15 -3
  28. package/runtime/python/okstra_ctl/worker_prompt_contract.py +14 -6
  29. package/runtime/python/okstra_ctl/worker_prompt_policy.py +19 -1
  30. package/runtime/python/okstra_vendor/__init__.py +0 -44
  31. package/runtime/schemas/final-report-v1.0.schema.json +101 -6
  32. package/runtime/skills/okstra-run/SKILL.md +11 -4
  33. package/runtime/skills/okstra-setup/SKILL.md +3 -2
  34. package/runtime/skills/okstra-setup/references/project-config.md +16 -7
  35. package/runtime/templates/reports/final-report.template.md +18 -12
  36. package/runtime/templates/reports/i18n/en.json +1 -0
  37. package/runtime/templates/reports/i18n/ko.json +1 -0
  38. package/runtime/templates/reports/report.css +18 -0
  39. package/runtime/validators/lib/fixtures.sh +6 -0
  40. package/runtime/validators/validate-run.py +1722 -98
  41. package/src/cli-registry.mjs +0 -7
  42. package/src/commands/lifecycle/doctor.mjs +0 -9
  43. package/src/lib/skill-catalog.mjs +0 -1
  44. package/docs/for-ai/skills/okstra-graphify.md +0 -64
  45. package/runtime/python/okstra_ctl/graphify_cmd.py +0 -225
  46. package/runtime/python/okstra_vendor/graphify/.vendored-version +0 -1
  47. package/runtime/python/okstra_vendor/graphify/__init__.py +0 -28
  48. package/runtime/python/okstra_vendor/graphify/__main__.py +0 -1371
  49. package/runtime/python/okstra_vendor/graphify/analyze.py +0 -540
  50. package/runtime/python/okstra_vendor/graphify/benchmark.py +0 -129
  51. package/runtime/python/okstra_vendor/graphify/build.py +0 -107
  52. package/runtime/python/okstra_vendor/graphify/cache.py +0 -169
  53. package/runtime/python/okstra_vendor/graphify/cluster.py +0 -137
  54. package/runtime/python/okstra_vendor/graphify/detect.py +0 -510
  55. package/runtime/python/okstra_vendor/graphify/export.py +0 -1014
  56. package/runtime/python/okstra_vendor/graphify/extract.py +0 -3277
  57. package/runtime/python/okstra_vendor/graphify/hooks.py +0 -220
  58. package/runtime/python/okstra_vendor/graphify/ingest.py +0 -297
  59. package/runtime/python/okstra_vendor/graphify/manifest.py +0 -4
  60. package/runtime/python/okstra_vendor/graphify/report.py +0 -175
  61. package/runtime/python/okstra_vendor/graphify/security.py +0 -203
  62. package/runtime/python/okstra_vendor/graphify/serve.py +0 -373
  63. package/runtime/python/okstra_vendor/graphify/skill-aider.md +0 -1184
  64. package/runtime/python/okstra_vendor/graphify/skill-claw.md +0 -1184
  65. package/runtime/python/okstra_vendor/graphify/skill-codex.md +0 -1242
  66. package/runtime/python/okstra_vendor/graphify/skill-copilot.md +0 -1268
  67. package/runtime/python/okstra_vendor/graphify/skill-droid.md +0 -1239
  68. package/runtime/python/okstra_vendor/graphify/skill-kiro.md +0 -1183
  69. package/runtime/python/okstra_vendor/graphify/skill-opencode.md +0 -1238
  70. package/runtime/python/okstra_vendor/graphify/skill-trae.md +0 -1208
  71. package/runtime/python/okstra_vendor/graphify/skill-vscode.md +0 -253
  72. package/runtime/python/okstra_vendor/graphify/skill-windows.md +0 -1245
  73. package/runtime/python/okstra_vendor/graphify/skill.md +0 -1319
  74. package/runtime/python/okstra_vendor/graphify/transcribe.py +0 -182
  75. package/runtime/python/okstra_vendor/graphify/validate.py +0 -72
  76. package/runtime/python/okstra_vendor/graphify/watch.py +0 -188
  77. package/runtime/python/okstra_vendor/graphify/wiki.py +0 -214
  78. package/runtime/python/okstra_vendor/networkx/__init__.py +0 -62
  79. package/runtime/python/okstra_vendor/networkx/algorithms/__init__.py +0 -134
  80. package/runtime/python/okstra_vendor/networkx/algorithms/approximation/__init__.py +0 -26
  81. package/runtime/python/okstra_vendor/networkx/algorithms/approximation/clique.py +0 -259
  82. package/runtime/python/okstra_vendor/networkx/algorithms/approximation/clustering_coefficient.py +0 -71
  83. package/runtime/python/okstra_vendor/networkx/algorithms/approximation/connectivity.py +0 -412
  84. package/runtime/python/okstra_vendor/networkx/algorithms/approximation/density.py +0 -396
  85. package/runtime/python/okstra_vendor/networkx/algorithms/approximation/distance_measures.py +0 -150
  86. package/runtime/python/okstra_vendor/networkx/algorithms/approximation/dominating_set.py +0 -149
  87. package/runtime/python/okstra_vendor/networkx/algorithms/approximation/kcomponents.py +0 -369
  88. package/runtime/python/okstra_vendor/networkx/algorithms/approximation/matching.py +0 -44
  89. package/runtime/python/okstra_vendor/networkx/algorithms/approximation/maxcut.py +0 -143
  90. package/runtime/python/okstra_vendor/networkx/algorithms/approximation/ramsey.py +0 -53
  91. package/runtime/python/okstra_vendor/networkx/algorithms/approximation/steinertree.py +0 -265
  92. package/runtime/python/okstra_vendor/networkx/algorithms/approximation/traveling_salesman.py +0 -1508
  93. package/runtime/python/okstra_vendor/networkx/algorithms/approximation/treewidth.py +0 -255
  94. package/runtime/python/okstra_vendor/networkx/algorithms/approximation/vertex_cover.py +0 -83
  95. package/runtime/python/okstra_vendor/networkx/algorithms/assortativity/__init__.py +0 -5
  96. package/runtime/python/okstra_vendor/networkx/algorithms/assortativity/connectivity.py +0 -122
  97. package/runtime/python/okstra_vendor/networkx/algorithms/assortativity/correlation.py +0 -302
  98. package/runtime/python/okstra_vendor/networkx/algorithms/assortativity/mixing.py +0 -255
  99. package/runtime/python/okstra_vendor/networkx/algorithms/assortativity/neighbor_degree.py +0 -160
  100. package/runtime/python/okstra_vendor/networkx/algorithms/assortativity/pairs.py +0 -127
  101. package/runtime/python/okstra_vendor/networkx/algorithms/asteroidal.py +0 -164
  102. package/runtime/python/okstra_vendor/networkx/algorithms/bipartite/__init__.py +0 -88
  103. package/runtime/python/okstra_vendor/networkx/algorithms/bipartite/basic.py +0 -322
  104. package/runtime/python/okstra_vendor/networkx/algorithms/bipartite/centrality.py +0 -290
  105. package/runtime/python/okstra_vendor/networkx/algorithms/bipartite/cluster.py +0 -289
  106. package/runtime/python/okstra_vendor/networkx/algorithms/bipartite/covering.py +0 -57
  107. package/runtime/python/okstra_vendor/networkx/algorithms/bipartite/edgelist.py +0 -360
  108. package/runtime/python/okstra_vendor/networkx/algorithms/bipartite/extendability.py +0 -105
  109. package/runtime/python/okstra_vendor/networkx/algorithms/bipartite/generators.py +0 -603
  110. package/runtime/python/okstra_vendor/networkx/algorithms/bipartite/link_analysis.py +0 -316
  111. package/runtime/python/okstra_vendor/networkx/algorithms/bipartite/matching.py +0 -590
  112. package/runtime/python/okstra_vendor/networkx/algorithms/bipartite/matrix.py +0 -232
  113. package/runtime/python/okstra_vendor/networkx/algorithms/bipartite/projection.py +0 -526
  114. package/runtime/python/okstra_vendor/networkx/algorithms/bipartite/redundancy.py +0 -112
  115. package/runtime/python/okstra_vendor/networkx/algorithms/bipartite/spectral.py +0 -69
  116. package/runtime/python/okstra_vendor/networkx/algorithms/boundary.py +0 -168
  117. package/runtime/python/okstra_vendor/networkx/algorithms/bridges.py +0 -205
  118. package/runtime/python/okstra_vendor/networkx/algorithms/broadcasting.py +0 -164
  119. package/runtime/python/okstra_vendor/networkx/algorithms/centrality/__init__.py +0 -20
  120. package/runtime/python/okstra_vendor/networkx/algorithms/centrality/betweenness.py +0 -591
  121. package/runtime/python/okstra_vendor/networkx/algorithms/centrality/betweenness_subset.py +0 -236
  122. package/runtime/python/okstra_vendor/networkx/algorithms/centrality/closeness.py +0 -282
  123. package/runtime/python/okstra_vendor/networkx/algorithms/centrality/current_flow_betweenness.py +0 -364
  124. package/runtime/python/okstra_vendor/networkx/algorithms/centrality/current_flow_betweenness_subset.py +0 -227
  125. package/runtime/python/okstra_vendor/networkx/algorithms/centrality/current_flow_closeness.py +0 -96
  126. package/runtime/python/okstra_vendor/networkx/algorithms/centrality/degree_alg.py +0 -150
  127. package/runtime/python/okstra_vendor/networkx/algorithms/centrality/dispersion.py +0 -107
  128. package/runtime/python/okstra_vendor/networkx/algorithms/centrality/eigenvector.py +0 -357
  129. package/runtime/python/okstra_vendor/networkx/algorithms/centrality/flow_matrix.py +0 -130
  130. package/runtime/python/okstra_vendor/networkx/algorithms/centrality/group.py +0 -787
  131. package/runtime/python/okstra_vendor/networkx/algorithms/centrality/harmonic.py +0 -88
  132. package/runtime/python/okstra_vendor/networkx/algorithms/centrality/katz.py +0 -331
  133. package/runtime/python/okstra_vendor/networkx/algorithms/centrality/laplacian.py +0 -150
  134. package/runtime/python/okstra_vendor/networkx/algorithms/centrality/load.py +0 -200
  135. package/runtime/python/okstra_vendor/networkx/algorithms/centrality/percolation.py +0 -128
  136. package/runtime/python/okstra_vendor/networkx/algorithms/centrality/reaching.py +0 -209
  137. package/runtime/python/okstra_vendor/networkx/algorithms/centrality/second_order.py +0 -141
  138. package/runtime/python/okstra_vendor/networkx/algorithms/centrality/subgraph_alg.py +0 -361
  139. package/runtime/python/okstra_vendor/networkx/algorithms/centrality/trophic.py +0 -181
  140. package/runtime/python/okstra_vendor/networkx/algorithms/centrality/voterank_alg.py +0 -95
  141. package/runtime/python/okstra_vendor/networkx/algorithms/chains.py +0 -172
  142. package/runtime/python/okstra_vendor/networkx/algorithms/chordal.py +0 -443
  143. package/runtime/python/okstra_vendor/networkx/algorithms/clique.py +0 -818
  144. package/runtime/python/okstra_vendor/networkx/algorithms/cluster.py +0 -732
  145. package/runtime/python/okstra_vendor/networkx/algorithms/coloring/__init__.py +0 -4
  146. package/runtime/python/okstra_vendor/networkx/algorithms/coloring/equitable_coloring.py +0 -505
  147. package/runtime/python/okstra_vendor/networkx/algorithms/coloring/greedy_coloring.py +0 -565
  148. package/runtime/python/okstra_vendor/networkx/algorithms/communicability_alg.py +0 -163
  149. package/runtime/python/okstra_vendor/networkx/algorithms/community/__init__.py +0 -28
  150. package/runtime/python/okstra_vendor/networkx/algorithms/community/asyn_fluid.py +0 -153
  151. package/runtime/python/okstra_vendor/networkx/algorithms/community/bipartitions.py +0 -354
  152. package/runtime/python/okstra_vendor/networkx/algorithms/community/centrality.py +0 -171
  153. package/runtime/python/okstra_vendor/networkx/algorithms/community/community_utils.py +0 -30
  154. package/runtime/python/okstra_vendor/networkx/algorithms/community/divisive.py +0 -216
  155. package/runtime/python/okstra_vendor/networkx/algorithms/community/kclique.py +0 -79
  156. package/runtime/python/okstra_vendor/networkx/algorithms/community/label_propagation.py +0 -338
  157. package/runtime/python/okstra_vendor/networkx/algorithms/community/leiden.py +0 -162
  158. package/runtime/python/okstra_vendor/networkx/algorithms/community/local.py +0 -220
  159. package/runtime/python/okstra_vendor/networkx/algorithms/community/louvain.py +0 -384
  160. package/runtime/python/okstra_vendor/networkx/algorithms/community/lukes.py +0 -227
  161. package/runtime/python/okstra_vendor/networkx/algorithms/community/modularity_max.py +0 -452
  162. package/runtime/python/okstra_vendor/networkx/algorithms/community/quality.py +0 -347
  163. package/runtime/python/okstra_vendor/networkx/algorithms/components/__init__.py +0 -6
  164. package/runtime/python/okstra_vendor/networkx/algorithms/components/attracting.py +0 -115
  165. package/runtime/python/okstra_vendor/networkx/algorithms/components/biconnected.py +0 -394
  166. package/runtime/python/okstra_vendor/networkx/algorithms/components/connected.py +0 -282
  167. package/runtime/python/okstra_vendor/networkx/algorithms/components/semiconnected.py +0 -71
  168. package/runtime/python/okstra_vendor/networkx/algorithms/components/strongly_connected.py +0 -359
  169. package/runtime/python/okstra_vendor/networkx/algorithms/components/weakly_connected.py +0 -196
  170. package/runtime/python/okstra_vendor/networkx/algorithms/connectivity/__init__.py +0 -11
  171. package/runtime/python/okstra_vendor/networkx/algorithms/connectivity/connectivity.py +0 -811
  172. package/runtime/python/okstra_vendor/networkx/algorithms/connectivity/cuts.py +0 -616
  173. package/runtime/python/okstra_vendor/networkx/algorithms/connectivity/disjoint_paths.py +0 -408
  174. package/runtime/python/okstra_vendor/networkx/algorithms/connectivity/edge_augmentation.py +0 -1270
  175. package/runtime/python/okstra_vendor/networkx/algorithms/connectivity/edge_kcomponents.py +0 -592
  176. package/runtime/python/okstra_vendor/networkx/algorithms/connectivity/kcomponents.py +0 -220
  177. package/runtime/python/okstra_vendor/networkx/algorithms/connectivity/kcutsets.py +0 -235
  178. package/runtime/python/okstra_vendor/networkx/algorithms/connectivity/stoerwagner.py +0 -152
  179. package/runtime/python/okstra_vendor/networkx/algorithms/connectivity/utils.py +0 -88
  180. package/runtime/python/okstra_vendor/networkx/algorithms/core.py +0 -588
  181. package/runtime/python/okstra_vendor/networkx/algorithms/covering.py +0 -142
  182. package/runtime/python/okstra_vendor/networkx/algorithms/cuts.py +0 -416
  183. package/runtime/python/okstra_vendor/networkx/algorithms/cycles.py +0 -1234
  184. package/runtime/python/okstra_vendor/networkx/algorithms/d_separation.py +0 -677
  185. package/runtime/python/okstra_vendor/networkx/algorithms/dag.py +0 -1392
  186. package/runtime/python/okstra_vendor/networkx/algorithms/distance_measures.py +0 -1095
  187. package/runtime/python/okstra_vendor/networkx/algorithms/distance_regular.py +0 -272
  188. package/runtime/python/okstra_vendor/networkx/algorithms/dominance.py +0 -142
  189. package/runtime/python/okstra_vendor/networkx/algorithms/dominating.py +0 -268
  190. package/runtime/python/okstra_vendor/networkx/algorithms/efficiency_measures.py +0 -167
  191. package/runtime/python/okstra_vendor/networkx/algorithms/euler.py +0 -470
  192. package/runtime/python/okstra_vendor/networkx/algorithms/flow/__init__.py +0 -11
  193. package/runtime/python/okstra_vendor/networkx/algorithms/flow/boykovkolmogorov.py +0 -370
  194. package/runtime/python/okstra_vendor/networkx/algorithms/flow/capacityscaling.py +0 -407
  195. package/runtime/python/okstra_vendor/networkx/algorithms/flow/dinitz_alg.py +0 -238
  196. package/runtime/python/okstra_vendor/networkx/algorithms/flow/edmondskarp.py +0 -241
  197. package/runtime/python/okstra_vendor/networkx/algorithms/flow/gomory_hu.py +0 -178
  198. package/runtime/python/okstra_vendor/networkx/algorithms/flow/maxflow.py +0 -611
  199. package/runtime/python/okstra_vendor/networkx/algorithms/flow/mincost.py +0 -356
  200. package/runtime/python/okstra_vendor/networkx/algorithms/flow/networksimplex.py +0 -662
  201. package/runtime/python/okstra_vendor/networkx/algorithms/flow/preflowpush.py +0 -425
  202. package/runtime/python/okstra_vendor/networkx/algorithms/flow/shortestaugmentingpath.py +0 -300
  203. package/runtime/python/okstra_vendor/networkx/algorithms/flow/utils.py +0 -194
  204. package/runtime/python/okstra_vendor/networkx/algorithms/graph_hashing.py +0 -435
  205. package/runtime/python/okstra_vendor/networkx/algorithms/graphical.py +0 -483
  206. package/runtime/python/okstra_vendor/networkx/algorithms/hierarchy.py +0 -57
  207. package/runtime/python/okstra_vendor/networkx/algorithms/hybrid.py +0 -196
  208. package/runtime/python/okstra_vendor/networkx/algorithms/isolate.py +0 -107
  209. package/runtime/python/okstra_vendor/networkx/algorithms/isomorphism/__init__.py +0 -7
  210. package/runtime/python/okstra_vendor/networkx/algorithms/isomorphism/ismags.py +0 -1306
  211. package/runtime/python/okstra_vendor/networkx/algorithms/isomorphism/isomorph.py +0 -336
  212. package/runtime/python/okstra_vendor/networkx/algorithms/isomorphism/isomorphvf2.py +0 -1262
  213. package/runtime/python/okstra_vendor/networkx/algorithms/isomorphism/matchhelpers.py +0 -352
  214. package/runtime/python/okstra_vendor/networkx/algorithms/isomorphism/temporalisomorphvf2.py +0 -308
  215. package/runtime/python/okstra_vendor/networkx/algorithms/isomorphism/tree_isomorphism.py +0 -264
  216. package/runtime/python/okstra_vendor/networkx/algorithms/isomorphism/vf2pp.py +0 -1102
  217. package/runtime/python/okstra_vendor/networkx/algorithms/isomorphism/vf2userfunc.py +0 -192
  218. package/runtime/python/okstra_vendor/networkx/algorithms/link_analysis/__init__.py +0 -2
  219. package/runtime/python/okstra_vendor/networkx/algorithms/link_analysis/hits_alg.py +0 -337
  220. package/runtime/python/okstra_vendor/networkx/algorithms/link_analysis/pagerank_alg.py +0 -498
  221. package/runtime/python/okstra_vendor/networkx/algorithms/link_prediction.py +0 -687
  222. package/runtime/python/okstra_vendor/networkx/algorithms/lowest_common_ancestors.py +0 -280
  223. package/runtime/python/okstra_vendor/networkx/algorithms/matching.py +0 -1148
  224. package/runtime/python/okstra_vendor/networkx/algorithms/minors/__init__.py +0 -27
  225. package/runtime/python/okstra_vendor/networkx/algorithms/minors/contraction.py +0 -738
  226. package/runtime/python/okstra_vendor/networkx/algorithms/mis.py +0 -78
  227. package/runtime/python/okstra_vendor/networkx/algorithms/moral.py +0 -59
  228. package/runtime/python/okstra_vendor/networkx/algorithms/node_classification.py +0 -219
  229. package/runtime/python/okstra_vendor/networkx/algorithms/non_randomness.py +0 -155
  230. package/runtime/python/okstra_vendor/networkx/algorithms/operators/__init__.py +0 -4
  231. package/runtime/python/okstra_vendor/networkx/algorithms/operators/all.py +0 -324
  232. package/runtime/python/okstra_vendor/networkx/algorithms/operators/binary.py +0 -468
  233. package/runtime/python/okstra_vendor/networkx/algorithms/operators/product.py +0 -633
  234. package/runtime/python/okstra_vendor/networkx/algorithms/operators/unary.py +0 -77
  235. package/runtime/python/okstra_vendor/networkx/algorithms/perfect_graph.py +0 -73
  236. package/runtime/python/okstra_vendor/networkx/algorithms/planar_drawing.py +0 -464
  237. package/runtime/python/okstra_vendor/networkx/algorithms/planarity.py +0 -1463
  238. package/runtime/python/okstra_vendor/networkx/algorithms/polynomials.py +0 -306
  239. package/runtime/python/okstra_vendor/networkx/algorithms/reciprocity.py +0 -98
  240. package/runtime/python/okstra_vendor/networkx/algorithms/regular.py +0 -167
  241. package/runtime/python/okstra_vendor/networkx/algorithms/richclub.py +0 -138
  242. package/runtime/python/okstra_vendor/networkx/algorithms/shortest_paths/__init__.py +0 -5
  243. package/runtime/python/okstra_vendor/networkx/algorithms/shortest_paths/astar.py +0 -239
  244. package/runtime/python/okstra_vendor/networkx/algorithms/shortest_paths/dense.py +0 -264
  245. package/runtime/python/okstra_vendor/networkx/algorithms/shortest_paths/generic.py +0 -716
  246. package/runtime/python/okstra_vendor/networkx/algorithms/shortest_paths/unweighted.py +0 -625
  247. package/runtime/python/okstra_vendor/networkx/algorithms/shortest_paths/weighted.py +0 -2542
  248. package/runtime/python/okstra_vendor/networkx/algorithms/similarity.py +0 -2107
  249. package/runtime/python/okstra_vendor/networkx/algorithms/simple_paths.py +0 -966
  250. package/runtime/python/okstra_vendor/networkx/algorithms/smallworld.py +0 -404
  251. package/runtime/python/okstra_vendor/networkx/algorithms/smetric.py +0 -30
  252. package/runtime/python/okstra_vendor/networkx/algorithms/sparsifiers.py +0 -296
  253. package/runtime/python/okstra_vendor/networkx/algorithms/structuralholes.py +0 -374
  254. package/runtime/python/okstra_vendor/networkx/algorithms/summarization.py +0 -564
  255. package/runtime/python/okstra_vendor/networkx/algorithms/swap.py +0 -406
  256. package/runtime/python/okstra_vendor/networkx/algorithms/threshold.py +0 -981
  257. package/runtime/python/okstra_vendor/networkx/algorithms/time_dependent.py +0 -142
  258. package/runtime/python/okstra_vendor/networkx/algorithms/tournament.py +0 -406
  259. package/runtime/python/okstra_vendor/networkx/algorithms/traversal/__init__.py +0 -5
  260. package/runtime/python/okstra_vendor/networkx/algorithms/traversal/beamsearch.py +0 -90
  261. package/runtime/python/okstra_vendor/networkx/algorithms/traversal/breadth_first_search.py +0 -576
  262. package/runtime/python/okstra_vendor/networkx/algorithms/traversal/depth_first_search.py +0 -529
  263. package/runtime/python/okstra_vendor/networkx/algorithms/traversal/edgebfs.py +0 -185
  264. package/runtime/python/okstra_vendor/networkx/algorithms/traversal/edgedfs.py +0 -182
  265. package/runtime/python/okstra_vendor/networkx/algorithms/tree/__init__.py +0 -7
  266. package/runtime/python/okstra_vendor/networkx/algorithms/tree/branchings.py +0 -1042
  267. package/runtime/python/okstra_vendor/networkx/algorithms/tree/coding.py +0 -413
  268. package/runtime/python/okstra_vendor/networkx/algorithms/tree/decomposition.py +0 -88
  269. package/runtime/python/okstra_vendor/networkx/algorithms/tree/distance_measures.py +0 -219
  270. package/runtime/python/okstra_vendor/networkx/algorithms/tree/mst.py +0 -1281
  271. package/runtime/python/okstra_vendor/networkx/algorithms/tree/operations.py +0 -106
  272. package/runtime/python/okstra_vendor/networkx/algorithms/tree/recognition.py +0 -273
  273. package/runtime/python/okstra_vendor/networkx/algorithms/triads.py +0 -500
  274. package/runtime/python/okstra_vendor/networkx/algorithms/vitality.py +0 -76
  275. package/runtime/python/okstra_vendor/networkx/algorithms/voronoi.py +0 -86
  276. package/runtime/python/okstra_vendor/networkx/algorithms/walks.py +0 -77
  277. package/runtime/python/okstra_vendor/networkx/algorithms/wiener.py +0 -278
  278. package/runtime/python/okstra_vendor/networkx/classes/__init__.py +0 -13
  279. package/runtime/python/okstra_vendor/networkx/classes/coreviews.py +0 -435
  280. package/runtime/python/okstra_vendor/networkx/classes/digraph.py +0 -1363
  281. package/runtime/python/okstra_vendor/networkx/classes/filters.py +0 -95
  282. package/runtime/python/okstra_vendor/networkx/classes/function.py +0 -1549
  283. package/runtime/python/okstra_vendor/networkx/classes/graph.py +0 -2082
  284. package/runtime/python/okstra_vendor/networkx/classes/graphviews.py +0 -269
  285. package/runtime/python/okstra_vendor/networkx/classes/multidigraph.py +0 -977
  286. package/runtime/python/okstra_vendor/networkx/classes/multigraph.py +0 -1294
  287. package/runtime/python/okstra_vendor/networkx/classes/reportviews.py +0 -1447
  288. package/runtime/python/okstra_vendor/networkx/convert.py +0 -502
  289. package/runtime/python/okstra_vendor/networkx/convert_matrix.py +0 -1314
  290. package/runtime/python/okstra_vendor/networkx/drawing/__init__.py +0 -7
  291. package/runtime/python/okstra_vendor/networkx/drawing/layout.py +0 -2036
  292. package/runtime/python/okstra_vendor/networkx/drawing/nx_agraph.py +0 -470
  293. package/runtime/python/okstra_vendor/networkx/drawing/nx_latex.py +0 -570
  294. package/runtime/python/okstra_vendor/networkx/drawing/nx_pydot.py +0 -361
  295. package/runtime/python/okstra_vendor/networkx/drawing/nx_pylab.py +0 -2978
  296. package/runtime/python/okstra_vendor/networkx/exception.py +0 -131
  297. package/runtime/python/okstra_vendor/networkx/generators/__init__.py +0 -34
  298. package/runtime/python/okstra_vendor/networkx/generators/atlas.dat.gz +0 -0
  299. package/runtime/python/okstra_vendor/networkx/generators/atlas.py +0 -227
  300. package/runtime/python/okstra_vendor/networkx/generators/classic.py +0 -1091
  301. package/runtime/python/okstra_vendor/networkx/generators/cographs.py +0 -68
  302. package/runtime/python/okstra_vendor/networkx/generators/community.py +0 -1070
  303. package/runtime/python/okstra_vendor/networkx/generators/degree_seq.py +0 -886
  304. package/runtime/python/okstra_vendor/networkx/generators/directed.py +0 -572
  305. package/runtime/python/okstra_vendor/networkx/generators/duplication.py +0 -174
  306. package/runtime/python/okstra_vendor/networkx/generators/ego.py +0 -66
  307. package/runtime/python/okstra_vendor/networkx/generators/expanders.py +0 -499
  308. package/runtime/python/okstra_vendor/networkx/generators/geometric.py +0 -1037
  309. package/runtime/python/okstra_vendor/networkx/generators/harary_graph.py +0 -163
  310. package/runtime/python/okstra_vendor/networkx/generators/internet_as_graphs.py +0 -443
  311. package/runtime/python/okstra_vendor/networkx/generators/intersection.py +0 -125
  312. package/runtime/python/okstra_vendor/networkx/generators/interval_graph.py +0 -70
  313. package/runtime/python/okstra_vendor/networkx/generators/joint_degree_seq.py +0 -664
  314. package/runtime/python/okstra_vendor/networkx/generators/lattice.py +0 -405
  315. package/runtime/python/okstra_vendor/networkx/generators/line.py +0 -501
  316. package/runtime/python/okstra_vendor/networkx/generators/mycielski.py +0 -110
  317. package/runtime/python/okstra_vendor/networkx/generators/nonisomorphic_trees.py +0 -259
  318. package/runtime/python/okstra_vendor/networkx/generators/random_clustered.py +0 -117
  319. package/runtime/python/okstra_vendor/networkx/generators/random_graphs.py +0 -1416
  320. package/runtime/python/okstra_vendor/networkx/generators/small.py +0 -1070
  321. package/runtime/python/okstra_vendor/networkx/generators/social.py +0 -554
  322. package/runtime/python/okstra_vendor/networkx/generators/spectral_graph_forge.py +0 -120
  323. package/runtime/python/okstra_vendor/networkx/generators/stochastic.py +0 -54
  324. package/runtime/python/okstra_vendor/networkx/generators/sudoku.py +0 -131
  325. package/runtime/python/okstra_vendor/networkx/generators/time_series.py +0 -74
  326. package/runtime/python/okstra_vendor/networkx/generators/trees.py +0 -1070
  327. package/runtime/python/okstra_vendor/networkx/generators/triads.py +0 -94
  328. package/runtime/python/okstra_vendor/networkx/lazy_imports.py +0 -188
  329. package/runtime/python/okstra_vendor/networkx/linalg/__init__.py +0 -13
  330. package/runtime/python/okstra_vendor/networkx/linalg/algebraicconnectivity.py +0 -650
  331. package/runtime/python/okstra_vendor/networkx/linalg/attrmatrix.py +0 -466
  332. package/runtime/python/okstra_vendor/networkx/linalg/bethehessianmatrix.py +0 -77
  333. package/runtime/python/okstra_vendor/networkx/linalg/graphmatrix.py +0 -168
  334. package/runtime/python/okstra_vendor/networkx/linalg/laplacianmatrix.py +0 -512
  335. package/runtime/python/okstra_vendor/networkx/linalg/modularitymatrix.py +0 -166
  336. package/runtime/python/okstra_vendor/networkx/linalg/spectrum.py +0 -186
  337. package/runtime/python/okstra_vendor/networkx/readwrite/__init__.py +0 -17
  338. package/runtime/python/okstra_vendor/networkx/readwrite/adjlist.py +0 -330
  339. package/runtime/python/okstra_vendor/networkx/readwrite/edgelist.py +0 -489
  340. package/runtime/python/okstra_vendor/networkx/readwrite/gexf.py +0 -1084
  341. package/runtime/python/okstra_vendor/networkx/readwrite/gml.py +0 -879
  342. package/runtime/python/okstra_vendor/networkx/readwrite/graph6.py +0 -427
  343. package/runtime/python/okstra_vendor/networkx/readwrite/graphml.py +0 -1053
  344. package/runtime/python/okstra_vendor/networkx/readwrite/json_graph/__init__.py +0 -19
  345. package/runtime/python/okstra_vendor/networkx/readwrite/json_graph/adjacency.py +0 -156
  346. package/runtime/python/okstra_vendor/networkx/readwrite/json_graph/cytoscape.py +0 -190
  347. package/runtime/python/okstra_vendor/networkx/readwrite/json_graph/node_link.py +0 -261
  348. package/runtime/python/okstra_vendor/networkx/readwrite/json_graph/tree.py +0 -137
  349. package/runtime/python/okstra_vendor/networkx/readwrite/leda.py +0 -108
  350. package/runtime/python/okstra_vendor/networkx/readwrite/multiline_adjlist.py +0 -393
  351. package/runtime/python/okstra_vendor/networkx/readwrite/p2g.py +0 -113
  352. package/runtime/python/okstra_vendor/networkx/readwrite/pajek.py +0 -286
  353. package/runtime/python/okstra_vendor/networkx/readwrite/sparse6.py +0 -379
  354. package/runtime/python/okstra_vendor/networkx/readwrite/text.py +0 -851
  355. package/runtime/python/okstra_vendor/networkx/relabel.py +0 -285
  356. package/runtime/python/okstra_vendor/networkx/utils/__init__.py +0 -8
  357. package/runtime/python/okstra_vendor/networkx/utils/backends.py +0 -2171
  358. package/runtime/python/okstra_vendor/networkx/utils/configs.py +0 -396
  359. package/runtime/python/okstra_vendor/networkx/utils/decorators.py +0 -1233
  360. package/runtime/python/okstra_vendor/networkx/utils/heaps.py +0 -338
  361. package/runtime/python/okstra_vendor/networkx/utils/mapped_queue.py +0 -297
  362. package/runtime/python/okstra_vendor/networkx/utils/misc.py +0 -703
  363. package/runtime/python/okstra_vendor/networkx/utils/random_sequence.py +0 -198
  364. package/runtime/python/okstra_vendor/networkx/utils/rcm.py +0 -159
  365. package/runtime/python/okstra_vendor/networkx/utils/union_find.py +0 -106
  366. package/runtime/skills/okstra-graphify/SKILL.md +0 -169
  367. package/src/commands/graphify.mjs +0 -32
@@ -1,62 +0,0 @@
1
- """
2
- NetworkX
3
- ========
4
-
5
- NetworkX is a Python package for the creation, manipulation, and study of the
6
- structure, dynamics, and functions of complex networks.
7
-
8
- See https://networkx.org for complete documentation.
9
- """
10
-
11
- __version__ = "3.6.1"
12
-
13
-
14
- # These are imported in order as listed
15
- from networkx.lazy_imports import _lazy_import
16
-
17
- from networkx.exception import *
18
-
19
- from networkx import utils
20
- from networkx.utils import _clear_cache, _dispatchable
21
-
22
- # load_and_call entry_points, set configs
23
- config = utils.backends._set_configs_from_environment()
24
- utils.config = utils.configs.config = config # type: ignore[attr-defined]
25
-
26
- from networkx import classes
27
- from networkx.classes import filters
28
- from networkx.classes import *
29
-
30
- from networkx import convert
31
- from networkx.convert import *
32
-
33
- from networkx import convert_matrix
34
- from networkx.convert_matrix import *
35
-
36
- from networkx import relabel
37
- from networkx.relabel import *
38
-
39
- from networkx import generators
40
- from networkx.generators import *
41
-
42
- from networkx import readwrite
43
- from networkx.readwrite import *
44
-
45
- # Need to test with SciPy, when available
46
- from networkx import algorithms
47
- from networkx.algorithms import *
48
-
49
- from networkx import linalg
50
- from networkx.linalg import *
51
-
52
- from networkx import drawing
53
- from networkx.drawing import *
54
-
55
-
56
- def __getattr__(name):
57
- if name == "random_tree":
58
- raise AttributeError(
59
- "nx.random_tree was removed in version 3.4. Use `nx.random_labeled_tree` instead.\n"
60
- "See: https://networkx.org/documentation/latest/release/release_3.4.html"
61
- )
62
- raise AttributeError(f"module 'networkx' has no attribute '{name}'")
@@ -1,134 +0,0 @@
1
- from networkx.algorithms.assortativity import *
2
- from networkx.algorithms.asteroidal import *
3
- from networkx.algorithms.boundary import *
4
- from networkx.algorithms.broadcasting import *
5
- from networkx.algorithms.bridges import *
6
- from networkx.algorithms.chains import *
7
- from networkx.algorithms.centrality import *
8
- from networkx.algorithms.chordal import *
9
- from networkx.algorithms.cluster import *
10
- from networkx.algorithms.clique import *
11
- from networkx.algorithms.communicability_alg import *
12
- from networkx.algorithms.components import *
13
- from networkx.algorithms.coloring import *
14
- from networkx.algorithms.core import *
15
- from networkx.algorithms.covering import *
16
- from networkx.algorithms.cycles import *
17
- from networkx.algorithms.cuts import *
18
- from networkx.algorithms.d_separation import *
19
- from networkx.algorithms.dag import *
20
- from networkx.algorithms.distance_measures import *
21
- from networkx.algorithms.distance_regular import *
22
- from networkx.algorithms.dominance import *
23
- from networkx.algorithms.dominating import *
24
- from networkx.algorithms.efficiency_measures import *
25
- from networkx.algorithms.euler import *
26
- from networkx.algorithms.graphical import *
27
- from networkx.algorithms.hierarchy import *
28
- from networkx.algorithms.hybrid import *
29
- from networkx.algorithms.link_analysis import *
30
- from networkx.algorithms.link_prediction import *
31
- from networkx.algorithms.lowest_common_ancestors import *
32
- from networkx.algorithms.isolate import *
33
- from networkx.algorithms.matching import *
34
- from networkx.algorithms.minors import *
35
- from networkx.algorithms.mis import *
36
- from networkx.algorithms.moral import *
37
- from networkx.algorithms.non_randomness import *
38
- from networkx.algorithms.operators import *
39
- from networkx.algorithms.planarity import *
40
- from networkx.algorithms.planar_drawing import *
41
- from networkx.algorithms.polynomials import *
42
- from networkx.algorithms.perfect_graph import *
43
- from networkx.algorithms.reciprocity import *
44
- from networkx.algorithms.regular import *
45
- from networkx.algorithms.richclub import *
46
- from networkx.algorithms.shortest_paths import *
47
- from networkx.algorithms.similarity import *
48
- from networkx.algorithms.graph_hashing import *
49
- from networkx.algorithms.simple_paths import *
50
- from networkx.algorithms.smallworld import *
51
- from networkx.algorithms.smetric import *
52
- from networkx.algorithms.structuralholes import *
53
- from networkx.algorithms.sparsifiers import *
54
- from networkx.algorithms.summarization import *
55
- from networkx.algorithms.swap import *
56
- from networkx.algorithms.time_dependent import *
57
- from networkx.algorithms.traversal import *
58
- from networkx.algorithms.triads import *
59
- from networkx.algorithms.vitality import *
60
- from networkx.algorithms.voronoi import *
61
- from networkx.algorithms.walks import *
62
- from networkx.algorithms.wiener import *
63
-
64
- # Make certain subpackages available to the user as direct imports from
65
- # the `networkx` namespace.
66
- from networkx.algorithms import approximation
67
- from networkx.algorithms import assortativity
68
- from networkx.algorithms import bipartite
69
- from networkx.algorithms import node_classification
70
- from networkx.algorithms import centrality
71
- from networkx.algorithms import chordal
72
- from networkx.algorithms import cluster
73
- from networkx.algorithms import clique
74
- from networkx.algorithms import components
75
- from networkx.algorithms import connectivity
76
- from networkx.algorithms import community
77
- from networkx.algorithms import coloring
78
- from networkx.algorithms import flow
79
- from networkx.algorithms import isomorphism
80
- from networkx.algorithms import link_analysis
81
- from networkx.algorithms import lowest_common_ancestors
82
- from networkx.algorithms import operators
83
- from networkx.algorithms import shortest_paths
84
- from networkx.algorithms import tournament
85
- from networkx.algorithms import traversal
86
- from networkx.algorithms import tree
87
-
88
- # Make certain functions from some of the previous subpackages available
89
- # to the user as direct imports from the `networkx` namespace.
90
- from networkx.algorithms.bipartite import complete_bipartite_graph
91
- from networkx.algorithms.bipartite import is_bipartite
92
- from networkx.algorithms.bipartite import projected_graph
93
- from networkx.algorithms.connectivity import all_pairs_node_connectivity
94
- from networkx.algorithms.connectivity import all_node_cuts
95
- from networkx.algorithms.connectivity import average_node_connectivity
96
- from networkx.algorithms.connectivity import edge_connectivity
97
- from networkx.algorithms.connectivity import edge_disjoint_paths
98
- from networkx.algorithms.connectivity import k_components
99
- from networkx.algorithms.connectivity import k_edge_components
100
- from networkx.algorithms.connectivity import k_edge_subgraphs
101
- from networkx.algorithms.connectivity import k_edge_augmentation
102
- from networkx.algorithms.connectivity import is_k_edge_connected
103
- from networkx.algorithms.connectivity import minimum_edge_cut
104
- from networkx.algorithms.connectivity import minimum_node_cut
105
- from networkx.algorithms.connectivity import node_connectivity
106
- from networkx.algorithms.connectivity import node_disjoint_paths
107
- from networkx.algorithms.connectivity import stoer_wagner
108
- from networkx.algorithms.flow import capacity_scaling
109
- from networkx.algorithms.flow import cost_of_flow
110
- from networkx.algorithms.flow import gomory_hu_tree
111
- from networkx.algorithms.flow import max_flow_min_cost
112
- from networkx.algorithms.flow import maximum_flow
113
- from networkx.algorithms.flow import maximum_flow_value
114
- from networkx.algorithms.flow import min_cost_flow
115
- from networkx.algorithms.flow import min_cost_flow_cost
116
- from networkx.algorithms.flow import minimum_cut
117
- from networkx.algorithms.flow import minimum_cut_value
118
- from networkx.algorithms.flow import network_simplex
119
- from networkx.algorithms.isomorphism import could_be_isomorphic
120
- from networkx.algorithms.isomorphism import fast_could_be_isomorphic
121
- from networkx.algorithms.isomorphism import faster_could_be_isomorphic
122
- from networkx.algorithms.isomorphism import is_isomorphic
123
- from networkx.algorithms.isomorphism.vf2pp import *
124
- from networkx.algorithms.tree.branchings import maximum_branching
125
- from networkx.algorithms.tree.branchings import maximum_spanning_arborescence
126
- from networkx.algorithms.tree.branchings import minimum_branching
127
- from networkx.algorithms.tree.branchings import minimum_spanning_arborescence
128
- from networkx.algorithms.tree.branchings import ArborescenceIterator
129
- from networkx.algorithms.tree.coding import *
130
- from networkx.algorithms.tree.decomposition import *
131
- from networkx.algorithms.tree.mst import *
132
- from networkx.algorithms.tree.operations import *
133
- from networkx.algorithms.tree.recognition import *
134
- from networkx.algorithms.tournament import is_tournament
@@ -1,26 +0,0 @@
1
- """Approximations of graph properties and Heuristic methods for optimization.
2
-
3
- The functions in this class are not imported into the top-level ``networkx``
4
- namespace so the easiest way to use them is with::
5
-
6
- >>> from networkx.algorithms import approximation
7
-
8
- Another option is to import the specific function with
9
- ``from networkx.algorithms.approximation import function_name``.
10
-
11
- """
12
-
13
- from networkx.algorithms.approximation.clustering_coefficient import *
14
- from networkx.algorithms.approximation.clique import *
15
- from networkx.algorithms.approximation.connectivity import *
16
- from networkx.algorithms.approximation.distance_measures import *
17
- from networkx.algorithms.approximation.dominating_set import *
18
- from networkx.algorithms.approximation.kcomponents import *
19
- from networkx.algorithms.approximation.matching import *
20
- from networkx.algorithms.approximation.ramsey import *
21
- from networkx.algorithms.approximation.steinertree import *
22
- from networkx.algorithms.approximation.traveling_salesman import *
23
- from networkx.algorithms.approximation.treewidth import *
24
- from networkx.algorithms.approximation.vertex_cover import *
25
- from networkx.algorithms.approximation.maxcut import *
26
- from networkx.algorithms.approximation.density import *
@@ -1,259 +0,0 @@
1
- """Functions for computing large cliques and maximum independent sets."""
2
-
3
- import networkx as nx
4
- from networkx.algorithms.approximation import ramsey
5
- from networkx.utils import not_implemented_for
6
-
7
- __all__ = [
8
- "clique_removal",
9
- "max_clique",
10
- "large_clique_size",
11
- "maximum_independent_set",
12
- ]
13
-
14
-
15
- @not_implemented_for("directed")
16
- @not_implemented_for("multigraph")
17
- @nx._dispatchable
18
- def maximum_independent_set(G):
19
- """Returns an approximate maximum independent set.
20
-
21
- Independent set or stable set is a set of vertices in a graph, no two of
22
- which are adjacent. That is, it is a set I of vertices such that for every
23
- two vertices in I, there is no edge connecting the two. Equivalently, each
24
- edge in the graph has at most one endpoint in I. The size of an independent
25
- set is the number of vertices it contains [1]_.
26
-
27
- A maximum independent set is a largest independent set for a given graph G
28
- and its size is denoted $\\alpha(G)$. The problem of finding such a set is called
29
- the maximum independent set problem and is an NP-hard optimization problem.
30
- As such, it is unlikely that there exists an efficient algorithm for finding
31
- a maximum independent set of a graph.
32
-
33
- The Independent Set algorithm is based on [2]_.
34
-
35
- Parameters
36
- ----------
37
- G : NetworkX graph
38
- Undirected graph
39
-
40
- Returns
41
- -------
42
- iset : Set
43
- The apx-maximum independent set
44
-
45
- Examples
46
- --------
47
- >>> G = nx.path_graph(10)
48
- >>> nx.approximation.maximum_independent_set(G)
49
- {0, 2, 4, 6, 9}
50
-
51
- Raises
52
- ------
53
- NetworkXNotImplemented
54
- If the graph is directed or is a multigraph.
55
-
56
- Notes
57
- -----
58
- Finds the $O(|V|/(log|V|)^2)$ apx of independent set in the worst case.
59
-
60
- References
61
- ----------
62
- .. [1] `Wikipedia: Independent set
63
- <https://en.wikipedia.org/wiki/Independent_set_(graph_theory)>`_
64
- .. [2] Boppana, R., & Halldórsson, M. M. (1992).
65
- Approximating maximum independent sets by excluding subgraphs.
66
- BIT Numerical Mathematics, 32(2), 180–196. Springer.
67
- """
68
- iset, _ = clique_removal(G)
69
- return iset
70
-
71
-
72
- @not_implemented_for("directed")
73
- @not_implemented_for("multigraph")
74
- @nx._dispatchable
75
- def max_clique(G):
76
- r"""Find the Maximum Clique
77
-
78
- Finds the $O(|V|/(log|V|)^2)$ apx of maximum clique/independent set
79
- in the worst case.
80
-
81
- Parameters
82
- ----------
83
- G : NetworkX graph
84
- Undirected graph
85
-
86
- Returns
87
- -------
88
- clique : set
89
- The apx-maximum clique of the graph
90
-
91
- Examples
92
- --------
93
- >>> G = nx.path_graph(10)
94
- >>> nx.approximation.max_clique(G)
95
- {8, 9}
96
-
97
- Raises
98
- ------
99
- NetworkXNotImplemented
100
- If the graph is directed or is a multigraph.
101
-
102
- Notes
103
- -----
104
- A clique in an undirected graph G = (V, E) is a subset of the vertex set
105
- `C \subseteq V` such that for every two vertices in C there exists an edge
106
- connecting the two. This is equivalent to saying that the subgraph
107
- induced by C is complete (in some cases, the term clique may also refer
108
- to the subgraph).
109
-
110
- A maximum clique is a clique of the largest possible size in a given graph.
111
- The clique number `\omega(G)` of a graph G is the number of
112
- vertices in a maximum clique in G. The intersection number of
113
- G is the smallest number of cliques that together cover all edges of G.
114
-
115
- https://en.wikipedia.org/wiki/Maximum_clique
116
-
117
- References
118
- ----------
119
- .. [1] Boppana, R., & Halldórsson, M. M. (1992).
120
- Approximating maximum independent sets by excluding subgraphs.
121
- BIT Numerical Mathematics, 32(2), 180–196. Springer.
122
- doi:10.1007/BF01994876
123
- """
124
- # finding the maximum clique in a graph is equivalent to finding
125
- # the independent set in the complementary graph
126
- cgraph = nx.complement(G)
127
- iset, _ = clique_removal(cgraph)
128
- return iset
129
-
130
-
131
- @not_implemented_for("directed")
132
- @not_implemented_for("multigraph")
133
- @nx._dispatchable
134
- def clique_removal(G):
135
- r"""Repeatedly remove cliques from the graph.
136
-
137
- Results in a $O(|V|/(\log |V|)^2)$ approximation of maximum clique
138
- and independent set. Returns the largest independent set found, along
139
- with found maximal cliques.
140
-
141
- Parameters
142
- ----------
143
- G : NetworkX graph
144
- Undirected graph
145
-
146
- Returns
147
- -------
148
- max_ind_cliques : (set, list) tuple
149
- 2-tuple of Maximal Independent Set and list of maximal cliques (sets).
150
-
151
- Examples
152
- --------
153
- >>> G = nx.path_graph(10)
154
- >>> nx.approximation.clique_removal(G)
155
- ({0, 2, 4, 6, 9}, [{0, 1}, {2, 3}, {4, 5}, {6, 7}, {8, 9}])
156
-
157
- Raises
158
- ------
159
- NetworkXNotImplemented
160
- If the graph is directed or is a multigraph.
161
-
162
- References
163
- ----------
164
- .. [1] Boppana, R., & Halldórsson, M. M. (1992).
165
- Approximating maximum independent sets by excluding subgraphs.
166
- BIT Numerical Mathematics, 32(2), 180–196. Springer.
167
- """
168
- graph = G.copy()
169
- c_i, i_i = ramsey.ramsey_R2(graph)
170
- cliques = [c_i]
171
- isets = [i_i]
172
- while graph:
173
- graph.remove_nodes_from(c_i)
174
- c_i, i_i = ramsey.ramsey_R2(graph)
175
- if c_i:
176
- cliques.append(c_i)
177
- if i_i:
178
- isets.append(i_i)
179
- # Determine the largest independent set as measured by cardinality.
180
- maxiset = max(isets, key=len)
181
- return maxiset, cliques
182
-
183
-
184
- @not_implemented_for("directed")
185
- @not_implemented_for("multigraph")
186
- @nx._dispatchable
187
- def large_clique_size(G):
188
- """Find the size of a large clique in a graph.
189
-
190
- A *clique* is a subset of nodes in which each pair of nodes is
191
- adjacent. This function is a heuristic for finding the size of a
192
- large clique in the graph.
193
-
194
- Parameters
195
- ----------
196
- G : NetworkX graph
197
-
198
- Returns
199
- -------
200
- k: integer
201
- The size of a large clique in the graph.
202
-
203
- Examples
204
- --------
205
- >>> G = nx.path_graph(10)
206
- >>> nx.approximation.large_clique_size(G)
207
- 2
208
-
209
- Raises
210
- ------
211
- NetworkXNotImplemented
212
- If the graph is directed or is a multigraph.
213
-
214
- Notes
215
- -----
216
- This implementation is from [1]_. Its worst case time complexity is
217
- :math:`O(n d^2)`, where *n* is the number of nodes in the graph and
218
- *d* is the maximum degree.
219
-
220
- This function is a heuristic, which means it may work well in
221
- practice, but there is no rigorous mathematical guarantee on the
222
- ratio between the returned number and the actual largest clique size
223
- in the graph.
224
-
225
- References
226
- ----------
227
- .. [1] Pattabiraman, Bharath, et al.
228
- "Fast Algorithms for the Maximum Clique Problem on Massive Graphs
229
- with Applications to Overlapping Community Detection."
230
- *Internet Mathematics* 11.4-5 (2015): 421--448.
231
- <https://doi.org/10.1080/15427951.2014.986778>
232
-
233
- See also
234
- --------
235
-
236
- :func:`networkx.algorithms.approximation.clique.max_clique`
237
- A function that returns an approximate maximum clique with a
238
- guarantee on the approximation ratio.
239
-
240
- :mod:`networkx.algorithms.clique`
241
- Functions for finding the exact maximum clique in a graph.
242
-
243
- """
244
- degrees = G.degree
245
-
246
- def _clique_heuristic(G, U, size, best_size):
247
- if not U:
248
- return max(best_size, size)
249
- u = max(U, key=degrees)
250
- U.remove(u)
251
- N_prime = {v for v in G[u] if degrees[v] >= best_size}
252
- return _clique_heuristic(G, U & N_prime, size + 1, best_size)
253
-
254
- best_size = 0
255
- nodes = (u for u in G if degrees[u] >= best_size)
256
- for u in nodes:
257
- neighbors = {v for v in G[u] if degrees[v] >= best_size}
258
- best_size = _clique_heuristic(G, neighbors, 1, best_size)
259
- return best_size
@@ -1,71 +0,0 @@
1
- import networkx as nx
2
- from networkx.utils import not_implemented_for, py_random_state
3
-
4
- __all__ = ["average_clustering"]
5
-
6
-
7
- @not_implemented_for("directed")
8
- @py_random_state(2)
9
- @nx._dispatchable(name="approximate_average_clustering")
10
- def average_clustering(G, trials=1000, seed=None):
11
- r"""Estimates the average clustering coefficient of G.
12
-
13
- The local clustering of each node in `G` is the fraction of triangles
14
- that actually exist over all possible triangles in its neighborhood.
15
- The average clustering coefficient of a graph `G` is the mean of
16
- local clusterings.
17
-
18
- This function finds an approximate average clustering coefficient
19
- for G by repeating `n` times (defined in `trials`) the following
20
- experiment: choose a node at random, choose two of its neighbors
21
- at random, and check if they are connected. The approximate
22
- coefficient is the fraction of triangles found over the number
23
- of trials [1]_.
24
-
25
- Parameters
26
- ----------
27
- G : NetworkX graph
28
-
29
- trials : integer
30
- Number of trials to perform (default 1000).
31
-
32
- seed : integer, random_state, or None (default)
33
- Indicator of random number generation state.
34
- See :ref:`Randomness<randomness>`.
35
-
36
- Returns
37
- -------
38
- c : float
39
- Approximated average clustering coefficient.
40
-
41
- Examples
42
- --------
43
- >>> from networkx.algorithms import approximation
44
- >>> G = nx.erdos_renyi_graph(10, 0.2, seed=10)
45
- >>> approximation.average_clustering(G, trials=1000, seed=10)
46
- 0.214
47
-
48
- Raises
49
- ------
50
- NetworkXNotImplemented
51
- If G is directed.
52
-
53
- References
54
- ----------
55
- .. [1] Schank, Thomas, and Dorothea Wagner. Approximating clustering
56
- coefficient and transitivity. Universität Karlsruhe, Fakultät für
57
- Informatik, 2004.
58
- https://doi.org/10.5445/IR/1000001239
59
-
60
- """
61
- n = len(G)
62
- triangles = 0
63
- nodes = list(G)
64
- for i in [int(seed.random() * n) for i in range(trials)]:
65
- nbrs = list(G[nodes[i]])
66
- if len(nbrs) < 2:
67
- continue
68
- u, v = seed.sample(nbrs, 2)
69
- if u in G[v]:
70
- triangles += 1
71
- return triangles / trials