# MegEngine is Licensed under the Apache License, Version 2.0 (the "License") # # Copyright (c) 2014-2020 Megvii Inc. All rights reserved. # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT ARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. from functools import partial, update_wrapper, wraps def register_method_to_class(cls): def decorator(func): @wraps(func) def wrapper(self, *args, **kwargs): return func(self, *args, **kwargs) if isinstance(func, partial): update_wrapper(func, func.func) setattr(cls, func.__name__, wrapper) return func return decorator