Skip to content

Rethinking Zarr's core dependencies #2391

Closed
@jhamman

Description

@jhamman

I'd like to open the conversation about what Zarr's core dependencies are for 3.0. Currently, this looks like:

dependencies = [
'asciitree',
'numpy>=1.25',
'fasteners',
'numcodecs>=0.10.2',
'fsspec>2024',
'crc32c',
'typing_extensions',
'donfig',
]

Some of these are not used anymore (asciitree and fasteners) so those can safely go.

Then there is fsspec and crc32c. These are only needed for the RemoteStore and ShardingCodec, respectively. What do we think about making these optional?

One proposed diff in our dependencies would look something like:

 dependencies = [
-    'asciitree',
     'numpy>=1.25',
-    'fasteners',
-    'numcodecs>=0.10.2',
-    'fsspec>2024',
-    'crc32c',
+    'numcodecs>=0.12',
     'typing_extensions',
     'donfig',
 ]

 [project.optional-dependencies]
+remote = [
+    "fsspec",
+]
+sharding = [
+    "crc32c",
+]

Notes:

  • fsspec is pure python with no dependencies so is not a particular heavy dependency.
  • crc32c could potentially move into numcodecs, right?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions