X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=resources%2Flibraries%2Fpython%2FMLRsearch%2FReceiveRateInterval.py;h=993561e396521e176922628fbe33216eb2b8ad30;hb=fa3c865b27c2cfcf11b5fc45bf1a34290f3c32ce;hp=05e0f10013b4783a8ad4a9c33ffccd4c63e62f64;hpb=ad27739cd87a75b172fd415fc20db08983ea4e13;p=csit.git diff --git a/resources/libraries/python/MLRsearch/ReceiveRateInterval.py b/resources/libraries/python/MLRsearch/ReceiveRateInterval.py index 05e0f10013..993561e396 100644 --- a/resources/libraries/python/MLRsearch/ReceiveRateInterval.py +++ b/resources/libraries/python/MLRsearch/ReceiveRateInterval.py @@ -1,4 +1,4 @@ -# Copyright (c) 2018 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: @@ -15,28 +15,18 @@ import math -from ReceiveRateMeasurement import ReceiveRateMeasurement - -class ReceiveRateInterval(object): +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 - :type measured_high: ReceiveRateMeasurement + :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("measured_low is not a ReceiveRateMeasurement: " - "{low!r}".format(low=measured_low)) - if not isinstance(measured_high, ReceiveRateMeasurement): - raise TypeError("measured_high is not a ReceiveRateMeasurement: " - "{high!r}".format(high=measured_high)) self.measured_low = measured_low self.measured_high = measured_high # Declare secondary quantities to appease pylint. @@ -50,11 +40,22 @@ class ReceiveRateInterval(object): """Sort bounds by target Tr, compute secondary quantities.""" if self.measured_low.target_tr > self.measured_high.target_tr: self.measured_low, self.measured_high = ( - self.measured_high, self.measured_low) + self.measured_high, self.measured_low + ) self.abs_tr_width = ( - self.measured_high.target_tr - self.measured_low.target_tr) + self.measured_high.target_tr - self.measured_low.target_tr + ) 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. @@ -71,14 +72,3 @@ class ReceiveRateInterval(object): """ 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 "[{low!s};{high!s})".format( - low=self.measured_low, high=self.measured_high) - - def __repr__(self): - """Return string evaluable as a constructor call.""" - return ("ReceiveRateInterval(measured_low={low!r}" - ",measured_high={high!r})".format( - low=self.measured_low, high=self.measured_high))