-
Notifications
You must be signed in to change notification settings - Fork 440
Add Ladybug (successor to Kuzu) as a target #1487
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
|
thanks @prrao87 !! will get back on this shortly! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The implementation seems exactly the same as Kuzu's. We only need to keep one of them.
One way is to keep this new ladybug.rs, but add a new field target_name: str to Factory. We can pass in the name to the register() function with "Ladybug" or "Kuzu" separately. Then we get the same code working for both targets.
What do you think?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Given its read-only status, in the next few months it would be dangerous to run Kuzu as security problems are discovered in its dependencies. I expect the usage to shift to one of its forks such as ladybug.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I agree, this is why i strongly recommend removing Kuzu from the list and only using Ladybug in place of it (as Ladybug is identical to Kuzu but is maintained and being improved).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Makes sense! I think we can cleanup Kuzu (but leave its doc for now, with a single line to point to Ladybug; and also leave type aliases in code (e.g. KuzuConnection = LadybugConnection). Do you want to do this cleanup in this PR? (the history will look nicer as it'll clearly show ladybug modules coming from kuzu)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@georgeh0 just so I'm clear, are you suggesting to update the Kuzu file and remove the new file ladybug.rs, so that the git history shows that Kuzu was updated to Ladybug? I can do that, just want to be sure I understood.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi @prrao87, I'm suggesting:
- Keep all the new Ladybug files, and remove all Rust code for kuzu (this will make Git detect it as a "file move", which leaves the Git history clean)
- In
targets/_engine_builtin_specs.py, replace current Kuzu types with type aliases to Ladybug types - For the doc
kuzu.md, leave a single line to say it's replaced by Ladybug and point to there
(there's also Kuzu examples, should be migrated to ladybug too, but with the alias they won't be broken, so we can migrate it later)
adsharma
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you @prrao87!
|
|
||
| # Ladybug | ||
|
|
||
| Exports data to a [Ladybug](https://github.com/LadybugDB/ladybug) graph database. Ladybug is a maintained fork of Kuzu that carries forth the original vision of Kuzu, with added functionality for the lakehouse ecosystem. Just like Kuzu, Ladybug follows the structurd property graph model and functions as a fast, embedded database with a permissive (MIT) license. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
structured
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Given its read-only status, in the next few months it would be dangerous to run Kuzu as security problems are discovered in its dependencies. I expect the usage to shift to one of its forks such as ladybug.
Motivation and context
Kuzu was an open-source (MIT) licensed property graph database, but the project was archived in October 2025. This PR introduces Ladybug, which is a fork of Kuzu (and an identical API) as a target for users who may have wanted to use a locally running embedded graph database built for performance.
Ladybug is maintained by @adsharma and there is a lot more functionality planned for greater interoperability with the lakehouse ecosystem, so CocoIndex users can also benefit.
Breaking change?
No.
Description of the changes
This PR adds a new Ladybug target that is a drop‑in Kuzu replacement by reusing the same Cypher API server integration, plus Python spec/declaration definitions for users to access in CocoIndex.
High-level summary of changes
COCOINDEX_SKIP_UV=1env variable switch inrun_cargo_test.shto keep Python env vars intact (if the local uv-managed Python doesn’t align with the version expected by the tests) when running cargo test.Detailed list
ladybug.rs.mod.rs.registration.rs.reqwest_clientis moved intotargets::kuzu::register, so we clone it to reuse the same client for Ladybug registration._engine_builtin_specs.py.ladybug.md(includes pip install real_ladybug note).index.md.sidebars.ts.kuzu.md.test_targets_specs.py.uv runfor Rust tests viaCOCOINDEX_SKIP_UV=1inrun_cargo_test.sh.To do