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.

Compared to the parent class, this implementation ensures that the assigned version is str. This is needed because sdmx currently fails to write Version to SDMX-ML.

Todo

Remove this override once the issue is fixed in sdmx.

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.