code: def push(self, metric_type, metric_id, value, timestamp=None):
          
          if type(timestamp) is datetime:
              timestamp = datetime_to_time_millis(timestamp)
  
          item = create_metric(metric_type, metric_id, create_datapoint(value, timestamp))
          self.put(item)
docs: Pushes a single metric_id, datapoint combination to the server.
  
          This method is an assistant method for the put method by removing the need to
          create data structures first.
  
          :param metric_type: MetricType to be matched (required)
          :param metric_id: Exact string matching metric id
          :param value: Datapoint value (depending on the MetricType)
          :param timestamp: Timestamp of the datapoint. If left empty, uses current client time. Can be milliseconds since epoch or datetime instance