class_docstr: SEVIRI native format reader.
  
  **Calibration**
  
  See :mod:`satpy.readers.seviri_base`.
  
  **Padding channel data to full disk**
  
  By providing the `fill_disk` as True in the `reader_kwargs`, the channel is loaded
  as full disk, padded with no-data where necessary. This is especially useful for the
  HRV channel, but can also be used for RSS and ROI data. By default, the original,
  unpadded, data are loaded::
  
      scene = satpy.Scene(filenames,
                          reader='seviri_l1b_native',
                          reader_kwargs={'fill_disk': False})
  
  **Metadata**
  
  See :mod:`satpy.readers.seviri_base`.
docstr: Get the dtype of the file based on the actual available channels.
docstr_tok: ["Get","the","dtype","of","the","file","based","on","the","actual","available","channels","."]
code: def _get_data_dtype(self):
      """Get the dtype of the file based on the actual available channels."""
      pkhrec = [
          ("GP_PK_HEADER", GSDTRecords.gp_pk_header),
          ("GP_PK_SH1", GSDTRecords.gp_pk_sh1),
      ]
      pk_head_dtype = np.dtype(pkhrec)
  
      def get_lrec(cols):
          lrec = [
              ("gp_pk", pk_head_dtype),
              ("version", np.uint8),
              ("satid", np.uint16),
              ("time", (np.uint16, 5)),
              ("lineno", np.uint32),
              ("chan_id", np.uint8),
              ("acq_time", time_cds_short),
              ("line_validity", np.uint8),
              ("line_rquality", np.uint8),
              ("line_gquality", np.uint8),
              ("line_data", (np.uint8, cols)),
          ]
  
          return lrec
  
      # each pixel is 10-bits -> one line of data has 25% more bytes
      # than the number of columns suggest (10/8 = 1.25)
      visir_rec = get_lrec(int(self.mda["number_of_columns"] * 1.25))
      number_of_visir_channels = len(
          [s for s in self.mda["channel_list"] if not s == "HRV"]
      )
      drec = [("visir", (visir_rec, number_of_visir_channels))]
  
      if self.mda["available_channels"]["HRV"]:
          hrv_rec = get_lrec(
              int(self.mda["hrv_number_of_columns"] * 1.25)
          )
          drec.append(("hrv", (hrv_rec, 3)))
  
      return np.dtype(drec)
  
imports: import logging
  import warnings
  from datetime import datetime, timedelta
  import dask.array
  import numpy
  import xarray
  from pyresample import geometry
  from satpy._compat import cached_property
  from satpy.readers._geos_area import get_area_definition, get_geos_area_naming
  from satpy.readers.eum_base import get_service_mode, recarray2dict, time_cds_short
  from satpy.readers.file_handlers import BaseFileHandler
  from satpy.readers.seviri_base import CHANNEL_NAMES, HRV_NUM_COLUMNS, HRV_NUM_LINES, REPEAT_CYCLE_DURATION, SATNUM, VISIR_NUM_COLUMNS, VISIR_NUM_LINES, NoValidOrbitParams, OrbitPolynomialFinder, SEVIRICalibrationHandler, add_scanline_acq_time, calculate_area_extent, create_coef_dict, dec10216, get_cds_time, get_satpos, pad_data_horizontally, pad_data_vertically, round_nom_time
  from satpy.readers.seviri_l1b_native_hdr import DEFAULT_15_SECONDARY_PRODUCT_HEADER, GSDTRecords, get_native_header, native_trailer
  from satpy.readers.utils import reduce_mda
  from satpy.utils import get_legacy_chunk_size
label_desc: Use image node_id 9 for calling the NativeMSGFileHandler obj's underlying member method code with example usage: obj._get_data_dtype() and returns: np, lrec