@classmethod
    def has_components(cls, table):

        components = current.model.components

        load = cls.table
        get_hooks = cls.__get_hooks

        hooks = Storage()
        if type(table) is Table:
            tablename = table._tablename
        else:
            tablename = table
            table = load(tablename)
            if table is None:
                return False
        h = components.get(tablename, None)
        if h:
            get_hooks(hooks, h)
        if len(hooks):
            return True
        supertables = cls.get_config(tablename, "super_entity")
        if supertables:
            if not isinstance(supertables, (list, tuple)):
                supertables = [supertables]
            for s in supertables:
                if isinstance(s, str):
                    s = load(s)
                if s is None:
                    continue
                h = components.get(s._tablename, None)
                if h:
                    get_hooks(hooks, h, supertable=s)
            if len(hooks):
                return True
        return False

    # -------------------------------------------------------------------------
Returns:
dataset/ETHPy150Open sahana/eden/modules/s3/s3model.py/S3Model.has_components--crossover with--dataset/ETHPy150Open meraki-analytics/cassiopeia/cassiopeia/type/core/match.py/ParticipantTimeline.cs_diff_per_min_deltas