summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIlya Etingof <etingof@gmail.com>2018-07-20 09:05:29 +0200
committerIlya Etingof <etingof@gmail.com>2018-07-20 09:53:47 +0200
commit6031836dfa0048d1de5643770175c648df840d88 (patch)
treed318e39585826a6b9b6c56725f1c6465acf617a2
parentd70831c76f1fb60a130080040cbe720b60a54894 (diff)
downloadpysnmp-git-6031836dfa0048d1de5643770175c648df840d88.tar.gz
Fix `Bits` initialization with `namedValues`
-rw-r--r--CHANGES.txt1
-rw-r--r--pysnmp/proto/rfc1902.py9
2 files changed, 6 insertions, 4 deletions
diff --git a/CHANGES.txt b/CHANGES.txt
index be7ab3a8..f57aa6a8 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -6,6 +6,7 @@ Revision 4.4.5, released 2018-04-XX
- Fixed typo in RFC1158 module
- Fixed possible infinite loop in GETBULK response PDU builder
- Fixed memory leak in the T`config.delContext()` VACM management harness
+- Fixed `Bits` class initialization when enumeration values are given
Revision 4.4.4, released 2018-01-03
-----------------------------------
diff --git a/pysnmp/proto/rfc1902.py b/pysnmp/proto/rfc1902.py
index 12237482..3370f478 100644
--- a/pysnmp/proto/rfc1902.py
+++ b/pysnmp/proto/rfc1902.py
@@ -598,11 +598,12 @@ class Bits(OctetString):
"""
namedValues = namedval.NamedValues()
- def __init__(self, value=univ.noValue, **kwargs):
- if 'namedValues' not in kwargs:
- kwargs['namedValues'] = self.namedValues
+ def __new__(cls, *args, **kwargs):
+ if 'namedValues' in kwargs:
+ Bits = cls.withNamedBits(**kwargs.pop('namedValues'))
+ return Bits(*args, **kwargs)
- OctetString.__init__(self, value, **kwargs)
+ return OctetString.__new__(cls)
def prettyIn(self, bits):
if not isinstance(bits, (tuple, list)):