docs: def create_channel(
          self, name, values=None, *, shape=None, units=None, dtype=None, **kwargs
      ) -> Channel:
          """Append a new channel.
  
          Parameters
          ----------
          name : string
              Unique name for this channel.
          values : array (optional)
              Array. If None, an empty array equaling the data shape is
              created. Default is None.
          shape : tuple of int
              Shape to use. Must broadcast with the full shape.
              Only used if `values` is None.
              Default is the full shape of self.
          units : string (optional)
              Channel units. Default is None.
          dtype : numpy.dtype (optional)
              dtype to use for dataset, default is np.float64.
              Only used if `values` is None.
          kwargs : dict
              Additional keyword arguments passed to Channel instantiation.
  
          Returns
          -------
          Channel
              Created channel.
          """
          if name in self.channel_names:
              warnings.warn(name, wt_exceptions.ObjectExistsWarning)
              return self[name]
          elif name in self.variable_names:
              raise wt_exceptions.NameNotUniqueError(name)
  
          require_kwargs = {"chunks": True}
          if values is None:
              if shape is None:
                  require_kwargs["shape"] = self.shape
              else:
                  require_kwargs["shape"] = shape
              if dtype is None:
                  require_kwargs["dtype"] = np.dtype(np.float64)
              else:
                  require_kwargs["dtype"] = dtype
              if require_kwargs["dtype"].kind in "fcmM":
                  require_kwargs["fillvalue"] = np.nan
              else:
                  require_kwargs["fillvalue"] = 0
          else:
              require_kwargs["data"] = values
              require_kwargs["shape"] = values.shape
              require_kwargs["dtype"] = values.dtype
          if np.prod(require_kwargs["shape"]) == 1:
              require_kwargs["chunks"] = None
          # create dataset
          dataset_id = self.require_dataset(name=name, **require_kwargs).id
          channel = Channel(self, dataset_id, units=units, **kwargs)
          # finish
          self.attrs["channel_names"] = np.append(self.attrs["channel_names"], name.encode())
          return channel