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