diff options
author | R. Tyler Ballance <tyler@monkeypox.org> | 2010-01-03 13:23:28 -0800 |
---|---|---|
committer | R. Tyler Ballance <tyler@monkeypox.org> | 2010-01-03 13:23:28 -0800 |
commit | dd56eea7375f24b782c136cfacca30d4022e9132 (patch) | |
tree | 36021c233eb01b7b2f68790cd838c15479e81b58 | |
parent | 189eaa59f1060d9e9476b277abf0b4e1f116b46d (diff) | |
download | python-cheetah-dd56eea7375f24b782c136cfacca30d4022e9132.tar.gz |
Support difference between types.MethodType constructors in Python2 vs. Python3
-rw-r--r-- | cheetah/Template.py | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/cheetah/Template.py b/cheetah/Template.py index 7231db8..f42f77b 100644 --- a/cheetah/Template.py +++ b/cheetah/Template.py @@ -31,18 +31,19 @@ except ImportError: pass filetype = None -try: - # Python3 + +if isinstance(sys.version_info, tuple): + # Python 2.xx + filetype = types.FileType + def createMethod(func, cls): + return types.MethodType(func, None, cls) +else: import io filetype = io.IOBase -except ImportError: - filetype = types.FileType + def createMethod(func, cls): + return types.MethodType(func, cls) + -try: - x = set() -except NameError: - # Python 2.3 compatibility - from sets import Set as set from Cheetah.Version import convertVersionStringToTuple, MinCompatibleVersionTuple from Cheetah.Version import MinCompatibleVersion @@ -980,7 +981,7 @@ class Template(Servlet): for methodname in klass._CHEETAH_requiredCheetahMethods: if not hasattr(concreteTemplateClass, methodname): method = getattr(Template, methodname) - newMethod = types.MethodType(method.im_func, None, concreteTemplateClass) + newMethod = createMethod(method.im_func, concreteTemplateClass) setattr(concreteTemplateClass, methodname, newMethod) for classMethName in klass._CHEETAH_requiredCheetahClassMethods: @@ -1036,8 +1037,8 @@ class Template(Servlet): else: return super(self.__class__, self).__unicode__() - __str__ = types.MethodType(__str__, None, concreteTemplateClass) - __unicode__ = types.MethodType(__unicode__, None, concreteTemplateClass) + __str__ = createMethod(__str__, concreteTemplateClass) + __unicode__ = createMethod(__unicode__, concreteTemplateClass) setattr(concreteTemplateClass, '__str__', __str__) setattr(concreteTemplateClass, '__unicode__', __unicode__) |