docs: def encode_timeseries_put(self, tsobj):
          '''
          Returns an Erlang-TTB encoded tuple with the appropriate data and
          metadata from a TsObject.
  
          :param tsobj: a TsObject
          :type tsobj: TsObject
          :rtype: term-to-binary encoded object
          '''
          if tsobj.columns:
              raise NotImplementedError('columns are not used')
  
          if tsobj.rows and isinstance(tsobj.rows, list):
              req_rows = []
              for row in tsobj.rows:
                  req_r = []
                  for cell in row:
                      req_r.append(self.encode_to_ts_cell(cell))
                  req_rows.append(tuple(req_r))
              req = tsputreq_a, tsobj.table.name, [], req_rows
              mc = MSG_CODE_TS_TTB_MSG
              rc = MSG_CODE_TS_TTB_MSG
              return Msg(mc, encode(req), rc)
          else:
              raise RiakError("TsObject requires a list of rows")