code: def wind(direction: Number,
           speed: Number,
           gust: Number,
           vardir: typing.List[Number] = None,  # type: ignore
           unit: str = 'kt',
           cardinals: bool = True,
           spoken: bool = False) -> str:
      
      ret = ''
      target = 'spoken' if spoken else 'repr'
      # Wind direction
      if direction:
          if direction.repr in WIND_DIR_REPR:
              ret += WIND_DIR_REPR[direction.repr]
          elif direction.value is None:
              ret += direction.repr
          else:
              if cardinals:
                  ret += get_cardinal_direction(direction.value) + '-'  # type: ignore
              ret += getattr(direction, target)
      # Variable direction
      if vardir and isinstance(vardir, list):
          vardir = [getattr(var, target) for var in vardir]
          ret += ' (variable {} to {})'.format(*vardir)
      # Speed
      if speed and speed.value:
          ret += f' at {speed.value}{unit}'
      # Gust
      if gust and gust.value:
          ret += f' gusting to {gust.value}{unit}'
      return ret
docs: Format wind elements into a readable sentence
  
      Returns the translation string
  
      Ex: NNE-020 (variable 010 to 040) at 14kt gusting to 20kt