From e9db1e9a53e318b4710369bbf4686b7d5d238259 Mon Sep 17 00:00:00 2001 From: Stefan Behnel Date: Mon, 4 May 2009 20:24:35 +0200 Subject: [PATCH] prevent redundant type checks when 'converting' between str and bytes type --- Cython/Compiler/PyrexTypes.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) 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 -- 2.26.2