cengal.data_manipulation.front_triggerable_variable.versions.v_0.front_triggerable_variable

  1#!/usr/bin/env python
  2# coding=utf-8
  3
  4# Copyright © 2012-2024 ButenkoMS. All rights reserved. Contacts: <gtalk@butenkoms.space>
  5# 
  6# Licensed under the Apache License, Version 2.0 (the "License");
  7# you may not use this file except in compliance with the License.
  8# You may obtain a copy of the License at
  9# 
 10#     http://www.apache.org/licenses/LICENSE-2.0
 11# 
 12# Unless required by applicable law or agreed to in writing, software
 13# distributed under the License is distributed on an "AS IS" BASIS,
 14# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 15# See the License for the specific language governing permissions and
 16# limitations under the License.
 17
 18
 19__all__ = ['FrontTriggerableVariableType', 'FrontTriggerableVariable']
 20
 21
 22from enum import Enum
 23from typing import Union
 24
 25"""
 26Module Docstring
 27Docstrings: http://www.python.org/dev/peps/pep-0257/
 28"""
 29
 30__author__ = "ButenkoMS <gtalk@butenkoms.space>"
 31__copyright__ = "Copyright © 2012-2024 ButenkoMS. All rights reserved. Contacts: <gtalk@butenkoms.space>"
 32__credits__ = ["ButenkoMS <gtalk@butenkoms.space>", ]
 33__license__ = "Apache License, Version 2.0"
 34__version__ = "4.4.1"
 35__maintainer__ = "ButenkoMS <gtalk@butenkoms.space>"
 36__email__ = "gtalk@butenkoms.space"
 37# __status__ = "Prototype"
 38__status__ = "Development"
 39# __status__ = "Production"
 40
 41
 42class FrontTriggerableVariableType(Enum):
 43    equal = 0
 44    lesser = 1
 45    lesser_or_equal = 2
 46    bigger = 3
 47    bigger_or_equal = 4
 48    not_equal = 5
 49
 50
 51class FrontTriggerableVariable:
 52    def __init__(self, triggerable_variable_type, value_limit):
 53        self.triggerable_variable_type = triggerable_variable_type
 54        self.value_limit = value_limit
 55        self._last_result = None
 56        self.test_worker = None
 57        self.set_triggerable_variable_type(triggerable_variable_type)
 58    
 59    def set_triggerable_variable_type(self, triggerable_variable_type):
 60        self._last_result = None
 61        self.triggerable_variable_type = triggerable_variable_type
 62        if FrontTriggerableVariableType.equal == triggerable_variable_type:
 63            self.test_worker = FrontTriggerableVariable._equal
 64        elif FrontTriggerableVariableType.lesser == triggerable_variable_type:
 65            self.test_worker = FrontTriggerableVariable._lesser
 66        elif FrontTriggerableVariableType.lesser_or_equal == triggerable_variable_type:
 67            self.test_worker = FrontTriggerableVariable._lesser_or_equal
 68        elif FrontTriggerableVariableType.bigger == triggerable_variable_type:
 69            self.test_worker = FrontTriggerableVariable._bigger
 70        elif FrontTriggerableVariableType.bigger_or_equal == triggerable_variable_type:
 71            self.test_worker = FrontTriggerableVariable._bigger_or_equal
 72        elif FrontTriggerableVariableType.not_equal == triggerable_variable_type:
 73            self.test_worker = FrontTriggerableVariable._not_equal
 74
 75    def test_trigger(self, value) -> Union[None, bool]:
 76        result = None
 77        new_test_result = self.test_worker(value, self.value_limit)
 78        if new_test_result != self._last_result:
 79            self._last_result = new_test_result
 80            result = new_test_result
 81        
 82        return result
 83
 84    def __call__(self, value) -> Union[None, bool]:
 85        return self.test_trigger(value)
 86
 87    @staticmethod
 88    def _equal(value, value_limit) -> bool:
 89        return value == value_limit
 90
 91    @staticmethod
 92    def _lesser(value, value_limit) -> bool:
 93        return value < value_limit
 94
 95    @staticmethod
 96    def _lesser_or_equal(value, value_limit) -> bool:
 97        return value <= value_limit
 98
 99    @staticmethod
100    def _bigger(value, value_limit) -> bool:
101        return value > value_limit
102
103    @staticmethod
104    def _bigger_or_equal(value, value_limit) -> bool:
105        return value >= value_limit
106
107    @staticmethod
108    def _not_equal(value, value_limit) -> bool:
109        return value != value_limit
class FrontTriggerableVariableType(enum.Enum):
43class FrontTriggerableVariableType(Enum):
44    equal = 0
45    lesser = 1
46    lesser_or_equal = 2
47    bigger = 3
48    bigger_or_equal = 4
49    not_equal = 5

An enumeration.

Inherited Members
enum.Enum
name
value
class FrontTriggerableVariable:
 52class FrontTriggerableVariable:
 53    def __init__(self, triggerable_variable_type, value_limit):
 54        self.triggerable_variable_type = triggerable_variable_type
 55        self.value_limit = value_limit
 56        self._last_result = None
 57        self.test_worker = None
 58        self.set_triggerable_variable_type(triggerable_variable_type)
 59    
 60    def set_triggerable_variable_type(self, triggerable_variable_type):
 61        self._last_result = None
 62        self.triggerable_variable_type = triggerable_variable_type
 63        if FrontTriggerableVariableType.equal == triggerable_variable_type:
 64            self.test_worker = FrontTriggerableVariable._equal
 65        elif FrontTriggerableVariableType.lesser == triggerable_variable_type:
 66            self.test_worker = FrontTriggerableVariable._lesser
 67        elif FrontTriggerableVariableType.lesser_or_equal == triggerable_variable_type:
 68            self.test_worker = FrontTriggerableVariable._lesser_or_equal
 69        elif FrontTriggerableVariableType.bigger == triggerable_variable_type:
 70            self.test_worker = FrontTriggerableVariable._bigger
 71        elif FrontTriggerableVariableType.bigger_or_equal == triggerable_variable_type:
 72            self.test_worker = FrontTriggerableVariable._bigger_or_equal
 73        elif FrontTriggerableVariableType.not_equal == triggerable_variable_type:
 74            self.test_worker = FrontTriggerableVariable._not_equal
 75
 76    def test_trigger(self, value) -> Union[None, bool]:
 77        result = None
 78        new_test_result = self.test_worker(value, self.value_limit)
 79        if new_test_result != self._last_result:
 80            self._last_result = new_test_result
 81            result = new_test_result
 82        
 83        return result
 84
 85    def __call__(self, value) -> Union[None, bool]:
 86        return self.test_trigger(value)
 87
 88    @staticmethod
 89    def _equal(value, value_limit) -> bool:
 90        return value == value_limit
 91
 92    @staticmethod
 93    def _lesser(value, value_limit) -> bool:
 94        return value < value_limit
 95
 96    @staticmethod
 97    def _lesser_or_equal(value, value_limit) -> bool:
 98        return value <= value_limit
 99
100    @staticmethod
101    def _bigger(value, value_limit) -> bool:
102        return value > value_limit
103
104    @staticmethod
105    def _bigger_or_equal(value, value_limit) -> bool:
106        return value >= value_limit
107
108    @staticmethod
109    def _not_equal(value, value_limit) -> bool:
110        return value != value_limit
FrontTriggerableVariable(triggerable_variable_type, value_limit)
53    def __init__(self, triggerable_variable_type, value_limit):
54        self.triggerable_variable_type = triggerable_variable_type
55        self.value_limit = value_limit
56        self._last_result = None
57        self.test_worker = None
58        self.set_triggerable_variable_type(triggerable_variable_type)
triggerable_variable_type
value_limit
test_worker
def set_triggerable_variable_type(self, triggerable_variable_type):
60    def set_triggerable_variable_type(self, triggerable_variable_type):
61        self._last_result = None
62        self.triggerable_variable_type = triggerable_variable_type
63        if FrontTriggerableVariableType.equal == triggerable_variable_type:
64            self.test_worker = FrontTriggerableVariable._equal
65        elif FrontTriggerableVariableType.lesser == triggerable_variable_type:
66            self.test_worker = FrontTriggerableVariable._lesser
67        elif FrontTriggerableVariableType.lesser_or_equal == triggerable_variable_type:
68            self.test_worker = FrontTriggerableVariable._lesser_or_equal
69        elif FrontTriggerableVariableType.bigger == triggerable_variable_type:
70            self.test_worker = FrontTriggerableVariable._bigger
71        elif FrontTriggerableVariableType.bigger_or_equal == triggerable_variable_type:
72            self.test_worker = FrontTriggerableVariable._bigger_or_equal
73        elif FrontTriggerableVariableType.not_equal == triggerable_variable_type:
74            self.test_worker = FrontTriggerableVariable._not_equal
def test_trigger(self, value) -> Union[NoneType, bool]:
76    def test_trigger(self, value) -> Union[None, bool]:
77        result = None
78        new_test_result = self.test_worker(value, self.value_limit)
79        if new_test_result != self._last_result:
80            self._last_result = new_test_result
81            result = new_test_result
82        
83        return result