Bind deps to instance

        :param instance:
        :param auto: follow update of DI and refresh binds once we will get something new
        :return:

def bind(self, instance, auto=False):
        """
        Bind deps to instance

        :param instance:
        :param auto: follow update of DI and refresh binds once we will get something new
        :return:
        """
        methods = [
            (m, cls.__dict__[m])
            for cls in inspect.getmro(type(instance))
            for m in cls.__dict__ if inspect.isfunction(cls.__dict__[m])
            ]

        try:
            deps_of_endpoints = [(method_ptr, self.entrypoint_deps(method_ptr))
                                 for (method_name, method_ptr) in methods]

            for (method_ptr, method_deps) in deps_of_endpoints:
                if len(method_deps) > 0:
                    method_ptr(instance, **method_deps)
        except KeyError:
            pass

        if auto and instance not in self.current_scope.get_auto_bind_list():
            self.current_scope.auto_bind(instance)

        return instance