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: Return a new :py:class:`.hooks._HookCaller` instance for the named method
  which manages calls to all registered plugins except the
  ones from remove_plugins. 
docstr_tok: ["Return","a","new",":","py",":","class",":","`",".hooks._HookCaller","`","instance","for","the","named","method","which","manages","calls","to","all","registered","plugins","except","the","ones","from","remove_plugins","."]
code: def subset_hook_caller(self, name, remove_plugins):
      """Return a new :py:class:`.hooks._HookCaller` instance for the named method
      which manages calls to all registered plugins except the
      ones from remove_plugins."""
      orig = getattr(self.hook, name)
      plugins_to_remove = [
          plug for plug in remove_plugins if hasattr(plug, name)
      ]
      if plugins_to_remove:
          hc = _HookCaller(
              orig.name,
              orig._hookexec,
              orig.spec.namespace,
              orig.spec.opts,
          )
          for hookimpl in orig.get_hookimpls():
              plugin = hookimpl.plugin
              if plugin not in plugins_to_remove:
                  hc._add_hookimpl(hookimpl)
                  # we also keep track of this hook caller so it
                  # gets properly removed on plugin unregistration
                  self._plugin2hookcallers.setdefault(
                      plugin, []
                  ).append(hc)
          return hc
      return orig
  
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 24 for calling the PluginManager obj's underlying member method code with example usage: obj.subset_hook_caller(name, remove_plugins) and returns: orig, hc