value_metadata
Classes¶
MetadataTypeClassesInfo (TypeInfoModelGroup)
pydantic-model
¶
Source code in kiara/models/values/value_metadata/__init__.py
class MetadataTypeClassesInfo(TypeInfoModelGroup):
_kiara_model_id = "info.metadata_types"
@classmethod
def base_info_class(cls) -> Type[TypeInfo]:
return MetadataTypeInfo
type_name: Literal["value_metadata"] = "value_metadata"
item_infos: Mapping[str, MetadataTypeInfo] = Field(
description="The value metadata info instances for each type."
)
Attributes¶
item_infos: Mapping[str, kiara.models.values.value_metadata.MetadataTypeInfo]
pydantic-field
required
¶
The value metadata info instances for each type.
type_name: Literal['value_metadata']
pydantic-field
¶
base_info_class()
classmethod
¶
Source code in kiara/models/values/value_metadata/__init__.py
@classmethod
def base_info_class(cls) -> Type[TypeInfo]:
return MetadataTypeInfo
MetadataTypeInfo (TypeInfo)
pydantic-model
¶
Source code in kiara/models/values/value_metadata/__init__.py
class MetadataTypeInfo(TypeInfo):
_kiara_model_id = "info.metadata_type"
@classmethod
def create_from_type_class(
self, type_cls: Type[ValueMetadata]
) -> "MetadataTypeInfo":
authors_md = AuthorsMetadataModel.from_class(type_cls)
doc = DocumentationMetadataModel.from_class_doc(type_cls)
python_class = PythonClass.from_class(type_cls)
properties_md = ContextMetadataModel.from_class(type_cls)
type_name = type_cls._metadata_key # type: ignore
schema = type_cls.schema()
return MetadataTypeInfo.construct(
type_name=type_name,
documentation=doc,
authors=authors_md,
context=properties_md,
python_class=python_class,
metadata_schema=schema,
)
@classmethod
def base_class(self) -> Type[ValueMetadata]:
return ValueMetadata
@classmethod
def category_name(cls) -> str:
return "value_metadata"
metadata_schema: Dict[str, Any] = Field(
description="The (json) schema for this metadata value."
)
def create_renderable(self, **config: Any) -> RenderableType:
include_doc = config.get("include_doc", True)
include_schema = config.get("include_schema", True)
table = Table(box=box.SIMPLE, show_header=False, padding=(0, 0, 0, 0))
table.add_column("property", style="i")
table.add_column("value")
if include_doc:
table.add_row(
"Documentation",
Panel(self.documentation.create_renderable(), box=box.SIMPLE),
)
table.add_row("Author(s)", self.authors.create_renderable())
table.add_row("Context", self.context.create_renderable())
if hasattr(self, "python_class"):
table.add_row("Python class", self.python_class.create_renderable())
if include_schema:
schema = Syntax(
orjson_dumps(self.metadata_schema, option=orjson.OPT_INDENT_2),
"json",
background_color="default",
)
table.add_row("metadata_schema", schema)
return table
Attributes¶
metadata_schema: Dict[str, Any]
pydantic-field
required
¶
The (json) schema for this metadata value.
base_class()
classmethod
¶
Source code in kiara/models/values/value_metadata/__init__.py
@classmethod
def base_class(self) -> Type[ValueMetadata]:
return ValueMetadata
category_name()
classmethod
¶
Source code in kiara/models/values/value_metadata/__init__.py
@classmethod
def category_name(cls) -> str:
return "value_metadata"
create_from_type_class(type_cls)
classmethod
¶
Source code in kiara/models/values/value_metadata/__init__.py
@classmethod
def create_from_type_class(
self, type_cls: Type[ValueMetadata]
) -> "MetadataTypeInfo":
authors_md = AuthorsMetadataModel.from_class(type_cls)
doc = DocumentationMetadataModel.from_class_doc(type_cls)
python_class = PythonClass.from_class(type_cls)
properties_md = ContextMetadataModel.from_class(type_cls)
type_name = type_cls._metadata_key # type: ignore
schema = type_cls.schema()
return MetadataTypeInfo.construct(
type_name=type_name,
documentation=doc,
authors=authors_md,
context=properties_md,
python_class=python_class,
metadata_schema=schema,
)
create_renderable(self, **config)
¶
Source code in kiara/models/values/value_metadata/__init__.py
def create_renderable(self, **config: Any) -> RenderableType:
include_doc = config.get("include_doc", True)
include_schema = config.get("include_schema", True)
table = Table(box=box.SIMPLE, show_header=False, padding=(0, 0, 0, 0))
table.add_column("property", style="i")
table.add_column("value")
if include_doc:
table.add_row(
"Documentation",
Panel(self.documentation.create_renderable(), box=box.SIMPLE),
)
table.add_row("Author(s)", self.authors.create_renderable())
table.add_row("Context", self.context.create_renderable())
if hasattr(self, "python_class"):
table.add_row("Python class", self.python_class.create_renderable())
if include_schema:
schema = Syntax(
orjson_dumps(self.metadata_schema, option=orjson.OPT_INDENT_2),
"json",
background_color="default",
)
table.add_row("metadata_schema", schema)
return table
ValueMetadata (KiaraModel)
pydantic-model
¶
Source code in kiara/models/values/value_metadata/__init__.py
class ValueMetadata(KiaraModel):
@classmethod
@abc.abstractmethod
def retrieve_supported_data_types(cls) -> Iterable[str]:
pass
@classmethod
@abc.abstractmethod
def create_value_metadata(
cls, value: "Value"
) -> Union["ValueMetadata", Dict[str, Any]]:
pass
# @property
# def metadata_key(self) -> str:
# return self._metadata_key # type: ignore # this is added by the kiara class loading functionality
def _retrieve_id(self) -> str:
return self._metadata_key # type: ignore
def _retrieve_data_to_hash(self) -> Any:
return {"metadata": self.dict(), "schema": self.schema_json()}
create_value_metadata(value)
classmethod
¶
Source code in kiara/models/values/value_metadata/__init__.py
@classmethod
@abc.abstractmethod
def create_value_metadata(
cls, value: "Value"
) -> Union["ValueMetadata", Dict[str, Any]]:
pass
retrieve_supported_data_types()
classmethod
¶
Source code in kiara/models/values/value_metadata/__init__.py
@classmethod
@abc.abstractmethod
def retrieve_supported_data_types(cls) -> Iterable[str]:
pass
Modules¶
included_metadata_types
special
¶
Classes¶
FileBundleMetadata (ValueMetadata)
pydantic-model
¶
File bundle stats.
Source code in kiara/models/values/value_metadata/included_metadata_types/__init__.py
class FileBundleMetadata(ValueMetadata):
"""File bundle stats."""
_metadata_key = "file_bundle"
_kiara_model_id = "metadata.file_bundle"
@classmethod
def retrieve_supported_data_types(cls) -> Iterable[str]:
return ["file_bundle"]
@classmethod
def create_value_metadata(cls, value: "Value") -> "FileBundleMetadata":
return FileBundleMetadata.construct(file_bundle=value.data)
file_bundle: FileBundle = Field(description="The file-specific metadata.")
Attributes¶
file_bundle: FileBundle
pydantic-field
required
¶The file-specific metadata.
create_value_metadata(value)
classmethod
¶Source code in kiara/models/values/value_metadata/included_metadata_types/__init__.py
@classmethod
def create_value_metadata(cls, value: "Value") -> "FileBundleMetadata":
return FileBundleMetadata.construct(file_bundle=value.data)
retrieve_supported_data_types()
classmethod
¶Source code in kiara/models/values/value_metadata/included_metadata_types/__init__.py
@classmethod
def retrieve_supported_data_types(cls) -> Iterable[str]:
return ["file_bundle"]
FileMetadata (ValueMetadata)
pydantic-model
¶
File stats.
Source code in kiara/models/values/value_metadata/included_metadata_types/__init__.py
class FileMetadata(ValueMetadata):
"""File stats."""
_metadata_key = "file"
_kiara_model_id = "metadata.file"
@classmethod
def retrieve_supported_data_types(cls) -> Iterable[str]:
return ["file"]
@classmethod
def create_value_metadata(cls, value: "Value") -> "FileMetadata":
return FileMetadata.construct(file=value.data)
file: FileModel = Field(description="The file-specific metadata.")
Attributes¶
file: FileModel
pydantic-field
required
¶The file-specific metadata.
create_value_metadata(value)
classmethod
¶Source code in kiara/models/values/value_metadata/included_metadata_types/__init__.py
@classmethod
def create_value_metadata(cls, value: "Value") -> "FileMetadata":
return FileMetadata.construct(file=value.data)
retrieve_supported_data_types()
classmethod
¶Source code in kiara/models/values/value_metadata/included_metadata_types/__init__.py
@classmethod
def retrieve_supported_data_types(cls) -> Iterable[str]:
return ["file"]
PythonClassMetadata (ValueMetadata)
pydantic-model
¶
Python class and module information.
Source code in kiara/models/values/value_metadata/included_metadata_types/__init__.py
class PythonClassMetadata(ValueMetadata):
"""Python class and module information."""
_metadata_key = "python_class"
_kiara_model_id = "metadata.python_class"
@classmethod
def retrieve_supported_data_types(cls) -> Iterable[str]:
return ["any"]
@classmethod
def create_value_metadata(cls, value: "Value") -> "PythonClassMetadata":
return PythonClassMetadata.construct(
python_class=PythonClass.from_class(value.data.__class__)
)
# metadata_key: Literal["python_class"]
python_class: PythonClass = Field(
description="Details about the Python class that backs this value."
)
Attributes¶
python_class: PythonClass
pydantic-field
required
¶Details about the Python class that backs this value.
create_value_metadata(value)
classmethod
¶Source code in kiara/models/values/value_metadata/included_metadata_types/__init__.py
@classmethod
def create_value_metadata(cls, value: "Value") -> "PythonClassMetadata":
return PythonClassMetadata.construct(
python_class=PythonClass.from_class(value.data.__class__)
)
retrieve_supported_data_types()
classmethod
¶Source code in kiara/models/values/value_metadata/included_metadata_types/__init__.py
@classmethod
def retrieve_supported_data_types(cls) -> Iterable[str]:
return ["any"]