benchmarking/data_converters/data_converter_base.py (27 lines of code) (raw):
#!/usr/bin/env python
##############################################################################
# Copyright 2017-present, Facebook, Inc.
# All rights reserved.
#
# This source code is licensed under the license found in the
# LICENSE file in the root directory of this source tree.
##############################################################################
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
from __future__ import unicode_literals
import abc
from six import string_types
class DataConverterBase(object):
def __init__(self):
pass
@abc.abstractmethod
def getName(self):
return "Error"
# collect data from the binary
@abc.abstractmethod
def collect(self, data, args):
raise AssertionError("Need to call one of the implementations of the collector")
# convert the data to a unified format
@abc.abstractmethod
def convert(self, data):
raise AssertionError("Need to call one of the implementations of the converter")
def _prepareData(self, data):
if data is None:
return []
if isinstance(data, string_types):
rows = data.split("\n")
else:
assert isinstance(data, list), "Input format must be string or list"
rows = data
return rows