Xpublish#

Useful links: Installation | Source Repository | Issue Tracker | Q&A Support | Slack Channel

Xpublish is#

A quick way to serve a single Xarray dataset over HTTP using FastAPI

Get started with ds.rest.serve() to explore serving data with Xpublish

An extendable core of a dataset server

By building a server based around Xarray datasets, we can build on top of the rapid progress of Xarray and the greater PyData ecosystem.

A community and ecosystem of plugins, servers, and their builders and users

Explore the Xpublish ecosystem.

I want to#

Getting started

New to Xpublish? Check out the getting started guides. They contain an introduction to Xpublish’s main concepts.

User guide

The user guide contains in-depth information on the key concepts of Xpublish with useful background information and explanation.

API Reference

The reference guide contains a detailed description of the Xpublish API/ The reference describes how the methods work and which parameters can be used. It assumes that you have an an understanding of the key concepts.

Developer guide

Saw a typo in the documentation? Want to improve existing functionalities? The contributing guidelines will guide you through the process of improving Xpublish.

Xpublish lets you easily publish Xarray Datasets via a REST API.#

You can run a short example application in a live session here: Binder

On the server-side, one or more datasets can be published using the xpublish.Rest class or the xarray.Dataset.rest accessor, e.g.,

ds.rest.serve(host="0.0.0.0", port=9000)

Those datasets can be accessed from various kinds of client applications, e.g., from within Python using Zarr and fsspec.

import xarray as xr
import zarr
from fsspec.implementations.http import HTTPFileSystem

fs = HTTPFileSystem()
http_map = fs.get_mapper("http://0.0.0.0:9000/zarr/")

# open as a zarr group
zg = zarr.open_consolidated(http_map, mode="r")

# or open as another Xarray Dataset
ds = xr.open_zarr(http_map, consolidated=True)

Or to explore other access methods, open http://0.0.0.0:9000/docs in a browser.

Feedback#

If you encounter any errors or problems with Xpublish, please open an issue on GitHub, or ask questions in Github Discussions or on our Slack Channel.