docs: def insert(self, name, value, timestamp=None, intervals=0, **kwargs):
      '''
      Insert a value for the timeseries "name". For each interval in the
      configuration, will insert the value into a bucket for the interval
      "timestamp". If time is not supplied, will default to time.time(), else it
      should be a floating point value.
  
      If "intervals" is less than 0, inserts the value into timestamps
      "abs(intervals)" preceeding "timestamp" (i.e. "-1" inserts one extra value).
      If "intervals" is greater than 0, inserts the value into that many more
      intervals after "timestamp". The default behavior is to insert for a single
      timestamp.
  
      This supports the public methods of the same name in the subclasses. The
      value is expected to already be converted.
      '''
      if not timestamp:
        timestamp = time.time()
  
      if isinstance(value, (list,tuple,set)):
        if self._write_func:
          value = [ self._write_func(v) for v in value ]
        return self._batch_insert({timestamp:{name:value}}, intervals, **kwargs)
  
      if self._write_func:
        value = self._write_func(value)
  
      # TODO: document acceptable names
      # TODO: document what types values are supported
      # TODO: document behavior when time is outside the bounds of TTLed config
      # TODO: document how the data is stored.
      # TODO: better abstraction for "intervals" processing rather than in each implementation
  
      self._insert( name, value, timestamp, intervals, **kwargs )