code: def make_label_dec(label, ds=None):
      """Factory function to create a decorator that applies one or more labels.
  
      Parameters
      ----------
      label : str or sequence
          One or more labels that will be applied by the decorator to the
          functions it decorates.  Labels are attributes of the decorated function
          with their value set to True.
      ds : str
          An optional docstring for the resulting decorator.  If not given, a
          default docstring is auto-generated.
  
      Returns
      -------
      ldec : function
          A decorator.
  
      Examples
      --------
      >>> slow = make_label_dec('slow')
      >>> print(slow.__doc__)
      Labels a test as 'slow'
  
      >>> rare = make_label_dec(['slow','hard'],
      ... "Mix labels 'slow' and 'hard' for rare tests")
      >>> @rare
      ... def f(): pass
      ...
      >>>
      >>> f.slow
      True
      >>> f.hard
      True
      """
      if isinstance(label, str):
          labels = [label]
      else:
          labels = label
      # Validate that the given label(s) are OK for use in setattr() by doing a
      # dry run on a dummy function.
      tmp = lambda: None
      for label in labels:
          setattr(tmp, label, True)
  
      # This is the actual decorator we'll return
      def decor(f):
          for label in labels:
              setattr(f, label, True)
          return f
  
      # Apply the user's docstring
      if ds is None:
          ds = f"Labels a test as {label!r}"
          decor.__doc__ = ds
      return decor
  
file_path: nipy/nipy/testing/decorators.py
imports: import functools
  from unittest import skipIf
  from nibabel.optpkg import optional_package
  from nipy.utils import DataError, example_data, templates
label_desc: Use image node_id 1 for calling a global function with example usage: make_label_dec(label, ds) and returns: decor, f