code: def put(self, data):
          
          if not isinstance(data, list):
              data = [data]
  
          r = collections.defaultdict(list)
  
          for d in data:
              metric_type = d.pop('type', None)
              if metric_type is None:
                  raise HawkularError('Undefined MetricType')
              r[metric_type].append(d)
  
          # This isn't transactional, but .. ouh well. One can always repost everything.
          for l in r:
              self._post(self._get_metrics_raw_url(self._get_url(l)), r[l],parse_json=False)
docs: Send multiple different metric_ids to the server in a single batch. Metrics can be a mixture
          of types.
  
          :param data: A dict or a list of dicts created with create_metric(metric_type, metric_id, datapoints)