original_docstring: 
      A decorator decorator, allowing to use the decorator to be used without
      parentheses if not arguments are provided. All arguments must be optional.
      
docstring: A decorator decorator, allowing to use the decorator to be used without
  parentheses if not arguments are provided. All arguments must be optional.
docstring_tokens: A decorator decorator allowing to use the decorator to be used without parentheses if not arguments are provided . All arguments must be optional .
code: def doublewrap(function):
      """
      A decorator decorator, allowing to use the decorator to be used without
      parentheses if not arguments are provided. All arguments must be optional.
      """
  
      @functools.wraps(function)
      def decorator(*args, **kwargs):
          if len(args) == 1 and len(kwargs) == 0 and callable(args[0]):
              return function(args[0])
          else:
              return lambda wrapee: function(wrapee, *args, **kwargs)
  
      return decorator
code_tokens: def doublewrap ( function ) : @ functools . wraps ( function ) def decorator ( * args , ** kwargs ) : if len ( args ) == 1 and len ( kwargs ) == 0 and callable ( args [ 0 ] ) : return function ( args [ 0 ] ) else : return lambda wrapee : function ( wrapee , * args , ** kwargs ) return decorator
short_docstring: A decorator decorator, allowing to use the decorator to be used without
  parentheses if not arguments are provided.
short_docstring_tokens: A decorator decorator allowing to use the decorator to be used without parentheses if not arguments are provided .
comment: """
      A decorator decorator, allowing to use the decorator to be used without
      parentheses if not arguments are provided. All arguments must be optional.
      """