Skip to content

Repository files navigation

Xpublish

Publish Xarray Datasets and DataTrees to the web

PyPI Conda PyPI - Python Version Binder

GitHub Workflow Status Documentation Status pre-commit.ci status

A quick example

Serverside: Publish an Xarray Dataset or DataTree through a REST API

ds.rest.serve(host="0.0.0.0", port=9000)
# or, for a hierarchical DataTree, the API is identical:
dt.rest.serve(host="0.0.0.0", port=9000)

Client-side: Connect to a published dataset

The published datasets can be accessed from various kinds of client applications, including any HTTP client. To explore the available endpoints, open http://0.0.0.0:9000/docs in a browser.

Why?

Xpublish lets you serve/share/publish Xarray Datasets and DataTrees via a web application.

The data and/or metadata can be exposed in various forms through pluggable REST API endpoints. Hierarchical data is supported natively — bare Datasets are wrapped in a single-node DataTree internally so the same routes, accessors, and plugins work whether you're serving a flat dataset or a deeply nested tree. Efficient, on-demand delivery of large datasets may be enabled with Dask on the server-side.

Xpublish's plugin ecosystem has capabilities including:

  • publish on-demand or derived data products
  • turning xarray objects into streaming services (e.g. OPeNDAP)
  • Zarr-compatible access via xpublish-zarr

How?

Under the hood, Xpublish is using a web app (FastAPI) that is exposing a REST-like API with builtin and/or user-defined endpoints. Additional endpoints can be added by installing or writing plugins.

Releases

Packages

Used by

Contributors

Languages