summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorelie <elie>2014-06-17 14:35:12 +0000
committerelie <elie>2014-06-17 14:35:12 +0000
commit18c8d20207ffe5e325b7e642373528019be580fb (patch)
treeccb45dc4cf5afbab53fcf6392b2c1b4098f8e748
parent87cb54cf65768c1874cdceeb539ec07a336519da (diff)
downloadpyasn1-18c8d20207ffe5e325b7e642373528019be580fb.tar.gz
the OctetString.__int__() and .__float__() magic methods implemented
-rw-r--r--CHANGES1
-rw-r--r--pyasn1/type/univ.py18
2 files changed, 11 insertions, 8 deletions
diff --git a/CHANGES b/CHANGES
index 13b7588..3f96608 100644
--- a/CHANGES
+++ b/CHANGES
@@ -39,6 +39,7 @@ Revision 0.1.8
- More Python magic methods implementations added to Integer & Real classes
(e.g. __pos__, __neg__, __round__, __floor__, __ceil__, __trunc__)
- The Integer.__invert__ Python magic method implemented.
+- The OctetString.__int__() and .__float__() magic methods implemented.
- Handle the case of null writer at Debug printer.
- Fix to NamedType.__repr__() to work properly.
- Fixes to __repr__() implementation of many built-in ASN.1 types to take into
diff --git a/pyasn1/type/univ.py b/pyasn1/type/univ.py
index 7101da4..15b5017 100644
--- a/pyasn1/type/univ.py
+++ b/pyasn1/type/univ.py
@@ -299,7 +299,7 @@ class OctetString(base.AbstractSimpleAsn1Item):
value = self.defaultHexValue
if value is None or value is base.noValue:
value = self.defaultBinValue
- self.__intValue = None
+ self.__asNumbersCache = None
base.AbstractSimpleAsn1Item.__init__(self, value, tagSet, subtypeSpec)
def clone(self, value=None, tagSet=None, subtypeSpec=None,
@@ -436,17 +436,17 @@ class OctetString(base.AbstractSimpleAsn1Item):
return self._value.decode(self._encoding, 'ignore')
def asOctets(self): return self._value
def asNumbers(self):
- if self.__intValue is None:
- self.__intValue = tuple([ ord(x) for x in self._value ])
- return self.__intValue
+ if self.__asNumbersCache is None:
+ self.__asNumbersCache = tuple([ ord(x) for x in self._value ])
+ return self.__asNumbersCache
else:
def __str__(self): return self._value.decode(self._encoding, 'ignore')
def __bytes__(self): return self._value
def asOctets(self): return self._value
def asNumbers(self):
- if self.__intValue is None:
- self.__intValue = tuple(self._value)
- return self.__intValue
+ if self.__asNumbersCache is None:
+ self.__asNumbersCache = tuple(self._value)
+ return self.__asNumbersCache
# Immutable sequence object protocol
@@ -464,7 +464,9 @@ class OctetString(base.AbstractSimpleAsn1Item):
def __radd__(self, value): return self.clone(self.prettyIn(value) + self._value)
def __mul__(self, value): return self.clone(self._value * value)
def __rmul__(self, value): return self * value
-
+ def __int__(self): return int(self._value)
+ def __float__(self): return float(self._value)
+
class Null(OctetString):
defaultValue = ''.encode() # This is tightly constrained
tagSet = baseTagSet = tag.initTagSet(