diff options
author | Vratko Polak <vrpolak@cisco.com> | 2018-06-13 13:04:01 +0200 |
---|---|---|
committer | Tibor Frank <tifrank@cisco.com> | 2018-06-15 10:16:43 +0000 |
commit | a2a0ab1cdec3567dcad46c2000337707777aa0ca (patch) | |
tree | 8d6147d2fda535c5c32c432a4ea7f3ec3124c8d9 /resources/tools/presentation/new/jumpavg/BitCountingGroupList.py | |
parent | 5120b1082aa70f6e75511e9d95a2a7c303e25f9a (diff) |
CSIT-1110: Prepare for migrating the new detection
+ Do not declare BitCountingClassifier.classify() as class method.
+ Make BitCountingGroupList subclass of list.
+ Inherit from abstract classes whenever possible.
+ Drop unneeded imports.
+ Add module docstrings and class docstrings anywhere.
+ Add TODOs hinting at possible improvements.
Change-Id: Iccfff5c0e7be0607d6cfa74314083fcfe5a4d7d9
Signed-off-by: Vratko Polak <vrpolak@cisco.com>
Diffstat (limited to 'resources/tools/presentation/new/jumpavg/BitCountingGroupList.py')
-rw-r--r-- | resources/tools/presentation/new/jumpavg/BitCountingGroupList.py | 35 |
1 files changed, 20 insertions, 15 deletions
diff --git a/resources/tools/presentation/new/jumpavg/BitCountingGroupList.py b/resources/tools/presentation/new/jumpavg/BitCountingGroupList.py index 7da0656782..1f69c0635d 100644 --- a/resources/tools/presentation/new/jumpavg/BitCountingGroupList.py +++ b/resources/tools/presentation/new/jumpavg/BitCountingGroupList.py @@ -11,11 +11,26 @@ # See the License for the specific language governing permissions and # limitations under the License. +"""Module holding BitCountingGroupList class.""" + from BitCountingGroup import BitCountingGroup from BitCountingMetadataFactory import BitCountingMetadataFactory -class BitCountingGroupList(object): +class BitCountingGroupList(list): + """List of BitCountingGroup which tracks overall bit count. + + This is useful, as bit count of a subsequent group + depends on average of the previous group. + Having the logic encapsulated here spares the caller + the effort to pass averages around. + + Method with_value_added_to_last_group() delegates to BitCountingGroup, + with_group_appended() adds new group with recalculated bits. + + TODO: last_group.metadata_factory.max_value in with_group_appended() + is ugly, find a more natural class design. + """ def __init__(self, group_list=[], bits=None): """Create a group list from given list of groups. @@ -25,7 +40,7 @@ class BitCountingGroupList(object): :type group_list: list of BitCountingGroup :type bits: float or None """ - self.group_list = group_list + super(BitCountingGroupList, self).__init__(group_list) if bits is not None: self.bits = bits return @@ -34,16 +49,6 @@ class BitCountingGroupList(object): bits += group.metadata.bits self.bits = bits - def __getitem__(self, index): - """Return group at the index. This makes self iterable. - - :param index: The position in the array of groups. - :type index: int - :returns: Group at the position. - :rtype: BitCountingGroup - """ - return self.group_list[index] - def with_group_appended(self, group): """Create and return new group list with given group more than self. @@ -54,7 +59,7 @@ class BitCountingGroupList(object): :returns: New group list with added group. :rtype: BitCountingGroupList """ - group_list = list(self.group_list) + group_list = list(self) if group_list: last_group = group_list[-1] factory = BitCountingMetadataFactory( @@ -73,10 +78,10 @@ class BitCountingGroupList(object): :returns: New group list with the last group updated. :rtype: BitCountingGroupList """ - last_group = self.group_list[-1] + group_list = list(self) + last_group = group_list[-1] bits_before = last_group.metadata.bits last_group = last_group.with_run_added(value) - group_list = list(self.group_list) group_list[-1] = last_group bits = self.bits - bits_before + last_group.metadata.bits return BitCountingGroupList(group_list, bits) |