transport_data.store.UnionStore

class transport_data.store.UnionStore(config: transport_data.config.Config)[source]

Bases: UnionStore

A store that maps between a LocalStore and Registry.

This class extends dsss.store.UnionStore with the following behaviour:

__init__(config: transport_data.config.Config) None

Initialize the store instance.

Subclasses must call this parent class method to initialize hooks.

Parameters:

hook – Hooks for the instance. Mapping from hook_ids to either single callables, or iterables of callables.

Methods

__init__(config)

Initialize the store instance.

add_to_registry(urn)

Copy data for urn from LocalStore to the Registry.

assign_version(obj, **kwargs)

Assign a version to obj subsequent to any existing versions.

clone()

Clone the underlying Registry.

delete(key)

Delete an object given its key.

get(key)

Return an object given its key.

get_store_id(key)

Return the ID of the store that should be used for obj.

invoke_hooks(kind, *args, **kwargs)

Invoke each callable in hook with hook_id kind.

iter_keys()

Iterate over stored keys.

key(obj)

Construct a key for obj.

list([klass, maintainer, id, version])

List matching keys.

list_versions(klass, maintainer, id)

Return all versions of a MaintainableArtefact.

resolve(obj[, attr])

Resolve an external reference in a named attr of obj.

set(obj)

Store obj and return its key.

update(obj)

Update obj and return its key.

update_from(obj, **kwargs)

Update the Store from another obj.

Attributes

hook_ids

IDs of hooks.

store

Mapping from store IDs to instances of Store.

maintainer_store

Mapping from maintainer IDs to keys of store.

default

ID of the default store.

hook

Mapping from hook_ids to lists of hooks.

add_to_registry(urn: str)

Copy data for urn from LocalStore to the Registry.

assign_version(obj, **kwargs) None

Assign a version to obj subsequent to any existing versions.

clone()

Clone the underlying Registry.

Temporary version to work around khaeru/dsss#19. This is identical to dsss.store.GitStore.clone(), except only certain paths are checked out.

default: str

ID of the default store.

delete(key)

Delete an object given its key.

Raises:

KeyError – If the object does not exist.

get(key: str)

Return an object given its key.

Compared to the parent class, this implementation:

  • Expands key from a partial URN (e.g. “AgencyScheme=TDCI:TDCI(1.0.0)”) to a full URN.

  • Handles key that is a partial URN without a specific version, e.g. “AgencyScheme=TDCI:TDCI”. In this case, the greatest version of the referenced artefact is returned.

get_store_id(key: str) str

Return the ID of the store that should be used for obj.

hook: MutableMapping[str, List[Callable]]

Mapping from hook_ids to lists of hooks. Hooks are per-instance.

hook_ids: Tuple[str, ...] = ('before set',)

IDs of hooks. Subclasses may extend this tuple.

invoke_hooks(kind: str, *args, **kwargs) None

Invoke each callable in hook with hook_id kind.

iter_keys()

Iterate over stored keys.

The keys are not ordered.

key(obj) str

Construct a key for obj.

Supported obj classes include:

MaintainableArtefact.

Example: "urn:sdmx:org.sdmx.infomodel.codelist.Codelist=FOO:CL(1.0)"

The key is the full IdentifiableArtefact.urn.

BaseDataSet, BaseMetadataSet

Example: "data-FOO:DSD_ID-adaa503c71ac9574"

The key consists of:

  • "data-" or "metadata-", based on the class of obj;

  • the IdentifiableArtefact.id of the maintainer of either (a) the Dataflow that describes obj or if not defined (b) of the DataStructure that structures obj;

  • the ID of the (Meta)Dataflow or (b) (Meta)DataStructure itself; and

  • a hash of the Observation keys.

list(klass: type | None = None, maintainer: str | None = None, id: str | None = None, version: str | None = None) List[str]

List matching keys.

Only keys that match the given parameters (if any) are returned.

Parameters:
  • klass (AnnotableArtefact) – Class of artefact.

  • maintainer – ID of the maintainer of an artefact or its (meta)dataflow.

  • id – ID of an artefact or its (meta)dataflow.

  • version – Version of an artefact.

list_versions(klass: type, maintainer: str, id: str) Tuple[str, ...]

Return all versions of a MaintainableArtefact.

The klass, maintainer, and id arguments are the same as for list().

maintainer_store: MutableMapping[str, str]

Mapping from maintainer IDs to keys of store.

resolve(obj, attr: str | None = None) MaintainableArtefact

Resolve an external reference in a named attr of obj.

set(obj)

Store obj and return its key.

If obj exists, KeyError is raised.

store: Mapping[str, Store]

Mapping from store IDs to instances of Store.

update(obj)

Update obj and return its key.

update_from(obj: Store, **kwargs) None

Update the Store from another obj.

Parameters:
  • obj

    Any of:

    • pathlib.Path of an .xml file or directory —the given file, or all .xml files in the directory and any subdirectories, are read and their contents added.

    • another Store instance —all contents of the other store are added.

    • a DataMessage —all BaseDataSet in the message are read and stored.

    • a StructureMessage —all SDMX structures in the message are read and stored.

  • ignore (optional) – if obj is a path, ignore is an optional iterable of callables. Each of the callables in ignore is applied to every file path to be read; if the any of them returns True, the file is skipped.

Raises:

NotImplementedError – for any obj other than the above.