code: def metar(data: MetarData, units: Units) -> str:
      
      speech = []
      if data.wind_direction and data.wind_speed:
          speech.append(wind(data.wind_direction, data.wind_speed,
                             data.wind_gust, data.wind_variable_direction,
                             units.wind_speed))
      if data.visibility:
          speech.append(visibility(data.visibility, units.visibility))
      if data.temperature:
          speech.append(temperature('Temperature', data.temperature, units.temperature))
      if data.dewpoint:
          speech.append(temperature('Dew point', data.dewpoint, units.temperature))
      if data.altimeter:
          speech.append(altimeter(data.altimeter, units.altimeter))
      if data.other:
          speech.append(other(data.other))
      speech.append(translate.clouds(data.clouds,
                                     units.altitude).replace(' - Reported AGL', ''))
      return ('. '.join([l for l in speech if l])).replace(',', '.')
docs: Convert MetarData into a string for text-to-speech