docs: def threaded(  # noqa: F811
      name: typing.Optional[typing.Union[str, typing.Callable[..., typing.Any]]] = None,
      daemon: bool = False,
      started: bool = False,
  ) -> typing.Union[Threaded, typing.Callable[..., threading.Thread]]:
      """Run function in separate thread.
  
      :param name: New thread name.
                   If callable: use as wrapped function.
                   If none: use wrapped function name.
      :type name: typing.Union[None, str, typing.Callable]
      :param daemon: Daemonize thread.
      :type daemon: bool
      :param started: Return started thread
      :type started: bool
      :return: Threaded instance, if called as function or argumented decorator, else callable wraper
      :rtype: typing.Union[Threaded, typing.Callable[..., threading.Thread]]
      """
      if callable(name):
          func, name = (name, "Threaded: " + getattr(name, "__name__", str(hash(name))))
          return Threaded(name=name, daemon=daemon, started=started)(func)  # type: ignore
      return Threaded(name=name, daemon=daemon, started=started)