code: def qr(
      x: torch.Tensor,
      /,
      *,
      mode: str = "reduced",
      out: Optional[Tuple[torch.Tensor, torch.Tensor]] = None,
  ) -> Tuple[torch.Tensor, torch.Tensor]:
      res = namedtuple("qr", ["Q", "R"])
      if mode == "reduced":
          q, r = torch.qr(x, some=True, out=out)
          ret = res(q, r)
      elif mode == "complete":
          q, r = torch.qr(x, some=False, out=out)
          ret = res(q, r)
      else:
          raise ivy.utils.exceptions.IvyException(
              "Only 'reduced' and 'complete' qr modes are allowed for the torch backend."
          )
      return ret
  
imports: import torch
  from typing import Union, Optional, Tuple, Literal, List, NamedTuple, Sequence
  from collections import namedtuple
  import ivy
  from ivy import inf
  from ivy.func_wrapper import with_unsupported_dtypes, with_supported_dtypes
  from .None import backend_version
  from .elementwise import _cast_for_unary_op
label_desc: Use image node_id 18 for calling a global function with example usage: qr() and returns: ret