code: def secho(
      message: t.Optional[t.Any] = None,
      file: t.Optional[t.IO[t.AnyStr]] = None,
      nl: bool = True,
      err: bool = False,
      color: t.Optional[bool] = None,
      **styles: t.Any,
  ) -> None:
      """This function combines :func:`echo` and :func:`style` into one
      call.  As such the following two calls are the same::
  
          click.secho('Hello World!', fg='green')
          click.echo(click.style('Hello World!', fg='green'))
  
      All keyword arguments are forwarded to the underlying functions
      depending on which one they go with.
  
      Non-string types will be converted to :class:`str`. However,
      :class:`bytes` are passed directly to :meth:`echo` without applying
      style. If you want to style bytes that represent text, call
      :meth:`bytes.decode` first.
  
      .. versionchanged:: 8.0
          A non-string ``message`` is converted to a string. Bytes are
          passed through without style applied.
  
      .. versionadded:: 2.0
      """
      if message is not None and not isinstance(
          message, (bytes, bytearray)
      ):
          message = style(message, **styles)
  
      return echo(message, file=file, nl=nl, err=err, color=color)
  
imports: import inspect
  import io
  import itertools
  import sys
  import typing
  from gettext import gettext
  from ._compat import isatty
  from ._compat import strip_ansi
  from .exceptions import Abort
  from .exceptions import UsageError
  from .globals import resolve_color_default
  from .types import Choice
  from .types import convert_type
  from .types import ParamType
  from .utils import echo
  from .utils import LazyFile
label_desc: Use image node_id 12 for calling a global function with example usage: secho(message, file, nl, err, color) and returns: echo