eegdash.nemar_backend module#

Experimental, metadata-only NEMAR backend (not a recording client).

Uses the same neuroschema field mappings as the ingestion adapter, but deliberately retains unknown modalities/species/ages instead of its ingestion defaults. The records.json fast path and nemar-py remain responsible for signal metadata and retrieval; neither implies parity with EEGDash’s primary-file record contract.

exception eegdash.nemar_backend.NemarContractError[source]

Bases: RuntimeError

Upstream metadata cannot satisfy the supported contract safely.

class eegdash.nemar_backend.NemarMetadataClient[source]

Bases: object

Public discovery only; explicit canonical IDs, no automatic failover.

Requests have 5s connect/15s read timeouts, a 30s streaming deadline, a 2 MiB decoded body cap and no retries or redirects. Listings allow at most 1000 documents (five 200-document pages). They are live views, not snapshot-consistent exports. Errors never return a partial list.

API_URL = 'https://api.nemar.org'
DATA_URL = 'https://data.nemar.org'
MAX_BYTES = 2097152
count_documents(*args, **kwargs)[source]
find(*args, **kwargs)[source]
find_datasets(query=None, limit=1000)[source]

List up to limit datasets, or fetch one exact canonical dataset ID.

Only {} / None / {‘dataset_id’: ‘nmNNNNNN’ or ‘onNNNNNN’} is supported. No Mongo filters, source aliases, fuzzy search, record counts or writes.

find_one(*args, **kwargs)[source]
get_dataset(dataset_id)[source]

Read current rich metadata, preserving its reported source snapshot.

The metadata endpoint is mutable; version DOIs do not make the document an immutable historical snapshot. No historical metadata claim is made.

insert_many(*args, **kwargs)[source]
insert_one(*args, **kwargs)[source]
update_dataset(*args, **kwargs)[source]
update_many(*args, **kwargs)[source]
upsert_many(*args, **kwargs)[source]
exception eegdash.nemar_backend.NemarUnsupportedOperation[source]

Bases: NotImplementedError

An operation needs EEGDash semantics not supplied by this backend.