httk.core.dataset_loader

Attributes

DecodeObjectCallback

Callback invoked as (dict_obj, jsonld_url) that returns the value to use in place of

Classes

DatasetRecord

Read-only attribute and mapping view over a dict[str, Any].

DatasetMeta

Describe header metadata extracted from a structured JSON-LD document.

DatasetLoader

Lazy loader for httk dataset files, resolved only when data is first accessed.

Module Contents

type httk.core.dataset_loader.DecodeObjectCallback = Callable[[dict[str, Any], str], Any][source]

Callback invoked as (dict_obj, jsonld_url) that returns the value to use in place of dict_obj (return the input unchanged to decline).

class httk.core.dataset_loader.DatasetRecord(data)[source]

Read-only attribute and mapping view over a dict[str, Any].

Top-level keys are reachable both as attributes (record.name) and as items (record["name"]); the wrapped values are the plain parsed JSON and are not themselves wrapped. Supports iteration over keys, len(), in, and keys().

Parameters:

data (dict[str, Any]) – The parsed top-level object exposed by this view.

keys()[source]

Return a dynamic view of the record’s top-level keys.

Returns:

The wrapped mapping’s keys view.

Return type:

collections.abc.KeysView[str]

class httk.core.dataset_loader.DatasetMeta[source]

Describe header metadata extracted from a structured JSON-LD document.

Parameters:
  • context – The raw document context.

  • id – The document identifier, if present.

  • type – The document type, if present.

  • header – Remaining top-level header fields.

  • dataset_ids – Dataset names mapped to their identifiers.

  • fields – Dataset names mapped to their field property URLs.

context: dict[str, Any][source]

The raw @context object.

id: str | None[source]

The document @id, or None if absent.

type_: str | None[source]

The document @type, or None if absent (trailing underscore avoids the builtin type).

header: dict[str, Any][source]

All remaining top-level keys except data, indicies, and @-keys (titles, creator, license, provenance, …).

dataset_ids: dict[str, str][source]

Mapping of dataset name to its @id.

fields: dict[str, dict[str, str]][source]

Mapping of dataset name to a mapping of field name to its property URL.

class httk.core.dataset_loader.DatasetLoader(identifier, source, decode_object=None, **hints)[source]

Lazy loader for httk dataset files, resolved only when data is first accessed.

A DatasetLoader is a declare-time placeholder: constructing it records its arguments and performs no I/O. The source is read the first time data, meta, or index is accessed. Files are either plain JSON (any JSON value is exposed as data with meta/index set to None) or a structured JSON-LD document (with @context, header fields, data, and optional indicies) whose header is exposed via meta, datasets via data.<name>, and lookup indices via index.<name>.

Loaders that share an identifier deduplicate through a class-level registry: the first load wins, and later loaders reusing that identifier return the same result while their source and decode_object arguments are ignored. Keeping identifiers unique is the caller’s responsibility. Not thread-safe.

Format is resolved from the source name after stripping any compression suffix: a .json name (e.g. data.json or data.json.gz) is parsed as JSON; any other recognizable suffix raises ValueError; a source with no determinable name is treated as JSON. Compression is handled transparently by the stream layer, so .json.gz and similar load directly. A str/Path source is interpreted as a filename unless its scheme marks it as a URL (http, https, ftp, file); bare network URLs are refused at read time, so pass kind="url" or a urllib.request.Request. Pass kind="content" for literal content or kind="filename" to force a filename interpretation.

Example

symmetry_basics = DatasetLoader(“symmetry_basics”, “data/spacegroup_symbols.json”) spacegroups = symmetry_basics.data.spacegroups # first access triggers the load

Parameters:
  • identifier (str) – The deduplication key for this load.

  • source (httk.core.datastream.TextstreamLike) – The filename, URL-like stream, request, or literal content to read.

  • decode_object (DecodeObjectCallback | None) – An optional callback for JSON-LD objects identified by context URLs.

  • **hints (Any) – Stream interpretation hints such as kind.

property data: Any[source]

Return the lazily loaded dataset value.

property meta: DatasetMeta | None[source]

Return structured-document metadata, or None for plain JSON.

property index: DatasetRecord | None[source]

Return structured-document lookup indices, or None when absent.