import abc

"""
定义抽象类，实际类应在simulation_filters, simulation_algos, charge_algos分别定义
"""
class DataFilter(metaclass = abc.ABCMeta):
    """
    数据过滤器抽象类
    """
    @abc.abstractclassmethod
    def __init__(self):
        pass

    @abc.abstractclassmethod
    def set_filter(self, filter):
        pass

    @abc.abstractclassmethod
    def set_records(self, records):
        pass

    @abc.abstractclassmethod
    def _process_records(self):
        pass

    @abc.abstractclassmethod
    def get_records(self):
        pass


class ChargeAlgo(metaclass = abc.ABCMeta):
    """
    算法抽象类，应提供数据初始化，更新数据，获得结果接口
    ChargeAlgo.update ---> get_result ---> update ---> get_result ----> update ---> ...
    """
    @abc.abstractclassmethod
    def __init__(self):
        """
        仅为声明非静态属性，不赋予属性有意义初始值
        """
        pass
    
    @abc.abstractclassmethod
    def update(self, data_dict):
        pass

    @abc.abstractclassmethod
    def get_result(self):
        pass


class SimulationAlgo(metaclass = abc.ABCMeta):
    @abc.abstractclassmethod
    def set_data_set(self, data_set):
        pass

    @abc.abstractclassmethod
    def set_data(self, data):
        pass

    @abc.abstractclassmethod
    def get_result(self):
        pass


class SimulationSandBox(metaclass = abc.ABCMeta):
    @abc.abstractclassmethod
    def set_init_data(self, data_dict):
        pass

    @abc.abstractclassmethod
    def add_charge_algo(self, algo_obj):
        pass

    @abc.abstractclassmethod
    def add_simu_algo(self, algo_obj):
        pass

    @abc.abstractclassmethod
    def one_step(self):
        pass

    @abc.abstractclassmethod
    def get_simu_data(self):
        pass
80325839d4dafad53376d3cb2674fa7deaae74e8
<mask token>


class DataFilter(metaclass=abc.ABCMeta):
    <mask token>
    <mask token>
    <mask token>
    <mask token>
    <mask token>

    @abc.abstractclassmethod
    def get_records(self):
        pass


class ChargeAlgo(metaclass=abc.ABCMeta):
    """
    算法抽象类，应提供数据初始化，更新数据，获得结果接口
    ChargeAlgo.update ---> get_result ---> update ---> get_result ----> update ---> ...
    """

    @abc.abstractclassmethod
    def __init__(self):
        """
        仅为声明非静态属性，不赋予属性有意义初始值
        """
        pass

    @abc.abstractclassmethod
    def update(self, data_dict):
        pass

    @abc.abstractclassmethod
    def get_result(self):
        pass


class SimulationAlgo(metaclass=abc.ABCMeta):

    @abc.abstractclassmethod
    def set_data_set(self, data_set):
        pass

    @abc.abstractclassmethod
    def set_data(self, data):
        pass

    @abc.abstractclassmethod
    def get_result(self):
        pass


class SimulationSandBox(metaclass=abc.ABCMeta):

    @abc.abstractclassmethod
    def set_init_data(self, data_dict):
        pass

    @abc.abstractclassmethod
    def add_charge_algo(self, algo_obj):
        pass

    @abc.abstractclassmethod
    def add_simu_algo(self, algo_obj):
        pass

    @abc.abstractclassmethod
    def one_step(self):
        pass

    @abc.abstractclassmethod
    def get_simu_data(self):
        pass

<mask token>


class DataFilter(metaclass=abc.ABCMeta):
    <mask token>

    @abc.abstractclassmethod
    def __init__(self):
        pass

    @abc.abstractclassmethod
    def set_filter(self, filter):
        pass
    <mask token>

    @abc.abstractclassmethod
    def _process_records(self):
        pass

    @abc.abstractclassmethod
    def get_records(self):
        pass


class ChargeAlgo(metaclass=abc.ABCMeta):
    """
    算法抽象类，应提供数据初始化，更新数据，获得结果接口
    ChargeAlgo.update ---> get_result ---> update ---> get_result ----> update ---> ...
    """

    @abc.abstractclassmethod
    def __init__(self):
        """
        仅为声明非静态属性，不赋予属性有意义初始值
        """
        pass

    @abc.abstractclassmethod
    def update(self, data_dict):
        pass

    @abc.abstractclassmethod
    def get_result(self):
        pass


class SimulationAlgo(metaclass=abc.ABCMeta):

    @abc.abstractclassmethod
    def set_data_set(self, data_set):
        pass

    @abc.abstractclassmethod
    def set_data(self, data):
        pass

    @abc.abstractclassmethod
    def get_result(self):
        pass


class SimulationSandBox(metaclass=abc.ABCMeta):

    @abc.abstractclassmethod
    def set_init_data(self, data_dict):
        pass

    @abc.abstractclassmethod
    def add_charge_algo(self, algo_obj):
        pass

    @abc.abstractclassmethod
    def add_simu_algo(self, algo_obj):
        pass

    @abc.abstractclassmethod
    def one_step(self):
        pass

    @abc.abstractclassmethod
    def get_simu_data(self):
        pass

<mask token>


class DataFilter(metaclass=abc.ABCMeta):
    """
    数据过滤器抽象类
    """

    @abc.abstractclassmethod
    def __init__(self):
        pass

    @abc.abstractclassmethod
    def set_filter(self, filter):
        pass

    @abc.abstractclassmethod
    def set_records(self, records):
        pass

    @abc.abstractclassmethod
    def _process_records(self):
        pass

    @abc.abstractclassmethod
    def get_records(self):
        pass


class ChargeAlgo(metaclass=abc.ABCMeta):
    """
    算法抽象类，应提供数据初始化，更新数据，获得结果接口
    ChargeAlgo.update ---> get_result ---> update ---> get_result ----> update ---> ...
    """

    @abc.abstractclassmethod
    def __init__(self):
        """
        仅为声明非静态属性，不赋予属性有意义初始值
        """
        pass

    @abc.abstractclassmethod
    def update(self, data_dict):
        pass

    @abc.abstractclassmethod
    def get_result(self):
        pass


class SimulationAlgo(metaclass=abc.ABCMeta):

    @abc.abstractclassmethod
    def set_data_set(self, data_set):
        pass

    @abc.abstractclassmethod
    def set_data(self, data):
        pass

    @abc.abstractclassmethod
    def get_result(self):
        pass


class SimulationSandBox(metaclass=abc.ABCMeta):

    @abc.abstractclassmethod
    def set_init_data(self, data_dict):
        pass

    @abc.abstractclassmethod
    def add_charge_algo(self, algo_obj):
        pass

    @abc.abstractclassmethod
    def add_simu_algo(self, algo_obj):
        pass

    @abc.abstractclassmethod
    def one_step(self):
        pass

    @abc.abstractclassmethod
    def get_simu_data(self):
        pass

import abc
<mask token>


class DataFilter(metaclass=abc.ABCMeta):
    """
    数据过滤器抽象类
    """

    @abc.abstractclassmethod
    def __init__(self):
        pass

    @abc.abstractclassmethod
    def set_filter(self, filter):
        pass

    @abc.abstractclassmethod
    def set_records(self, records):
        pass

    @abc.abstractclassmethod
    def _process_records(self):
        pass

    @abc.abstractclassmethod
    def get_records(self):
        pass


class ChargeAlgo(metaclass=abc.ABCMeta):
    """
    算法抽象类，应提供数据初始化，更新数据，获得结果接口
    ChargeAlgo.update ---> get_result ---> update ---> get_result ----> update ---> ...
    """

    @abc.abstractclassmethod
    def __init__(self):
        """
        仅为声明非静态属性，不赋予属性有意义初始值
        """
        pass

    @abc.abstractclassmethod
    def update(self, data_dict):
        pass

    @abc.abstractclassmethod
    def get_result(self):
        pass


class SimulationAlgo(metaclass=abc.ABCMeta):

    @abc.abstractclassmethod
    def set_data_set(self, data_set):
        pass

    @abc.abstractclassmethod
    def set_data(self, data):
        pass

    @abc.abstractclassmethod
    def get_result(self):
        pass


class SimulationSandBox(metaclass=abc.ABCMeta):

    @abc.abstractclassmethod
    def set_init_data(self, data_dict):
        pass

    @abc.abstractclassmethod
    def add_charge_algo(self, algo_obj):
        pass

    @abc.abstractclassmethod
    def add_simu_algo(self, algo_obj):
        pass

    @abc.abstractclassmethod
    def one_step(self):
        pass

    @abc.abstractclassmethod
    def get_simu_data(self):
        pass

import abc

"""
定义抽象类，实际类应在simulation_filters, simulation_algos, charge_algos分别定义
"""
class DataFilter(metaclass = abc.ABCMeta):
    """
    数据过滤器抽象类
    """
    @abc.abstractclassmethod
    def __init__(self):
        pass

    @abc.abstractclassmethod
    def set_filter(self, filter):
        pass

    @abc.abstractclassmethod
    def set_records(self, records):
        pass

    @abc.abstractclassmethod
    def _process_records(self):
        pass

    @abc.abstractclassmethod
    def get_records(self):
        pass


class ChargeAlgo(metaclass = abc.ABCMeta):
    """
    算法抽象类，应提供数据初始化，更新数据，获得结果接口
    ChargeAlgo.update ---> get_result ---> update ---> get_result ----> update ---> ...
    """
    @abc.abstractclassmethod
    def __init__(self):
        """
        仅为声明非静态属性，不赋予属性有意义初始值
        """
        pass
    
    @abc.abstractclassmethod
    def update(self, data_dict):
        pass

    @abc.abstractclassmethod
    def get_result(self):
        pass


class SimulationAlgo(metaclass = abc.ABCMeta):
    @abc.abstractclassmethod
    def set_data_set(self, data_set):
        pass

    @abc.abstractclassmethod
    def set_data(self, data):
        pass

    @abc.abstractclassmethod
    def get_result(self):
        pass


class SimulationSandBox(metaclass = abc.ABCMeta):
    @abc.abstractclassmethod
    def set_init_data(self, data_dict):
        pass

    @abc.abstractclassmethod
    def add_charge_algo(self, algo_obj):
        pass

    @abc.abstractclassmethod
    def add_simu_algo(self, algo_obj):
        pass

    @abc.abstractclassmethod
    def one_step(self):
        pass

    @abc.abstractclassmethod
    def get_simu_data(self):
        pass