Source code for ehn.db.data

#!/usr/bin/env python3
# -*- coding:utf-8 -*-

"""
Please refer the tutorial ":ref:`tutorial-db`".
"""

__author__ = "Mu Yang <http://muyang.pro>"
__copyright__ = "2018-2021 CKIP Lab"
__license__ = "GPL-3.0"

from enum import (
    Enum,
)

from dataclasses import (
    dataclass,
    field,
)

from typing import (
    List,
)

from treelib import (
    Node,
)

################################################################################################################################


[docs]class EhnDbNodeType(Enum): """E-HowNet Database Node Type.""" C = "C" #: concept. W = "W" #: word.
[docs]@dataclass class EhnDbWordData: """E-HowNet Database Word Data.""" word: str #: the word. sense_no: int #: the sense number. def __repr__(self): return f"<Word {self.word}#{self.sense_no}>"
[docs]@dataclass class EhnDbNodeData: """E-HowNet Database Node Data.""" type: EhnDbNodeType #: the node type. defn: str = None #: the definition. words: List[EhnDbWordData] = field(default_factory=list) #: the attached words. definite: bool = False #: whether is an instance of not.
[docs]class EhnDbNode(Node): """E-HowNet Database Node.""" data_class = EhnDbNodeData @property def nid(self): return self.identifier @property def label(self): return self.tag @property def defn(self): return self.data.defn @property def type(self): return self.data.type @property def words(self): return self.data.words @property def definite(self): return self.data.definite def __repr__(self): return f'<Node#{self.nid} "{self.label}">'