Module nafparserpy.layers.attribution

Expand source code
from dataclasses import dataclass
from typing import List
from nafparserpy.layers.utils import create_node, IdrefGetter
from nafparserpy.layers.elements import Span


@dataclass
class StatementSource(IdrefGetter):
    """Represents the source of a statement"""
    span: Span
    """span covered by the statement source"""

    def node(self):
        """Create etree node from object"""
        return create_node('statement_source', None, [self.span], {})

    @staticmethod
    def object(node):
        """Create object from etree node"""
        return StatementSource(Span.object(node.find('span')))

    @staticmethod
    def create(target_ids):
        return StatementSource(Span.create(target_ids))


@dataclass
class StatementTarget(IdrefGetter):
    span: Span
    """span covered by the statement target"""

    def node(self):
        """Create etree node from object"""
        return create_node('statement_target', None, [self.span], {})

    @staticmethod
    def object(node):
        """Create object from etree node"""
        return StatementTarget(Span.object(node.find('span')))

    @staticmethod
    def create(target_ids):
        return StatementTarget(Span.create(target_ids))


@dataclass
class StatementCue(IdrefGetter):
    span: Span
    """span covered by the statement cue"""

    def node(self):
        """Create etree node from object"""
        return create_node('statement_cue', None, [self.span], {})

    @staticmethod
    def object(node):
        """Create object from etree node"""
        return StatementCue(Span.object(node.find('span')))

    @staticmethod
    def create(target_ids):
        return StatementCue(Span.create(target_ids))


@dataclass
class Statement:
    """A statement has an id and one or more targets, sources or cues"""
    id: str
    targets: List[StatementTarget]
    sources: List[StatementSource]
    cues: List[StatementCue]

    def node(self):
        """Create etree node from object"""
        return create_node('statement', None, self.sources + self.targets + self.cues, {})

    @staticmethod
    def object(node):
        """Create object from etree node"""
        return Statement(node.get('id'),
                         [StatementTarget.object(n) for n in node.findall('statement_target')],
                         [StatementSource.object(n) for n in node.findall('statement_source')],
                         [StatementCue.object(n) for n in node.findall('statement_cue')])

    def target_spans(self):
        return [t.span.target_ids() for t in self.targets]

    def source_spans(self):
        return [t.span.target_ids() for t in self.sources]

    def cue_spans(self):
        return [t.span.target_ids() for t in self.cues]


@dataclass
class Attribution:
    """Attribution-layer class """
    items: List[Statement]
    """list of attribution statements"""

    def node(self):
        """Create etree node from object"""
        return create_node('attribution', None, self.items, {})

    @staticmethod
    def object(node):
        """Create list of `Statement` objects from etree node"""
        return [Statement.object(n) for n in node]

Classes

class Attribution (items: List[Statement])

Attribution-layer class

Expand source code
@dataclass
class Attribution:
    """Attribution-layer class """
    items: List[Statement]
    """list of attribution statements"""

    def node(self):
        """Create etree node from object"""
        return create_node('attribution', None, self.items, {})

    @staticmethod
    def object(node):
        """Create list of `Statement` objects from etree node"""
        return [Statement.object(n) for n in node]

Class variables

var items : List[Statement]

list of attribution statements

Static methods

def object(node)

Create list of Statement objects from etree node

Expand source code
@staticmethod
def object(node):
    """Create list of `Statement` objects from etree node"""
    return [Statement.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('attribution', None, self.items, {})
class Statement (id: str, targets: List[StatementTarget], sources: List[StatementSource], cues: List[StatementCue])

A statement has an id and one or more targets, sources or cues

Expand source code
@dataclass
class Statement:
    """A statement has an id and one or more targets, sources or cues"""
    id: str
    targets: List[StatementTarget]
    sources: List[StatementSource]
    cues: List[StatementCue]

    def node(self):
        """Create etree node from object"""
        return create_node('statement', None, self.sources + self.targets + self.cues, {})

    @staticmethod
    def object(node):
        """Create object from etree node"""
        return Statement(node.get('id'),
                         [StatementTarget.object(n) for n in node.findall('statement_target')],
                         [StatementSource.object(n) for n in node.findall('statement_source')],
                         [StatementCue.object(n) for n in node.findall('statement_cue')])

    def target_spans(self):
        return [t.span.target_ids() for t in self.targets]

    def source_spans(self):
        return [t.span.target_ids() for t in self.sources]

    def cue_spans(self):
        return [t.span.target_ids() for t in self.cues]

Class variables

var cues : List[StatementCue]
var id : str
var sources : List[StatementSource]
var targets : List[StatementTarget]

Static methods

def object(node)

Create object from etree node

Expand source code
@staticmethod
def object(node):
    """Create object from etree node"""
    return Statement(node.get('id'),
                     [StatementTarget.object(n) for n in node.findall('statement_target')],
                     [StatementSource.object(n) for n in node.findall('statement_source')],
                     [StatementCue.object(n) for n in node.findall('statement_cue')])

Methods

def cue_spans(self)
Expand source code
def cue_spans(self):
    return [t.span.target_ids() for t in self.cues]
def node(self)

Create etree node from object

Expand source code
def node(self):
    """Create etree node from object"""
    return create_node('statement', None, self.sources + self.targets + self.cues, {})
def source_spans(self)
Expand source code
def source_spans(self):
    return [t.span.target_ids() for t in self.sources]
def target_spans(self)
Expand source code
def target_spans(self):
    return [t.span.target_ids() for t in self.targets]
class StatementCue (span: Span)

StatementCue(span: nafparserpy.layers.elements.Span)

Expand source code
@dataclass
class StatementCue(IdrefGetter):
    span: Span
    """span covered by the statement cue"""

    def node(self):
        """Create etree node from object"""
        return create_node('statement_cue', None, [self.span], {})

    @staticmethod
    def object(node):
        """Create object from etree node"""
        return StatementCue(Span.object(node.find('span')))

    @staticmethod
    def create(target_ids):
        return StatementCue(Span.create(target_ids))

Ancestors

Class variables

var spanSpan

span covered by the statement cue

Static methods

def create(target_ids)
Expand source code
@staticmethod
def create(target_ids):
    return StatementCue(Span.create(target_ids))
def object(node)

Create object from etree node

Expand source code
@staticmethod
def object(node):
    """Create object from etree node"""
    return StatementCue(Span.object(node.find('span')))

Methods

def node(self)

Create etree node from object

Expand source code
def node(self):
    """Create etree node from object"""
    return create_node('statement_cue', None, [self.span], {})

Inherited members

class StatementSource (span: Span)

Represents the source of a statement

Expand source code
@dataclass
class StatementSource(IdrefGetter):
    """Represents the source of a statement"""
    span: Span
    """span covered by the statement source"""

    def node(self):
        """Create etree node from object"""
        return create_node('statement_source', None, [self.span], {})

    @staticmethod
    def object(node):
        """Create object from etree node"""
        return StatementSource(Span.object(node.find('span')))

    @staticmethod
    def create(target_ids):
        return StatementSource(Span.create(target_ids))

Ancestors

Class variables

var spanSpan

span covered by the statement source

Static methods

def create(target_ids)
Expand source code
@staticmethod
def create(target_ids):
    return StatementSource(Span.create(target_ids))
def object(node)

Create object from etree node

Expand source code
@staticmethod
def object(node):
    """Create object from etree node"""
    return StatementSource(Span.object(node.find('span')))

Methods

def node(self)

Create etree node from object

Expand source code
def node(self):
    """Create etree node from object"""
    return create_node('statement_source', None, [self.span], {})

Inherited members

class StatementTarget (span: Span)

StatementTarget(span: nafparserpy.layers.elements.Span)

Expand source code
@dataclass
class StatementTarget(IdrefGetter):
    span: Span
    """span covered by the statement target"""

    def node(self):
        """Create etree node from object"""
        return create_node('statement_target', None, [self.span], {})

    @staticmethod
    def object(node):
        """Create object from etree node"""
        return StatementTarget(Span.object(node.find('span')))

    @staticmethod
    def create(target_ids):
        return StatementTarget(Span.create(target_ids))

Ancestors

Class variables

var spanSpan

span covered by the statement target

Static methods

def create(target_ids)
Expand source code
@staticmethod
def create(target_ids):
    return StatementTarget(Span.create(target_ids))
def object(node)

Create object from etree node

Expand source code
@staticmethod
def object(node):
    """Create object from etree node"""
    return StatementTarget(Span.object(node.find('span')))

Methods

def node(self)

Create etree node from object

Expand source code
def node(self):
    """Create etree node from object"""
    return create_node('statement_target', None, [self.span], {})

Inherited members