Source code for api.simulation.data_tables.data_table_setup

""" This is the base class for data table setup objects. Particular implementations can be found in the
 :ref:`data table setup implementations documentation <data_tables>` """

from abc import ABC

from more.api.exceptions.api_exception import NameNotUniqueError
from more.api.utils.change_duplicate_name import change_duplicate_name


[docs] class DataTableSetup(ABC): def __init__(self, item): self.transient_data_table = item self._data_table = item def _get_wrapped_object(self): return self._data_table def set_name(self, name: str, resolve_duplicate_name: bool = False) -> 'DataTableSetup': if not isinstance(name, str): raise TypeError("The given name: \"{}\" is not a string, but a \"{}\"".format(name, type(name))) created_names = [dt.name for dt in self._data_table.parent.elements] if name in created_names: if not resolve_duplicate_name: raise NameNotUniqueError(f'The given name: \"{name}\" is already given in the list: \"{created_names}\"') else: name = change_duplicate_name(name=name, names_list=created_names) self._data_table.name = name return self def get_name(self) -> str: return self._data_table.name def __enter__(self): return self def __exit__(self, exc_type, exc_val, exc_tb): pass