code: def track_metric(self, name, value, type=None, count=None, min=None, max=None, std_dev=None, properties=None):
          
          dataPoint = channel.contracts.DataPoint()
          dataPoint.name = name or NULL_CONSTANT_STRING
          dataPoint.value = value or 0
          dataPoint.kind = type or channel.contracts.DataPointType.aggregation
          dataPoint.count = count
          dataPoint.min = min
          dataPoint.max = max
          dataPoint.std_dev = std_dev
  
          data = channel.contracts.MetricData()
          data.metrics.append(dataPoint)
          if properties:
              data.properties = properties
  
          self.track(data, self._context)
docs: Send information about a single metric data point that was captured for the application.
  
          Args:
              name (str). the name of the metric that was captured.\n
              value (float). the value of the metric that was captured.\n
              type (:class:`channel.contracts.DataPointType`). the type of the metric. (defaults to: :func:`channel.contracts.DataPointType.aggregation`)\n
              count (int). the number of metrics that were aggregated into this data point. (defaults to: None)\n
              min (float). the minimum of all metrics collected that were aggregated into this data point. (defaults to: None)\n
              max (float). the maximum of all metrics collected that were aggregated into this data point. (defaults to: None)\n
              std_dev (float). the standard deviation of all metrics collected that were aggregated into this data point. (defaults to: None)\n
              properties (dict). the set of custom properties the client wants attached to this data item. (defaults to: None)