MLRsearch: Support other than just two ratios
[csit.git] / resources / libraries / python / MLRsearch / ReceiveRateInterval.py
index eff23e8..993561e 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (c) 2019 Cisco and/or its affiliates.
+# Copyright (c) 2021 Cisco and/or its affiliates.
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 # You may obtain a copy of the License at:
 
 import math
 
-from .ReceiveRateMeasurement import ReceiveRateMeasurement
-
 
 class ReceiveRateInterval:
     """Structure defining two Rr measurements, and their relation."""
 
     def __init__(self, measured_low, measured_high):
-        """Store the bound measurements after checking argument types.
+        """Store the bound measurements and call sort.
 
         :param measured_low: Measurement for the lower bound.
         :param measured_high: Measurement for the upper bound.
         :type measured_low: ReceiveRateMeasurement.ReceiveRateMeasurement
         :type measured_high: ReceiveRateMeasurement.ReceiveRateMeasurement
         """
-        # TODO: Type checking is not very pythonic,
-        # perhaps users can fix wrong usage without it?
-        if not isinstance(measured_low, ReceiveRateMeasurement):
-            raise TypeError(
-                f"measured_low is not a ReceiveRateMeasurement: "
-                f"{measured_low!r}"
-            )
-        if not isinstance(measured_high, ReceiveRateMeasurement):
-            raise TypeError(
-                f"measured_high is not a ReceiveRateMeasurement: "
-                f"{measured_high!r}"
-            )
         self.measured_low = measured_low
         self.measured_high = measured_high
         # Declare secondary quantities to appease pylint.
@@ -61,6 +47,15 @@ class ReceiveRateInterval:
         )
         self.rel_tr_width = self.abs_tr_width / self.measured_high.target_tr
 
+    def __str__(self):
+        """Return string as half-open interval."""
+        return f"[{self.measured_low!s};{self.measured_high!s})"
+
+    def __repr__(self):
+        """Return string evaluable as a constructor call."""
+        return f"ReceiveRateInterval(measured_low={self.measured_low!r}," \
+            f"measured_high={self.measured_high!r})"
+
     def width_in_goals(self, relative_width_goal):
         """Return float value.
 
@@ -77,12 +72,3 @@ class ReceiveRateInterval:
         """
         return math.log(1.0 - self.rel_tr_width) / math.log(
             1.0 - relative_width_goal)
-
-    def __str__(self):
-        """Return string as half-open interval."""
-        return f"[{self.measured_low!s};{self.measured_high!s})"
-
-    def __repr__(self):
-        """Return string evaluable as a constructor call."""
-        return f"ReceiveRateInterval(measured_low={self.measured_low!r}," \
-            f"measured_high={self.measured_high!r})"