def send(self, cumulative_counters=None, gauges=None, counters=None):
if not gauges and not cumulative_counters and not counters:<EOL><INDENT>return<EOL><DEDENT>data = {<EOL>'<STR_LIT>': cumulative_counters,<EOL>'<STR_LIT>': gauges,<EOL>'<STR_LIT>': counters,<EOL>}<EOL>_logger.debug('<STR_LIT>', data)<EOL>for metric_type, datapoints in data.items():<EOL><INDENT>if not datapoints:<EOL><INDENT>continue<EOL><DEDENT>if not isinstance(datapoints, list):<EOL><INDENT>raise TypeError('<STR_LIT>', datapoints)<EOL><DEDENT>for datapoint in datapoints:<EOL><INDENT>self._add_extra_dimensions(datapoint)<EOL>self._add_to_queue(metric_type, datapoint)<EOL><DEDENT><DEDENT>self._start_thread()<EOL>
Send the given metrics to SignalFx.

        Args:
            cumulative_counters (list): a list of dictionaries representing the
                cumulative counters to report.
            gauges (list): a list of dictionaries representing the gauges to
                report.
            counters (list): a list of dictionaries representing the counters
                to report.