data_collections_api package

Subpackages

Submodules

data_collections_api.dumpers module

Dumper/loader functions.

data_collections_api.dumpers.Dumper

Dumping function protocol.

alias of Callable[[Any, TextIO], None]

class data_collections_api.dumpers.Format(dumper: Dumper, loader: Loader, str_loader: StrLoader)[source]

Bases: NamedTuple

Set of operations for a given loader format.

dumper: Callable[[Any, TextIO], None]

Dumper for format.

loader: Callable[[Path | str], dict[str, Any]]

Loader for format.

str_loader: Callable[[str], dict[str, Any]]

String loader for format.

data_collections_api.dumpers.Formats

Valid formats.

alias of Literal[‘json’, ‘yaml’, ‘ruamel’, ‘pyyaml’]

data_collections_api.dumpers.Loader

Loading function protocol.

alias of Callable[[Path | str], dict[str, Any]]

data_collections_api.dumpers.SUPPORTED_FORMATS: dict[str, Format] = {'json': (<function _json_dumper>, <function _json_loader>, <function _json_str_loader>), 'pyyaml': (<function _pyyaml_dumper>, <function _pyyaml_loader>, <function _pyyaml_str_loader>), 'ruamel': (<function _ruamel_dumper>, <function _ruamel_loader>, <function _ruamel_str_loader>)}

Currently supported dumpers.

data_collections_api.dumpers.StrLoader

String loading function protocol.

alias of Callable[[str], dict[str, Any]]

data_collections_api.dumpers.get_dumper(fmt: Literal['json', 'yaml', 'ruamel', 'pyyaml'])[source]

Get appropriate dumper for unified interface.

Parameters:
fmtFormats

Format to handle.

Returns:
Dumper

Dumping function.

See also

SUPPORTED_FORMATS

Acceptable values for fmt.

data_collections_api.dumpers.get_load_dump(fmt: Literal['json', 'yaml', 'ruamel', 'pyyaml'], *, loader: bool, string: bool = False) Callable[[Any, TextIO], None] | Callable[[Path | str], dict[str, Any]] | Callable[[str], dict[str, Any]][source]

Get appropriate loader/dumper for unified interface.

Parameters:
fmtstr

Format to handle.

loaderbool

Whether to load loader.

stringbool, optional

Whether for string or file.

Returns:
Dumper or Loader or StrLoader

Dumping/Loading function.

Raises:
ValueError

Invalid fmt provided.

ImportError

No valid YAML dumper and yaml requested.

NotImplementedError

String dumper requested.

See also

SUPPORTED_FORMATS

Acceptable values for fmt.

data_collections_api.dumpers.get_loader(fmt: Literal['json', 'yaml', 'ruamel', 'pyyaml'])[source]

Get appropriate loader for unified interface.

Parameters:
fmtFormats

Format to handle.

Returns:
Loader

Loading function.

See also

SUPPORTED_FORMATS

Acceptable values for fmt.

data_collections_api.dumpers.get_str_loader(fmt: Literal['json', 'yaml', 'ruamel', 'pyyaml'])[source]

Get appropriate loader for unified interface.

Parameters:
fmtFormats

Format to handle.

Returns:
StrLoader

String loading function.

See also

SUPPORTED_FORMATS

Acceptable values for fmt.

data_collections_api.dumpers.guess_format(path: Path) Literal['json', 'yaml', 'ruamel', 'pyyaml'][source]
data_collections_api.dumpers.guess_format(path: Path, *, raise_on_invalid: Literal[True]) Literal['json', 'yaml', 'ruamel', 'pyyaml']
data_collections_api.dumpers.guess_format(path: Path, *, raise_on_invalid: Literal[False]) Literal['json', 'yaml', 'ruamel', 'pyyaml'] | None

Guess format from path suffix.

Parameters:
pathPath

Path to guess format of.

raise_on_invalidbool

Whether to raise on unrecognised or return None.

Returns:
Formats or None

Expected format.

Raises:
NotImplementedError

Unknown format found.

Examples

>>> from pathlib import Path
>>> guess_format(Path("my_file.json"))
'json'
>>> guess_format(Path("my_file.yml"))
'yaml'

data_collections_api.invenio module

Repository data structure.

class data_collections_api.invenio.InvenioRepository(url: URL | str, api_key: str, *, is_zenodo: bool = False)[source]

Bases: object

Handler for Invenio-like repositories.

Handles pushing info to e.g. Zenodo.

Parameters:
urlURL

Repository URL.

api_keystr

API key with appropriate permissions.

is_zenodobool

Whether to use deposition interface or records interface.

Examples

my_repo = InvenioRepository(url="companyname.website", api_key="abc123")
my_repo.depositions["my_repo"].files["file"].upload(my_file)
my_repo.records.get()
my_repo.licenses.list()

data_collections_api.metadata module

Metadata validation and parsing.

data_collections_api.metadata.dump_example(out_file: Path, fmt: Literal['json', 'yaml', 'ruamel', 'pyyaml'] | None = None, in_file: Path = PosixPath('/opt/hostedtoolcache/Python/3.12.12/x64/lib/python3.12/site-packages/data_collections_api/examples/bare_example.yml'))[source]
data_collections_api.metadata.dump_example(args: Namespace)

Dump an example schema.

Parameters:
out_filePath

File to write to.

fmtFormats

Format to dump as.

in_filePath

File to read data from.

data_collections_api.metadata.validate_cli(inp: Namespace) dict[source]

Validate metadata and print success to screen.

Parameters:
inpargparse.Namespace

Input arguments from CLI.

Returns:
dict

Validated schema from file.

data_collections_api.metadata.validate_metadata(_val, fmt: Literal['json', 'yaml', 'ruamel', 'pyyaml'] | None = None)[source]
data_collections_api.metadata.validate_metadata(data: dict, schema: Schema | str) dict
data_collections_api.metadata.validate_metadata(data: Path | str, schema: Schema | str, fmt: Literal['json', 'yaml', 'ruamel', 'pyyaml']) dict
data_collections_api.metadata.validate_metadata(path: Path, schema: Schema | str, fmt: Literal['json', 'yaml', 'ruamel', 'pyyaml'] | None = None) dict
data_collections_api.metadata.validate_metadata(inp: Namespace) dict

Verify and process project metadata.

Parameters:
_valPath | str

Path to data to validate.

fmtFormats, optional

Format to process.

Module contents

Data API for uploading and downloading from PSDI depositories.