docs: def write_headers(self, headers):
          """
          Write all the necessary headers in the correct order::
  
              writer.write_headers({
                  'manufacturer_code': 'XCS',
                  'logger_id': 'TBX',
                  'date': datetime.date(1987, 2, 24),
                  'fix_accuracy': 50,
                  'pilot': 'Tobias Bieniek',
                  'copilot': 'John Doe',
                  'glider_type': 'Duo Discus',
                  'glider_id': 'D-KKHH',
                  'firmware_version': '2.2',
                  'hardware_version': '2',
                  'logger_type': 'LXNAVIGATION,LX8000F',
                  'gps_receiver': 'uBLOX LEA-4S-2,16,max9000m',
                  'pressure_sensor': 'INTERSEMA,MS5534A,max10000m',
                  'competition_id': '2H',
                  'competition_class': 'Doubleseater',
              })
  
              # -> AXCSTBX
              # -> HFDTE870224
              # -> HFFXA050
              # -> HFPLTPILOTINCHARGE:Tobias Bieniek
              # -> HFCM2CREW2:John Doe
              # -> HFGTYGLIDERTYPE:Duo Discus
              # -> HFGIDGLIDERID:D-KKHH
              # -> HFDTM100GPSDATUM:WGS-1984
              # -> HFRFWFIRMWAREVERSION:2.2
              # -> HFRHWHARDWAREVERSION:2
              # -> HFFTYFRTYPE:LXNAVIGATION,LX8000F
              # -> HFGPSuBLOX LEA-4S-2,16,max9000m
              # -> HFPRSPRESSALTSENSOR:INTERSEMA,MS5534A,max10000m
              # -> HFCIDCOMPETITIONID:2H
              # -> HFCCLCOMPETITIONCLASS:Doubleseater
  
          This method will throw a :class:`ValueError` if a mandatory header is
          missing and will fill others up with empty strings if no value was
          given. The optional headers are only written if they are part of the
          specified :class:`dict`.
  
          .. admonition:: Note
  
              The use of this method is encouraged compared to calling all the
              other header-writing methods manually!
  
          :param headers: a :class:`dict` of all the headers that should be
              written.
          """
  
          for header in self.REQUIRED_HEADERS:
              if header not in headers:
                  raise ValueError('%s header missing' % header)
  
          self.write_logger_id(
              headers['manufacturer_code'],
              headers['logger_id'],
              extension=headers.get('logger_id_extension')
          )
  
          self.write_date(headers['date'])
          self.write_fix_accuracy(headers.get('fix_accuracy'))
  
          self.write_pilot(headers.get('pilot', ''))
          if 'copilot' in headers:
              self.write_copilot(headers['copilot'])
  
          self.write_glider_type(headers.get('glider_type', ''))
          self.write_glider_id(headers.get('glider_id', ''))
  
          self.write_gps_datum(
              code=headers.get('gps_datum_code'),
              gps_datum=headers.get('gps_datum'),
          )
  
          self.write_firmware_version(headers.get('firmware_version', ''))
          self.write_hardware_version(headers.get('hardware_version', ''))
          self.write_logger_type(headers['logger_type'])
          self.write_gps_receiver(headers['gps_receiver'])
          self.write_pressure_sensor(headers.get('pressure_sensor', ''))
  
          if 'competition_id' in headers:
              self.write_competition_id(headers['competition_id'])
  
          if 'competition_class' in headers:
              self.write_competition_class(headers['competition_class'])
  
          if 'club' in headers:
              self.write_club(headers['club'])