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 node

Expand 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_referencesExternalReferences

An optional list of external references

var id : str

Entity id

var spanSpan

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