dsss.store.Store#
- class dsss.store.Store(hook: Mapping[str, Callable | Iterable[Callable]] | None = None, **kwargs)#
Bases:
ABCAbstract class for key-value storage of SDMX artefacts.
Subclasses must implement
delete(),get(),iter_keys(),set(), andupdate().- abstract __init__(hook: Mapping[str, Callable | Iterable[Callable]] | None = None, **kwargs) None#
Initialize the store instance.
Subclasses must call this parent class method to initialize hooks.
Parameters#
- hook :
Hooks for the instance. Mapping from
hook_idsto either single callables, or iterables of callables.
Methods
__init__([hook])Initialize the store instance.
assign_version(obj, **kwargs)Assign a version to obj subsequent to any existing versions.
delete(key)Delete an object given its key.
get(key)Return an object given its key.
invoke_hooks(kind, *args, **kwargs)Invoke each callable in
hookwithhook_idkind.Iterate over stored keys.
key()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 the Store from another obj.
Attributes
- assign_version(obj, **kwargs) None#
Assign a version to obj subsequent to any existing versions.
See also#
sdmx.model.version.increment
- abstract delete(key: str) bool#
Delete an object given its key.
Raises#
- KeyError
If the object does not exist.
- abstract get(key: str) AnnotableArtefact#
Return an object given its key.
Raises#
- KeyError
If the object does not exist.
- hook: MutableMapping[str, List[Callable]]#
Mapping from
hook_idsto lists of hooks. Hooks are per-instance.
- key(obj) str#
- key(obj: DataType)
- key(obj: DataType)
- key(obj: MaintainableArtefact)
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,BaseMetadataSetExample:
"data-FOO:DSD_ID-adaa503c71ac9574"The key consists of:
"data-"or"metadata-", based on the class of obj;the
IdentifiableArtefact.idof the maintainer of either (a) theDataflowthat describes obj or if not defined (b) of theDataStructurethat structures obj;the ID of the (Meta)Dataflow or (b) (Meta)DataStructure itself; and
a hash of the
Observationkeys.
- 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.
- klass
- 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().
- resolve(obj, attr: str | None = None) MaintainableArtefact#
Resolve an external reference in a named attr of obj.
- update_from(obj: Store, **kwargs) None#
- update_from(p: Path, *, ignore: Iterable[Callable[[Path], bool]] | None = None)
- update_from(msg: DataMessage)
- update_from(msg: StructureMessage)
Update the Store from another obj.
Parameters#
- obj :
Any of:
pathlib.Pathof an.xmlfile or directory —the given file, or all.xmlfiles in the directory and any subdirectories, are read and their contents added.another
Storeinstance —all contents of the other store are added.a
DataMessage—allBaseDataSetin the message are read and stored.a
StructureMessage—all SDMX structures in the message are read and stored.
Other Parameters#
- ignoreoptional
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.