Skip to content

Add complete AbstractGraph API and LEMON algorithm dispatch - #25

Open
AJ0070 wants to merge 8 commits into
JuliaGraphs:mainfrom
AJ0070:fix/447
Open

Add complete AbstractGraph API and LEMON algorithm dispatch#25
AJ0070 wants to merge 8 commits into
JuliaGraphs:mainfrom
AJ0070:fix/447

Conversation

@AJ0070

@AJ0070 AJ0070 commented May 4, 2026

Copy link
Copy Markdown
Member

Major Changes:

  • LEMONGraph and LEMONDiGraph types implementing full AbstractGraph API
    (nv, ne, vertices, edges, has_vertex, has_edge, inneighbors, outneighbors, is_directed, edgetype)
  • O(1) fast conversion reuse via cached node/edge arrays at construction
  • GraphsInterfaceChecker.jl integration with formal API compliance validation
  • LEMON algorithm dispatch via LEMONAlgorithm marker type:
    • maxweightedperfectmatching(g, weights, ::LEMONAlgorithm)
    • dijkstra_shortest_paths(g, src, distmx, ::LEMONAlgorithm)
  • Extension support:
    • GraphsMatching.jl: minimum_weight_perfect_matching dispatch
    • GraphsOptim.jl: shortest_path dispatch
  • Relevant tests are added
  • Full documentation with usage examples

Fixes JuliaGraphs/Graphs.jl#447

AI Usage:
used GitHub copilot on auto mode.

Initially I generated skeleton with the AI. Implemented everything myself (used copilot whenever I felt complexity is high and I need to understand this more thoroughly). Then some key tests my self and asked copilot to give me complete test coverage so I don't miss out any edge cases (removed some unnecessary test it added). Then at last I asked him to update documentation according to the changes in the code (It added so many useless thing which I cleaned up).

@AJ0070

AJ0070 commented May 4, 2026

Copy link
Copy Markdown
Member Author

this was a large diff so took me good amount of time and was also parallely working on networkx issue

@AJ0070
AJ0070 marked this pull request as draft May 4, 2026 10:01
@codecov

codecov Bot commented May 4, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 94.98681% with 19 lines in your changes missing coverage. Please review.
✅ Project coverage is 94.30%. Comparing base (bf9deb5) to head (4c60dee).
⚠️ Report is 2 commits behind head on main.

Files with missing lines Patch % Lines
src/LEMONGraphs.jl 92.27% 19 Missing ⚠️
Additional details and impacted files
@@             Coverage Diff             @@
##             main      #25       +/-   ##
===========================================
+ Coverage   80.95%   94.30%   +13.34%     
===========================================
  Files           1        3        +2     
  Lines          21      386      +365     
===========================================
+ Hits           17      364      +347     
- Misses          4       22       +18     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@AJ0070
AJ0070 marked this pull request as ready for review May 4, 2026 10:52
@AJ0070

AJ0070 commented May 4, 2026

Copy link
Copy Markdown
Member Author

failures are same as on main

@AJ0070

AJ0070 commented May 4, 2026

Copy link
Copy Markdown
Member Author

@Krastanov Can I get review on this?

@AJ0070
AJ0070 marked this pull request as draft May 5, 2026 13:28
@AJ0070

AJ0070 commented May 5, 2026

Copy link
Copy Markdown
Member Author

WIP: I will ping Krastanov once this is ready for review. this still requires good amount of work.

@AJ0070

AJ0070 commented Jun 30, 2026

Copy link
Copy Markdown
Member Author

@Krastanov lmk when I can continue this.

@AJ0070
AJ0070 marked this pull request as ready for review July 30, 2026 05:02
@AJ0070

AJ0070 commented Aug 2, 2026

Copy link
Copy Markdown
Member Author

@Krastanov gentle ping!

@AJ0070

AJ0070 commented Aug 8, 2026

Copy link
Copy Markdown
Member Author

@Krastanov

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

A reliable idiomatic wrapper for the C++ library LEMON [$400]

1 participant