Source code for data_collections_api.schemas
"""Module defining different schemas available for use."""
from __future__ import annotations
from functools import singledispatch
from schema import Schema as Schema
from .base import base_schema
SCHEMAS = {
"base": base_schema,
"default": base_schema,
}
[docs]
@singledispatch
def get_schema(schema) -> Schema:
"""
Get schema.
Parameters
----------
schema : Schema | str
Schema to get.
Returns
-------
Schema
Desired schema.
Raises
------
NotImplementedError
Passed an invalid type.
Examples
--------
>>> get_schema(base_schema)
>>> get_schema("default")
"""
raise NotImplementedError(f"Cannot find schema with {type(schema).__name__}")
@get_schema.register
def _(schema: Schema) -> Schema:
return schema
@get_schema.register
def _(schema: str) -> Schema:
return SCHEMAS[schema]