From 26cf6ccd4bfd910bb9cb07ebebbb816e66e1ad2c Mon Sep 17 00:00:00 2001 From: Alexey Stepanov Date: Fri, 9 Dec 2016 13:33:36 +0300 Subject: [PATCH] During mapping store, all slice mappings is re-calculated to slices Signed-off-by: Alexey Stepanov --- binfield/binfield.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/binfield/binfield.py b/binfield/binfield.py index 026629c..508321b 100644 --- a/binfield/binfield.py +++ b/binfield/binfield.py @@ -618,8 +618,6 @@ def __getitem__(self, item): return self._getslice_(slice(idx, idx + 1), name=item) if isinstance(idx, slice): return self._getslice_(idx, name=item) - if isinstance(idx, (tuple, list)): - return self._getslice_(slice(*idx), name=item) if isinstance(idx, dict): # Nested _mapping_ # Extract slice @@ -691,6 +689,11 @@ def _set_bit_(self, key, value): self._value_ = mask | value << key def __setitem__(self, key, value): + """Indexed setter + + :type key: union(str, int, slice, list, tuple) + :type value: int + """ if not isinstance(value, int): raise TypeError( 'BinField value could be set only as int' @@ -712,7 +715,7 @@ def __setitem__(self, key, value): raise IndexError("Mapping is not available") idx = self._mapping_.get(key) - if isinstance(idx, (int, slice, tuple)): + if isinstance(idx, (int, slice)): return self.__setitem__(idx, value) if isinstance(