Repository navigation
A reliable idiomatic wrapper for the C library igraphs [$400] #446
Description
Activity
- changed the title
[-]A reliable idiomatic `igraphs` wrapper [$400][/-][+]A reliable idiomatic wrapper for the C library `igraphs` [$400][/+]on Jul 24, 2025 - addedbountyThere is an award for solving this issue.There is an award for solving this issue.
on Jul 29, 2025 BenraouaneSoufiane commented
on Aug 1, 2025 on Aug 1, 2025 · Hidden as outdatedshow commentMore actionsBenraouaneSoufiane commented
on Aug 1, 2025 on Aug 1, 2025 · Hidden as outdatedshow commentMore actionsKrastanov commented
on Aug 1, 2025 on Aug 1, 2025 · Hidden as outdatedAuthorshow commentMore actionsKrastanov commented
on Aug 1, 2025 on Aug 1, 2025 · Hidden as outdatedAuthorshow commentMore actionsBenraouaneSoufiane commented
on Aug 1, 2025 on Aug 1, 2025 · Hidden as outdatedshow commentMore actionsKrastanov commented
on Aug 1, 2025 on Aug 1, 2025 · Hidden as outdatedAuthorshow commentMore actionsBenraouaneSoufiane commented
on Aug 1, 2025 on Aug 1, 2025 · Hidden as outdatedshow commentMore actionsBenraouaneSoufiane commented
on Aug 16, 2025 on Aug 16, 2025 · Hidden as outdatedshow commentMore actionsKrastanov commented
on Aug 16, 2025 on Aug 16, 2025 · Hidden as outdatedAuthorshow commentMore actionsKrastanov commented
on Sep 12, 2025 on Sep 12, 2025 · Hidden as outdatedAuthorshow commentMore actionsBenraouaneSoufiane commented
on Sep 12, 2025 on Sep 12, 2025 · Hidden as outdatedshow commentMore actionsKrastanov commented
on Sep 30, 2025 on Sep 30, 2025 · Hidden as outdatedAuthorshow commentMore actionsHi @Krastanov, I've submitted two PRs to IGraphs.jl addressing the bounty requirements:
PR 1: Complete Graphs.jl AbstractGraph API
- Implements
edges,outneighbors/inneighbors,add_edge!,add_vertex!,rem_vertex!,copy - Fixes a 0-indexing bug in
has_edge - Adds
GraphsInterfaceChecker.jlto the test suite (both mandatory and mutation interfaces pass) - 305 tests pass (up from 267)
PR 2: Add IGraphAlg dispatch for connectivity algorithms
- Adds
IGraphAlgdispatch forconnected_components,is_connected,articulation,bridges - Output matches Graphs.jl conventions
- All tested against reference implementations
Both PRs are self-contained with clean git histories as requested. Happy to iterate based on review feedback.
- Implements
Hi @Krastanov this issue and its pr is becoming stale , can we just round it up ?
Not a claim, just a heads up that I put one concrete fix up as JuliaGraphs/IGraphs.jl#55, since it is a bug rather than a design question.
Graphs.has_edgehands one-based vertices to the zero-basedget_eid, so onpath_graph(4)it raisesIGraphExceptionfor the real edge 3 to 4, andhas_edge(g, 0, 1)returnstruefor a vertex that does not exist. The current suite does not see it because the answer is accidentally right whenever the two vertices are consecutive, which is every pair in a path graph and in the random regular graphs used intest_consistency.jl.Worth flagging for anyone else working here: the
jet=truelane is red on every pull request in the repository right now, the dependabot ones included, becausetest/test_jet.jlpassestarget_defined_modules = trueand current JET rejects that option while constructing the analyzer, before any package code is read. It is a one line change, and @Krastanov asked for the same update on IGraphs.jl#43 in March.@Krastanov bumping this up again to finish up on the pr
A reliable idiomatic
igraphswrapper [$400]The JuliaGraphs/IGraphs.jl package already exists and provides a simple low-level wrapper for the igraph C library. A lot of this work probably will not be directly in the Graphs.jl repository.
Graphs.some_interesting_property(::AbstractGraph)there should now be a new method defined in IGraphssome_interesting_property(g::AbstractGraph, ::IGraphAlgorithm)that dispatches to the C implementation. It should convert thegargument to IGraph if necessary.Required skills: familiarity with the Graphs.jl API and understanding of the Julia-C interface
Reviewer: any Graphs.jl member with merge rights
Duration: 3 months
Payout procedure:
The Funding for these bounties comes from the National Science Foundation and from the NSF Center for Quantum Networks. The payouts are managed by the NumFOCUS foundation and processed in bulk once every two months. If you live in a country in which NumFOCUS can make payments, you can participate in this bounty program.
Click here for more details about the bug bounty program.
Bug bounty logistic details (click to expand)
To claim exclusive time to work on this bounty either post a comment here or message skrastanov@umass.edu with:
If you want to, you can work on this project without making a claim, however claims are encouraged to give you and other contributors peace of mind. Whoever has made a claim takes precedence when solutions are considered.
You can always propose your own funded project, if you would like to contribute something of value that is not yet covered by an official bounty.