Coverage for src \ syriantaxes \ bracket.py: 64%

28 statements  

« prev     ^ index     » next       coverage.py v7.13.0, created at 2025-12-12 14:00 +0200

1from decimal import Decimal 

2 

3from .cast import cast_to_decimal 

4from .types import Number 

5 

6 

7class Bracket: 

8 def __init__(self, _min: Number, _max: Number, rate: Number) -> None: 

9 self._min = cast_to_decimal(_min, lt=Decimal(0)) 

10 self._max = cast_to_decimal(_max, lte=self._min) 

11 self._rate = cast_to_decimal(rate, lt=Decimal(0), gt=Decimal(1)) 

12 

13 @property 

14 def min(self) -> Decimal: 

15 return self._min 

16 

17 @min.setter 

18 def min(self, value: Number) -> None: 

19 self._min = cast_to_decimal(value, lt=Decimal(0), gte=self._max) 

20 

21 @property 

22 def max(self) -> Decimal: 

23 return self._max 

24 

25 @max.setter 

26 def max(self, value: Number) -> None: 

27 self._max = cast_to_decimal(value, lte=self._min) 

28 

29 @property 

30 def rate(self) -> Decimal: 

31 return self._rate 

32 

33 @rate.setter 

34 def rate(self, value: Number) -> None: 

35 self._rate = cast_to_decimal(value, lt=Decimal(0), gt=Decimal(1)) 

36 

37 def __repr__(self) -> str: 

38 return f"Bracket(min={self._min}, max={self._max}, rate={self._rate})"