Example #1
0
    def __init__(self,
                 id=None,
                 type=None,
                 attributes=None,
                 metadata=None,
                 tiers=None,
                 corpus=None,
                 namespace=None,
                 nsmap=None):
        XigtContainerMixin.__init__(self, contained_type=Tier)
        XigtAttributeMixin.__init__(self,
                                    id=id,
                                    type=type,
                                    attributes=attributes,
                                    namespace=namespace,
                                    nsmap=nsmap)
        XigtMetadataMixin.__init__(self, metadata)

        self._referent_cache = {}
        self._referrer_cache = {}
        self._parent = corpus
        self._itemdict = {}

        self.extend(tiers or [])
        self.refresh_indices()
Example #2
0
    def __init__(self,
                 id=None,
                 type=None,
                 attributes=None,
                 text=None,
                 metas=None,
                 namespace=None,
                 nsmap=None):
        XigtContainerMixin.__init__(self, contained_type=Meta)
        XigtAttributeMixin.__init__(self,
                                    id=id,
                                    type=type,
                                    attributes=attributes,
                                    namespace=namespace,
                                    nsmap=nsmap)

        if text is not None:
            metadata_text_warning()
            if metas is not None:
                raise XigtError('text and metas cannot both be specified.')
            if isinstance(text, str):
                warnings.warn(
                    'String values of Metadata are deprecated; '
                    'it will be put in an untyped Meta object.',
                    DeprecationWarning)
                text = [Meta(text=text)]
            metas = text

        self.extend(metas or [])
Example #3
0
    def __init__(self,
                 id=None,
                 type=None,
                 alignment=None,
                 content=None,
                 segmentation=None,
                 attributes=None,
                 metadata=None,
                 items=None,
                 igt=None,
                 namespace=None,
                 nsmap=None):
        XigtContainerMixin.__init__(self, contained_type=Item)
        XigtAttributeMixin.__init__(self,
                                    id=id,
                                    type=type,
                                    attributes=attributes,
                                    namespace=namespace,
                                    nsmap=nsmap)
        XigtReferenceAttributeMixin.__init__(self,
                                             alignment=alignment,
                                             content=content,
                                             segmentation=segmentation)
        XigtMetadataMixin.__init__(self, metadata)

        self._parent = igt
        self.extend(items or [])
Example #4
0
    def __init__(
        self, id=None, type=None, attributes=None, text=None, children=None, metadata=None, namespace=None, nsmap=None
    ):
        XigtContainerMixin.__init__(self, contained_type=MetaChild)
        XigtAttributeMixin.__init__(self, id=id, type=type, attributes=attributes, namespace=namespace, nsmap=nsmap)

        self._parent = metadata
        self.text = text
        self.extend(children or [])
Example #5
0
    def __init__(self, name, attributes=None, text=None, children=None, parent=None, namespace=None, nsmap=None):
        XigtContainerMixin.__init__(self, contained_type=MetaChild)
        XigtAttributeMixin.__init__(self, id=None, type=None, attributes=attributes, namespace=namespace, nsmap=nsmap)

        if not name_re.match(name):
            raise ValueError("Invalid name for MetaChild: {}".format(name))
        self.name = name
        self._parent = parent
        self.text = text
        self.extend(children or [])
Example #6
0
File: model.py Project: xigt/xigt
 def __init__(self, id=None, type=None, attributes=None, metadata=None,
              igts=None, mode=FULL, namespace=None, nsmap=None):
     XigtContainerMixin.__init__(self, contained_type=Igt)
     XigtAttributeMixin.__init__(
         self, id=id, type=type, attributes=attributes,
         namespace=namespace, nsmap=nsmap
     )
     XigtMetadataMixin.__init__(self, metadata)
     self.mode = mode
     if mode == FULL:
         self.extend(igts or [])
     else:
         self._generator = igts
Example #7
0
File: model.py Project: xigt/xigt
    def __init__(self, id=None, type=None, attributes=None, metadata=None,
                 tiers=None, corpus=None, namespace=None, nsmap=None):
        XigtContainerMixin.__init__(self, contained_type=Tier)
        XigtAttributeMixin.__init__(
            self, id=id, type=type, attributes=attributes,
            namespace=namespace, nsmap=nsmap
        )
        XigtMetadataMixin.__init__(self, metadata)

        self._referent_cache = {}
        self._referrer_cache = {}
        self._parent = corpus
        self._itemdict = {}

        self.extend(tiers or [])
        self.refresh_indices()
Example #8
0
    def __init__(self, id=None, type=None, attributes=None, text=None, metas=None, namespace=None, nsmap=None):
        XigtContainerMixin.__init__(self, contained_type=Meta)
        XigtAttributeMixin.__init__(self, id=id, type=type, attributes=attributes, namespace=namespace, nsmap=nsmap)

        if text is not None:
            metadata_text_warning()
            if metas is not None:
                raise XigtError("text and metas cannot both be specified.")
            if isinstance(text, str):
                warnings.warn(
                    "String values of Metadata are deprecated; " "it will be put in an untyped Meta object.",
                    DeprecationWarning,
                )
                text = [Meta(text=text)]
            metas = text

        self.extend(metas or [])
Example #9
0
class XigtMetadataMixin(object):
    """
    Enables the management of metadata.
    """

    def __init__(self, metadata=None):
        self._md = XigtContainerMixin(container=self, contained_type=Metadata)
        if metadata is not None:
            self.metadata = metadata

    def __eq__(self, other):
        try:
            return self._md == other._md
        except AttributeError:
            return False

    @property
    def metadata(self):
        return self._md

    @metadata.setter
    def metadata(self, value):
        if isinstance(value, Metadata):
            raise XigtError("The metadata attribute must be a sequence " "of Metadata objects.")
        self._md.clear()
        self._md.extend(value)

    # possibly pending deprecation

    def get_meta(self, key, conditions=None, default=None, inherit=True):
        if conditions is None:
            conditions = []
        metas = []
        for metadata in self.metadata:
            if metadata.type != "xigt-meta":
                continue
            for meta in metadata.metas:
                if meta.type == key and all(c(meta) for c in conditions):
                    metas.append(meta)
        if metas:
            return metas
        elif inherit and hasattr(self, "_parent") and self._parent is not None:
            return self._parent.get_meta(key, conditions, default, inherit)
        else:
            return default
Example #10
0
File: model.py Project: xigt/xigt
    def __init__(self, id=None, type=None,
                 alignment=None, content=None, segmentation=None,
                 attributes=None, metadata=None,
                 items=None, igt=None,
                 namespace=None, nsmap=None):
        XigtContainerMixin.__init__(self, contained_type=Item)
        XigtAttributeMixin.__init__(
            self, id=id, type=type, attributes=attributes,
            namespace=namespace, nsmap=nsmap
        )
        XigtReferenceAttributeMixin.__init__(
            self, alignment=alignment, content=content,
            segmentation=segmentation
        )
        XigtMetadataMixin.__init__(self, metadata)

        self._parent = igt
        self.extend(items or [])
Example #11
0
 def __eq__(self, other):
     try:
         return (
             self.text == other.text
             and XigtContainerMixin.__eq__(self, other)
             and XigtAttributeMixin.__eq__(self, other)
         )
     except AttributeError:
         return False
Example #12
0
 def __iter__(self):
     if self.mode == FULL:
         for igt in XigtContainerMixin.__iter__(self):
             yield igt
     else:
         for igt in self._generator:
             if self.mode == INCREMENTAL:
                 self.add(igt)
             yield igt
         self.mode = FULL
Example #13
0
    def __init__(self,
                 id=None,
                 type=None,
                 attributes=None,
                 text=None,
                 children=None,
                 metadata=None,
                 namespace=None,
                 nsmap=None):
        XigtContainerMixin.__init__(self, contained_type=MetaChild)
        XigtAttributeMixin.__init__(self,
                                    id=id,
                                    type=type,
                                    attributes=attributes,
                                    namespace=namespace,
                                    nsmap=nsmap)

        self._parent = metadata
        self.text = text
        self.extend(children or [])
Example #14
0
File: model.py Project: xigt/xigt
 def __iter__(self):
     if self.mode == FULL:
         for igt in XigtContainerMixin.__iter__(self):
             yield igt
     else:
         for igt in self._generator:
             if self.mode == INCREMENTAL:
                 self.add(igt)
             else:
                 # don't add, but set the parent
                 igt._parent = self
             yield igt
         self.mode = FULL
Example #15
0
 def __init__(self,
              id=None,
              type=None,
              attributes=None,
              metadata=None,
              igts=None,
              mode=FULL,
              namespace=None,
              nsmap=None):
     XigtContainerMixin.__init__(self, contained_type=Igt)
     XigtAttributeMixin.__init__(self,
                                 id=id,
                                 type=type,
                                 attributes=attributes,
                                 namespace=namespace,
                                 nsmap=nsmap)
     XigtMetadataMixin.__init__(self, metadata)
     self.mode = mode
     if mode == FULL:
         self.extend(igts or [])
     else:
         self._generator = igts
Example #16
0
 def __iter__(self):
     if self.mode == FULL:
         for igt in XigtContainerMixin.__iter__(self):
             yield igt
     else:
         for igt in self._generator:
             if self.mode == INCREMENTAL:
                 self.add(igt)
             else:
                 # don't add, but set the parent
                 igt._parent = self
             yield igt
         self.mode = FULL
Example #17
0
    def __init__(self,
                 name,
                 attributes=None,
                 text=None,
                 children=None,
                 parent=None,
                 namespace=None,
                 nsmap=None):
        XigtContainerMixin.__init__(self, contained_type=MetaChild)
        XigtAttributeMixin.__init__(self,
                                    id=None,
                                    type=None,
                                    attributes=attributes,
                                    namespace=namespace,
                                    nsmap=nsmap)

        if not name_re.match(name):
            raise ValueError('Invalid name for MetaChild: {}'.format(name))
        self.name = name
        self._parent = parent
        self.text = text
        self.extend(children or [])
Example #18
0
class XigtMetadataMixin(object):
    """
    Enables the management of metadata.
    """
    def __init__(self, metadata=None):
        self._md = XigtContainerMixin(container=self, contained_type=Metadata)
        if metadata is not None:
            self.metadata = metadata

    @property
    def metadata(self):
        return self._md

    @metadata.setter
    def metadata(self, value):
        if isinstance(value, Metadata):
            raise XigtError('The metadata attribute must be a sequence '
                            'of Metadata objects.')
        self._md.clear()
        self._md.extend(value)

    # possibly pending deprecation

    def get_meta(self, key, conditions=None, default=None, inherit=True):
        if conditions is None:
            conditions = []
        metas = []
        for metadata in self.metadata:
            if metadata.type != 'xigt-meta':
                continue
            for meta in metadata.metas:
                if meta.type == key and all(c(meta) for c in conditions):
                    metas.append(meta)
        if metas:
            return metas
        elif inherit and hasattr(self, '_parent') and self._parent is not None:
            return self._parent.get_meta(key, conditions, default, inherit)
        else:
            return default
Example #19
0
File: model.py Project: xigt/xigt
 def __eq__(self, other):
     return (
         XigtMetadataMixin.__eq__(self, other)
         and XigtContainerMixin.__eq__(self, other)
         and XigtAttributeMixin.__eq__(self, other)
     )
Example #20
0
 def __init__(self, metadata=None):
     self._md = XigtContainerMixin(container=self, contained_type=Metadata)
     if metadata is not None:
         self.metadata = metadata
Example #21
0
 def __eq__(self, other):
     return XigtContainerMixin.__eq__(self, other) and XigtAttributeMixin.__eq__(self, other)
Example #22
0
 def __init__(self, metadata=None):
     self._md = XigtContainerMixin(container=self, contained_type=Metadata)
     if metadata is not None:
         self.metadata = metadata