diff options
author | Ilya Etingof <etingof@gmail.com> | 2019-07-31 21:26:37 +0200 |
---|---|---|
committer | Ilya Etingof <etingof@gmail.com> | 2019-07-31 21:26:37 +0200 |
commit | fc10c68fabf184116aaf1915e41a4f5fd21a4a27 (patch) | |
tree | bdda5c1baa665adca1f820339d358dc02f4024ef | |
parent | 2f7535c697c3ca9f7c930a5ea79293f0b8d4313b (diff) | |
download | pyasn1-fc10c68fabf184116aaf1915e41a4f5fd21a4a27.tar.gz |
Remove a couple of `except as` statements to benefit old Pythons
-rw-r--r-- | pyasn1/type/char.py | 2 | ||||
-rw-r--r-- | pyasn1/type/univ.py | 16 |
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) |