code: def make_default_docstr(func, with_args=True, with_ret=True,
                          with_commandline=True, with_example=True,
                          with_header=False, with_debug=False):
      r
      import utool as ut
      funcinfo = ut.util_inspect.infer_function_info(func)
      argname_list   = funcinfo.argname_list
      argtype_list   = funcinfo.argtype_list
      argdesc_list   = funcinfo.argdesc_list
      return_header  = funcinfo.return_header
      return_type    = funcinfo.return_type
      return_name    = funcinfo.return_name
      return_desc    = funcinfo.return_desc
      funcname       = funcinfo.funcname
      modname        = funcinfo.modname
      defaults       = funcinfo.defaults
      num_indent     = funcinfo.num_indent
      needs_surround = funcinfo.needs_surround
      funcname       = funcinfo.funcname
      ismethod       = funcinfo.ismethod
      va_name        = funcinfo.va_name
      kw_name        = funcinfo.kw_name
      kw_keys        = funcinfo.kw_keys
      docstr_parts = []
      if with_header:
          header_block = funcname
          docstr_parts.append(header_block)
      if with_args and len(argname_list) > 0:
          argheader = 'Args'
          arg_docstr = make_args_docstr(argname_list, argtype_list, argdesc_list,
                                        ismethod, va_name, kw_name, kw_keys)
          argsblock = make_docstr_block(argheader, arg_docstr)
          docstr_parts.append(argsblock)
      if with_ret and return_header is not None:
          if return_header is not None:
              return_doctr = make_returns_or_yeilds_docstr(return_type, return_name, return_desc)
              returnblock = make_docstr_block(return_header, return_doctr)
              docstr_parts.append(returnblock)
      if with_commandline:
          cmdlineheader = 'CommandLine'
          cmdlinecode = make_cmdline_docstr(funcname, modname)
          cmdlineblock = make_docstr_block(cmdlineheader, cmdlinecode)
          docstr_parts.append(cmdlineblock)
      if with_example:
          exampleheader = 'Example'
          examplecode = make_example_docstr(funcname, modname, argname_list,
                                            defaults, return_type, return_name,
                                            ismethod)
          examplecode_ = ut.indent(examplecode, '>>> ')
          exampleblock = make_docstr_block(exampleheader, examplecode_)
          docstr_parts.append(exampleblock)
      if with_debug:
          debugheader = 'Debug'
          debugblock = ut.codeblock(
              '''
              num_indent = {num_indent}
              '''
          ).format(num_indent=num_indent)
          debugblock = make_docstr_block(debugheader, debugblock)
          docstr_parts.append(debugblock)
      if needs_surround:
  docstr_parts = ['r']
          default_docstr = '\n'.join(docstr_parts)
      else:
          default_docstr = '\n\n'.join(docstr_parts)
      docstr_indent = ' ' * (num_indent + 4)
      default_docstr = ut.indent(default_docstr, docstr_indent)
      return default_docstr