Skip to content
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

Decide on strategy for rust/PyO3 dependencies #389

Closed
cmungall opened this issue Dec 6, 2022 · 1 comment
Closed

Decide on strategy for rust/PyO3 dependencies #389

cmungall opened this issue Dec 6, 2022 · 1 comment
Labels
duplicate This issue or pull request already exists

Comments

@cmungall
Copy link
Collaborator

cmungall commented Dec 6, 2022

This issue is for general discussion of strategies for depending on code written in Rust

Our general strategy is:

  • if a package is well-supported on PyPI and can be installed universally via pip install, we will consider adding as a dependency
  • if a package requires complex installation, we make this either an optional dependency or a plugin. oakx-grape falls into this category

pronto/fastobo falls into the first category (we had a hiccup where this dependency introduced problems for arm64 users, but we think this is resolved - fastobo/fastobo-py#313), so we should keep pronto as a core dependency

Some future dependencies we may want to add

  1. pyoxigraph (for loading sqlite)
  2. horned-owl
  3. whelk.rs (for calculating RG)
  4. implementation of functionality for semsim (independent of the more complex embiggen chipset-dependent stuff)

Currently pyoxigraph fulfils the criteria above (there are robust pyo3 bindings with wheels for many platforms), so we may consider adding this as a dependency. this would likely be a transitive dependency, via semsql - see:

as of yet, neither py-horned-owl nor whelk.rs have robust pyo3 bindings, so these are not considered for now, but are on the roadmap

before committing to the pyoxigraph dependency, we should discuss any potential pitfalls, our goal is make OAK easily accessible and easy to install.

An alternative is to commit to a more pure python core. But note that libraries such as rdflib are inherently slow, so we would be committing to doing certain kinds of tasks outside of OAK, either via pre-processing, or perhaps via services or py4j -- which comes with its own issues.

@cmungall
Copy link
Collaborator Author

cmungall commented Dec 7, 2022

Duplicate with

@cmungall cmungall closed this as completed Dec 7, 2022
@cmungall cmungall added the duplicate This issue or pull request already exists label Dec 7, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
duplicate This issue or pull request already exists
Projects
None yet
Development

No branches or pull requests

1 participant