class_docstr: Base class for all plugins.
docstr: Mark method as a hook triggered by the `Pluggable`.
docstr_tok: ["Mark","method","as","a","hook","triggered","by","the","`","Pluggable","`","."]
code: def mark_func_as_hook(
      cls, func: Callable, *events: EventIdenifier
  ) -> Callable:
      """Mark method as a hook triggered by the `Pluggable`."""
      if len(events) == 0:
          events = (func.__name__,)
      func._plugin_hook_events = events  # type: ignore[attr-defined]
      return func
  
imports: import logging
  from collections import defaultdict
  from inspect import isclass, signature
  from itertools import count
  from queue import Queue
  from typing import Any, Callable, Dict, Iterator, List, NewType, Optional, Sequence, Set, Type, Union, cast
label_desc: Use image node_id 4 for calling the BasePlugin obj's underlying member method code with example usage: obj.mark_func_as_hook(cls, func) and returns: func