Module nafparserpy.layers.entities
Expand source code
from dataclasses import dataclass, field
from typing import List
from nafparserpy.layers.utils import AttributeGetter, IdrefGetter, create_node, ExternalReferenceHolder
from nafparserpy.layers.elements import Span, ExternalReferences
@dataclass
class Entity(AttributeGetter, IdrefGetter, ExternalReferenceHolder):
"""Represents a named entity"""
id: str
"""Entity id"""
span: Span
"""Span of idrefs covered by the entity"""
external_references: ExternalReferences = ExternalReferences([])
"""An optional list of external references"""
attrs: dict = field(default_factory=dict)
"""optional attributes ('type', 'status', 'source')"""
def __post_init__(self):
"""Copy compulsory attributes to `attrs` field"""
self.attrs.update({'id': self.id})
def node(self):
"""Create etree node from object"""
children = [self.span]
if self.external_references.items:
children.append(self.external_references)
return create_node('entity', None, children, self.attrs)
@staticmethod
def object(node):
"""Create object from etree node"""
return Entity(node.get('id'),
Span.object(node.find('span')),
ExternalReferences(ExternalReferences.object(node.find('externalReferences'))),
node.attrib)
@staticmethod
def create(entity_id, entity_type, target_ids):
return Entity(entity_id, Span.create(target_ids), ExternalReferences([]), {'type': entity_type})
@dataclass
class Entities:
"""Entities layer class"""
items: List[Entity]
"""list of entities in the layer"""
def node(self):
"""Create etree node from object"""
return create_node('entities', None, self.items, {})
@staticmethod
def object(node):
"""Create list of `Entity` objects from etree node"""
return [Entity.object(n) for n in node]
Classes
class Entities (items: List[Entity])
-
Entities layer class
Expand source code
@dataclass class Entities: """Entities layer class""" items: List[Entity] """list of entities in the layer""" def node(self): """Create etree node from object""" return create_node('entities', None, self.items, {}) @staticmethod def object(node): """Create list of `Entity` objects from etree node""" return [Entity.object(n) for n in node]
Class variables
var items : List[Entity]
-
list of entities in the layer
Static methods
def object(node)
-
Create list of
Entity
objects from etree nodeExpand source code
@staticmethod def object(node): """Create list of `Entity` objects from etree node""" return [Entity.object(n) for n in node]
Methods
def node(self)
-
Create etree node from object
Expand source code
def node(self): """Create etree node from object""" return create_node('entities', None, self.items, {})
class Entity (id: str, span: Span, external_references: ExternalReferences = ExternalReferences(items=[]), attrs: dict = <factory>)
-
Represents a named entity
Expand source code
@dataclass class Entity(AttributeGetter, IdrefGetter, ExternalReferenceHolder): """Represents a named entity""" id: str """Entity id""" span: Span """Span of idrefs covered by the entity""" external_references: ExternalReferences = ExternalReferences([]) """An optional list of external references""" attrs: dict = field(default_factory=dict) """optional attributes ('type', 'status', 'source')""" def __post_init__(self): """Copy compulsory attributes to `attrs` field""" self.attrs.update({'id': self.id}) def node(self): """Create etree node from object""" children = [self.span] if self.external_references.items: children.append(self.external_references) return create_node('entity', None, children, self.attrs) @staticmethod def object(node): """Create object from etree node""" return Entity(node.get('id'), Span.object(node.find('span')), ExternalReferences(ExternalReferences.object(node.find('externalReferences'))), node.attrib) @staticmethod def create(entity_id, entity_type, target_ids): return Entity(entity_id, Span.create(target_ids), ExternalReferences([]), {'type': entity_type})
Ancestors
Class variables
var attrs : dict
-
optional attributes ('type', 'status', 'source')
var external_references : ExternalReferences
-
An optional list of external references
var id : str
-
Entity id
var span : Span
-
Span of idrefs covered by the entity
Static methods
def create(entity_id, entity_type, target_ids)
-
Expand source code
@staticmethod def create(entity_id, entity_type, target_ids): return Entity(entity_id, Span.create(target_ids), ExternalReferences([]), {'type': entity_type})
def object(node)
-
Create object from etree node
Expand source code
@staticmethod def object(node): """Create object from etree node""" return Entity(node.get('id'), Span.object(node.find('span')), ExternalReferences(ExternalReferences.object(node.find('externalReferences'))), node.attrib)
Methods
def node(self)
-
Create etree node from object
Expand source code
def node(self): """Create etree node from object""" children = [self.span] if self.external_references.items: children.append(self.external_references) return create_node('entity', None, children, self.attrs)
Inherited members