code: def subtask(*args, **kwargs):
      '''Decorator which prints out the name of the decorated function on
      execution.
      '''
      depth = kwargs.get('depth', 2)
      prefix = kwargs.get('prefix', '\n' + '#' * depth + ' ')
      tail = kwargs.get('tail', '\n')
      doc1 = kwargs.get('doc1', False)
      color = kwargs.get('color', cyan)
  
      def real_decorator(func):
          if doc1:
              return print_full_name(color=color, prefix=prefix,
                                     tail=tail)(print_doc1(func))
          return print_full_name(color=color, prefix=prefix, tail=tail)(func)
  
      invoked = bool(not args or kwargs)
      if not invoked:
          # invoke decorator function which returns the wrapper function
          return real_decorator(func=args[0])
      return real_decoratof subtask(*args, **kwargs):
      '''Decorator which prints out the name of the decorated function on
      execution.
      '''
      depth = kwargs.get('depth', 2)
      prefix = kwargs.get('prefix', '\n' + '#' * depth + ' ')
      tail = kwargs.get('tail', '\n')
      doc1 = kwargs.get('doc1', False)
      color = kwargs.get('color', cyan)
  
      def real_decorator(func):
          if doc1:
              return print_full_name(color=color, prefix=prefix,
                                     tail=tail)(print_doc1(func))
          return print_full_name(color=color, prefix=prefix, tail=tail)(func)
  
      invoked = bool(not args or kwargs)
      if not invoked:
          # invoke decorator function which returns the wrapper function
          return real_decorator(func=args[0])
      return real_decorator
docs: Decorator which prints out the name of the decorated function on
      execution.