class_docstr: Core :py:class:`.PluginManager` class which manages registration
  of plugin objects and 1:N hook calling.
  
  You can register new hooks by calling :py:meth:`add_hookspecs(module_or_class)
  <.PluginManager.add_hookspecs>`.
  You can register plugin objects (which contain hooks) by calling
  :py:meth:`register(plugin) <.PluginManager.register>`.  The :py:class:`.PluginManager`
  is initialized with a prefix that is searched for in the names of the dict
  of registered plugin objects.
  
  For debugging purposes you can call :py:meth:`.PluginManager.enable_tracing`
  which will subsequently send debug information to the trace helper.
docstr: If ``implprefix`` is given implementation functions
  will be recognized if their name matches the ``implprefix``. 
docstr_tok: ["If","``","implprefix","``","is","given","implementation","functions","will","be","recognized","if","their","name","matches","the","``","implprefix","``","."]
code: def __init__(self, project_name, implprefix=None):
      """If ``implprefix`` is given implementation functions
      will be recognized if their name matches the ``implprefix``."""
      self.project_name = project_name
      self._name2plugin = {}
      self._plugin2hookcallers = {}
      self._plugin_distinfo = []
      self.trace = _tracing.TagTracer().get("pluginmanage")
      self.hook = _HookRelay()
      if implprefix is not None:
          warnings.warn(
              "Support for the `implprefix` arg is now deprecated and will "
              "be removed in an upcoming release. Please use HookimplMarker.",
              DeprecationWarning,
              stacklevel=2,
          )
      self._implprefix = implprefix
      self._inner_hookexec = (
          lambda hook, methods, kwargs: hook.multicall(
              methods,
              kwargs,
              firstresult=hook.spec.opts.get("firstresult")
              if hook.spec
              else False,
          )
      )
  
imports: import inspect
  import sys
  from .None import _tracing
  from .callers import _Result
  from .hooks import HookImpl, _HookRelay, _HookCaller, normalize_hookimpl_opts
  import warnings
label_desc: Use image node_id 1 to create a new PluginManager object from inherited base classes: object with example: obj = PluginManager(project_name, implprefix)