docs: def scrape_metrics(self, endpoint):
          """
          Poll the data from prometheus and return the metrics as a generator.
          """
          response = self.poll(endpoint)
          try:
              # no dry run if no label joins
              if not self.label_joins:
                  self._dry_run = False
              elif not self._watched_labels:
                  # build the _watched_labels set
                  for val in itervalues(self.label_joins):
                      self._watched_labels.add(val['label_to_match'])
  
              for metric in self.parse_metric_family(response):
                  yield metric
  
              # Set dry run off
              self._dry_run = False
              # Garbage collect unused mapping and reset active labels
              for metric, mapping in list(iteritems(self._label_mapping)):
                  for key in list(mapping):
                      if key not in self._active_label_mapping[metric]:
                          del self._label_mapping[metric][key]
              self._active_label_mapping = {}
          finally:
              response.close()