# standard imports from dataclasses import dataclass import typing # bsie imports from bsie.utils import bsfs, ns # exports __all__: typing.Sequence[str] = ( 'Entity', 'Face', 'Node', 'Person', 'Preview', 'Tag', ) @dataclass(kw_only=True, unsafe_hash=True) class Node: # pylint: disable=missing-class-docstring # FIXME: Only allow changes to uri after init uri: typing.Optional[bsfs.URI] = None @dataclass(kw_only=True, unsafe_hash=True) class Entity(Node): # pylint: disable=missing-class-docstring node_type: bsfs.URI = ns.bsn.Entity ucid: str @dataclass(kw_only=True, unsafe_hash=True) class Face(Node): # pylint: disable=missing-class-docstring node_type: bsfs.URI = ns.bsn.Face ucid: str @dataclass(kw_only=True, unsafe_hash=True) class Person(Node): # pylint: disable=missing-class-docstring node_type: bsfs.URI = ns.bsn.Person @dataclass(kw_only=True, unsafe_hash=True) class Preview(Node): # pylint: disable=missing-class-docstring node_type: bsfs.URI = ns.bsn.Preview ucid: str size: int @dataclass(kw_only=True, unsafe_hash=True) class Tag(Node): # pylint: disable=missing-class-docstring node_type: bsfs.URI = ns.bsn.Tag label: str ## EOF ##