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

Dependency management #76

Open
meggart opened this issue Dec 14, 2021 · 2 comments
Open

Dependency management #76

meggart opened this issue Dec 14, 2021 · 2 comments

Comments

@meggart
Copy link
Collaborator

meggart commented Dec 14, 2021

To everyone interested in this package. I am currently working on implementing a Zarr backend for LMDB, which would introduce another dependency. There are many more possible backends and compressors and I was wondering how to decide if we should add one to the Zarr base package or to make an extra package that implements the backend in question. Is there already a need for something like a pure Zarr package that only has a few dependencies and where backends and compressors can be loaded on demand? Or shall we just continue adding dependencies as new backends are implemented. Is it an option to just wait until Julia gets a better optional dependency system than what Requires.jl currently offers? Any opinions and suggestions are very welcome.

@meggart
Copy link
Collaborator Author

meggart commented Apr 3, 2023

Starting with Julia 1.9 we will have the possibility to define optional dependencies and can potentially move some of our hard dependencies to the weakeps section. However, there still remains the question which compressors and backends should be available by default through using Zarr and which ones should be available only the respective module is loaded.

Currently we load AWSS3, HTTP, Blosc and Zlib by default and I have an unregistered LMDBStore package I would like to integrate somehow. In addition, there is a suggestion to make an fsspec-based store that is using PythonCall and some python deps in the background.

All suggestions how to organize this are welcome.

@agoodm
Copy link

agoodm commented Apr 3, 2023

In general I think it makes a lot of sense to make additional storage types beyond the most basic ones optional dependencies. I know zarr-python manages this through conditional imports.

I would say of the four you mentioned maybe AWSS3 could be moved to being optional, and likewise for any proposed fsspec compatible store.

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

No branches or pull requests

2 participants