summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIlya Etingof <etingof@gmail.com>2019-07-31 21:26:37 +0200
committerIlya Etingof <etingof@gmail.com>2019-07-31 21:26:37 +0200
commitfc10c68fabf184116aaf1915e41a4f5fd21a4a27 (patch)
treebdda5c1baa665adca1f820339d358dc02f4024ef
parent2f7535c697c3ca9f7c930a5ea79293f0b8d4313b (diff)
downloadpyasn1-git-fc10c68fabf184116aaf1915e41a4f5fd21a4a27.tar.gz
Remove a couple of `except as` statements to benefit old Pythons
-rw-r--r--pyasn1/type/char.py2
-rw-r--r--pyasn1/type/univ.py16
2 files changed, 15 insertions, 3 deletions
diff --git a/pyasn1/type/char.py b/pyasn1/type/char.py
index 9cba4db..3f8c444 100644
--- a/pyasn1/type/char.py
+++ b/pyasn1/type/char.py
@@ -81,7 +81,7 @@ class AbstractCharacterString(univ.OctetString):
else:
return unicode(value)
- except (UnicodeDecodeError, LookupError) as exc:
+ except (UnicodeDecodeError, LookupError):
exc = sys.exc_info()[1]
raise error.PyAsn1UnicodeDecodeError(
"Can't decode string '%s' with codec "
diff --git a/pyasn1/type/univ.py b/pyasn1/type/univ.py
index 7715727..86e9855 100644
--- a/pyasn1/type/univ.py
+++ b/pyasn1/type/univ.py
@@ -832,22 +832,27 @@ class OctetString(base.SimpleAsn1Type):
def prettyIn(self, value):
if isinstance(value, str):
return value
+
elif isinstance(value, unicode):
try:
return value.encode(self.encoding)
+
except (LookupError, UnicodeEncodeError):
exc = sys.exc_info()[1]
raise error.PyAsn1UnicodeEncodeError(
"Can't encode string '%s' with codec "
"%s" % (value, self.encoding), exc
)
+
elif isinstance(value, (tuple, list)):
try:
return ''.join([chr(x) for x in value])
+
except ValueError:
raise error.PyAsn1Error(
"Bad %s initializer '%s'" % (self.__class__.__name__, value)
)
+
else:
return str(value)
@@ -875,19 +880,26 @@ class OctetString(base.SimpleAsn1Type):
def prettyIn(self, value):
if isinstance(value, bytes):
return value
+
elif isinstance(value, str):
try:
return value.encode(self.encoding)
- except UnicodeEncodeError as e:
+
+ except UnicodeEncodeError:
+ exc = sys.exc_info()[1]
raise error.PyAsn1UnicodeEncodeError(
- "Can't encode string '%s' with '%s' codec" % (value, self.encoding), e
+ "Can't encode string '%s' with '%s' "
+ "codec" % (value, self.encoding), exc
)
elif isinstance(value, OctetString): # a shortcut, bytes() would work the same way
return value.asOctets()
+
elif isinstance(value, base.SimpleAsn1Type): # this mostly targets Integer objects
return self.prettyIn(str(value))
+
elif isinstance(value, (tuple, list)):
return self.prettyIn(bytes(value))
+
else:
return bytes(value)