Source code for anndata.ann.annlocation.durationcompare

# -*- coding: UTF-8 -*-
"""
:filename: sppas.src.anndata.annlocation.durationcompare.py
:author: Brigitte Bigi
:contact: develop@sppas.org
:summary: Comparison methods for durations, used by the filter system.

.. _This file is part of SPPAS: http://www.sppas.org/
..
    -------------------------------------------------------------------------

     ___   __    __    __    ___
    /     |  \  |  \  |  \  /              the automatic
    \__   |__/  |__/  |___| \__             annotation and
       \  |     |     |   |    \             analysis
    ___/  |     |     |   | ___/              of speech

    Copyright (C) 2011-2021  Brigitte Bigi
    Laboratoire Parole et Langage, Aix-en-Provence, France

    Use of this software is governed by the GNU Public License, version 3.

    SPPAS is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    SPPAS is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with SPPAS. If not, see <http://www.gnu.org/licenses/>.

    This banner notice must not be removed.

    -------------------------------------------------------------------------

"""

from sppas.src.utils.datatype import sppasType
from sppas.src.structs.basecompare import sppasBaseCompare

from ...anndataexc import AnnDataTypeError

from .duration import sppasDuration

# ---------------------------------------------------------------------------


[docs]class sppasDurationCompare(sppasBaseCompare): """Comparison methods for sppasDuration. """
[docs] def __init__(self): """Create a sppasDurationCompare instance.""" super(sppasDurationCompare, self).__init__() self.methods['eq'] = sppasDurationCompare.eq self.methods['ne'] = sppasDurationCompare.ne self.methods['gt'] = sppasDurationCompare.gt self.methods['lt'] = sppasDurationCompare.lt self.methods['le'] = sppasDurationCompare.le self.methods['ge'] = sppasDurationCompare.ge
# -----------------------------------------------------------------------
[docs] @staticmethod def eq(duration, x): """Return True if duration is equal to x. :param duration: (sppasDuration) :param x: (int, float) :returns: (bool) """ if isinstance(duration, sppasDuration) is False: raise AnnDataTypeError(duration, "sppasDuration") if (sppasType().is_number(x) or isinstance(x, sppasDuration)) is False: raise AnnDataTypeError(x, "int/float/sppasDuration") return duration == x
# -----------------------------------------------------------------------
[docs] @staticmethod def ne(duration, x): """Return True if duration is different to x. :param duration: (sppasDuration) :param x: (int, float) :returns: (bool) """ if isinstance(duration, sppasDuration) is False: raise AnnDataTypeError(duration, "sppasDuration") if (sppasType().is_number(x) or isinstance(x, sppasDuration)) is False: raise AnnDataTypeError(x, "int/float/sppasDuration") return duration != x
# -----------------------------------------------------------------------
[docs] @staticmethod def gt(duration, x): """Return True if duration is greater than x. :param duration: (sppasDuration) :param x: (int, float) :returns: (bool) """ if isinstance(duration, sppasDuration) is False: raise AnnDataTypeError(duration, "sppasDuration") if (sppasType().is_number(x) or isinstance(x, sppasDuration)) is False: raise AnnDataTypeError(x, "int/float/sppasDuration") return duration > x
# -----------------------------------------------------------------------
[docs] @staticmethod def lt(duration, x): """Return True if duration is lower than x. :param duration: (sppasDuration) :param x: (int, float) :returns: (bool) """ if isinstance(duration, sppasDuration) is False: raise AnnDataTypeError(duration, "sppasDuration") if (sppasType().is_number(x) or isinstance(x, sppasDuration)) is False: raise AnnDataTypeError(x, "int/float/sppasDuration") return duration < x
# -----------------------------------------------------------------------
[docs] @staticmethod def ge(duration, x): """Return True if duration is greater or equal than x. :param duration: (sppasDuration) :param x: (int, float) :returns: (bool) """ if isinstance(duration, sppasDuration) is False: raise AnnDataTypeError(duration, "sppasDuration") if (sppasType().is_number(x) or isinstance(x, sppasDuration)) is False: raise AnnDataTypeError(x, "int/float/sppasDuration") return duration >= x
# -----------------------------------------------------------------------
[docs] @staticmethod def le(duration, x): """Return True if duration is lower or equal than x. :param duration: (sppasDuration) :param x: (int, float) :returns: (bool) """ if isinstance(duration, sppasDuration) is False: raise AnnDataTypeError(duration, "sppasDuration") if (sppasType().is_number(x) or isinstance(x, sppasDuration)) is False: raise AnnDataTypeError(x, "int/float/sppasDuration") return duration <= x