From: Stefan Behnel Date: Mon, 4 May 2009 18:24:35 +0000 (+0200) Subject: prevent redundant type checks when 'converting' between str and bytes type X-Git-Tag: 0.11.2.rc1~10^2~36^2~3 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=e9db1e9a53e318b4710369bbf4686b7d5d238259;p=cython.git prevent redundant type checks when 'converting' between str and bytes type --- diff --git a/Cython/Compiler/PyrexTypes.py b/Cython/Compiler/PyrexTypes.py index 7bba4707..2f6302a2 100644 --- a/Cython/Compiler/PyrexTypes.py +++ b/Cython/Compiler/PyrexTypes.py @@ -274,8 +274,14 @@ class BuiltinObjectType(PyObjectType): base_type = None module_name = '__builtin__' + alternative_name = None # used for str/bytes duality + def __init__(self, name, cname): self.name = name + if name == 'str': + self.alternative_name = 'bytes' + elif name == 'bytes': + self.alternative_name = 'str' self.cname = cname self.typeptr_cname = "&" + cname @@ -292,7 +298,9 @@ class BuiltinObjectType(PyObjectType): def assignable_from(self, src_type): if isinstance(src_type, BuiltinObjectType): - return src_type.name == self.name + return src_type.name == self.name or ( + src_type.name == self.alternative_name and + src_type.name is not None) else: return not src_type.is_extension_type