Skip to main content

nomad-fsspec

An fsspec filesystem for the raw data of NOMAD, the materials science repository. It is read-only.

import fsspec

fs = fsspec.filesystem("nomad")  # https://nomad-lab.eu/prod/v1 by default
fs.ls("/")  # two folders: /datasets and /uploads
fs.ls("/datasets")  # public datasets
fs.ls("/datasets/wWgAnNZNQxOHLf97H62dgw", detail=False)  # the uploads of one dataset, by id
fs.upload_names(["Xa2LB__ESiKu-odRBPJhjA"])  # {"Xa2LB__ESiKu-odRBPJhjA": "nomad-demo-data.zip"}
fs.get_file(
    "/datasets/wWgAnNZNQxOHLf97H62dgw/Xa2LB__ESiKu-odRBPJhjA/nomad-demo-data/BrK_svSe/TBCC006.ABC/vasprun.xml.relax2",
    "vasprun.xml",
)

The top level has two folders, so a path means the same thing with or without a token:

  • /datasets/<dataset id>/<upload id>/<path inside the upload> for public datasets. Datasets have their names in display_name. Uploads inside a dataset are listed by id, since naming all uploads of a large dataset at once makes NOMAD time out; upload_names looks names up 8 at a time and keeps them, and search_uploads finds the ids of uploads by name.
  • /uploads/<upload id>/<path inside the upload> for your uploads and those shared with you, published or not, as NOMAD's uploads page lists them. Listing /uploads needs a token. Published uploads can be read through it without one.
fs = fsspec.filesystem("nomad", token="...")
fs.ls("/uploads")  # your uploads, with their names in display_name

A published upload with more than 300 entries is listed from the central directory of its ZIP, which takes one or two byte ranges of /uploads/<upload id>/raw without the token, even for uploads with hundreds of thousands of files. NOMAD's own folder listing adds up every size below a folder and can take a minute on such uploads. The listing is kept for the life of the process and shared, since published uploads do not change: about 19 bytes per file, so 7 MB for the largest public upload, and up to 64 MB in all, the oldest dropped first. Smaller published uploads are listed folder by folder, unless NOMAD takes more than 5 seconds to answer, which it can the first time it reads an upload; their ZIP is then read instead. Unpublished and embargoed uploads are always listed folder by folder. NOMAD allows one new connection to the ZIP route per client every 5 seconds; a busy answer is retried.

A personal access token with the uploads:read scope is enough. To use a NOMAD Oasis, pass base_url:

fs = fsspec.filesystem("nomad", base_url="https://my-oasis.example.org/nomad-oasis")

NOMAD's rate limits (HTTP 429 and 503) are retried. Redirects are not followed: a base URL that redirects is reported with the address it redirects to.

Development

uv sync
uv run pytest -m "not live"  # unit tests
uv run pytest -m live        # a few calls to nomad-lab.eu
uv run ruff check . && uv run ruff format --check . && uv run mypy src

License

MIT

Metadata

Release files for nomad-fsspec 0.4.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for nomad-fsspec 0.4.2
File Size Uploaded
nomad_fsspec-0.4.2.tar.gz 20.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for nomad-fsspec 0.4.2
File Interpreter ABI Platform
nomad_fsspec-0.4.2-py3-none-any.whl Python 3 none any Details

Total release size: 36.3 kB

Release files / nomad_fsspec-0.4.2.tar.gz

Download URL nomad_fsspec-0.4.2.tar.gz
Size 20.7 kB
Tags Source
SHA-256 checksum
How to use checksums
537b690ccda7aa178375b8f31b63b6b48465260a00a386803d292c740a6e99db
BLAKE2b-256 checksum
How to use checksums
b10bd29bef98342ba01800a5b9569e102a385c543b616b01d4c0d2a16400be69
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.

Transparency log

Release files / nomad_fsspec-0.4.2-py3-none-any.whl

Download URL nomad_fsspec-0.4.2-py3-none-any.whl
Size 15.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d3586c6d3bbf42856c2ffe7c138ea0180f2e6a1a1530f3eee615691097654215
BLAKE2b-256 checksum
How to use checksums
7f72d02b907feee20e52f96f93765c9958d9b13c769bc5cfac29bd7f67d09268
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.

Transparency log

Release history Release notifications | RSS feed

0.4.3

2 release files

This release

0.4.2 This release

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page