equal
deleted
inserted
replaced
65 |
65 |
66 from warnings import warn |
66 from warnings import warn |
67 from copy import copy |
67 from copy import copy |
68 from types import MethodType |
68 from types import MethodType |
69 |
69 |
70 from six import string_types, add_metaclass |
70 from six import string_types, add_metaclass, create_bound_method |
71 from six.moves import range |
71 from six.moves import range |
72 |
72 |
73 from logilab.mtconverter import xml_escape |
73 from logilab.mtconverter import xml_escape |
74 from logilab.common.decorators import cachedproperty |
74 from logilab.common.decorators import cachedproperty |
75 from logilab.common.deprecation import class_deprecated |
75 from logilab.common.deprecation import class_deprecated |
724 try: |
724 try: |
725 acopy = copy(self) |
725 acopy = copy(self) |
726 for aname, member in[('renderfunc', renderfunc), |
726 for aname, member in[('renderfunc', renderfunc), |
727 ('sortfunc', sortfunc)]: |
727 ('sortfunc', sortfunc)]: |
728 if isinstance(member, MethodType): |
728 if isinstance(member, MethodType): |
729 member = MethodType(member.im_func, acopy, acopy.__class__) |
729 member = create_bound_method(member.__func__, acopy) |
730 setattr(acopy, aname, member) |
730 setattr(acopy, aname, member) |
731 return acopy |
731 return acopy |
732 finally: |
732 finally: |
733 self.renderfunc = renderfunc |
733 self.renderfunc = renderfunc |
734 self.sortfunc = sortfunc |
734 self.sortfunc = sortfunc |