Source code for simplesqlite.loader.interface

# encoding: utf-8

"""
.. codeauthor:: Tsuyoshi Hombashi <gogogo.vm@gmail.com>
"""


from __future__ import absolute_import
import abc

import dataproperty
import six


@six.add_metaclass(abc.ABCMeta)
class TableLoaderInterface(object):
    """
    Interface class of table loader class.
    """

    @abc.abstractmethod
    def load(self):   # pragma: no cover
        pass

    @abc.abstractmethod
    def _validate(self):   # pragma: no cover
        pass

    @abc.abstractmethod
    def _validate_table_name(self):   # pragma: no cover
        pass

    @abc.abstractmethod
    def _validate_source(self):   # pragma: no cover
        pass


[docs]class TableLoader(TableLoaderInterface): """ Abstract class of table data file loader. .. py:attribute:: table_name Table name string. .. py:attribute:: source Table data source to load. """ def __init__(self, source): self.table_name = None self.source = source def make_table_name(self): self._validate() return self.table_name def _validate(self): self._validate_table_name() self._validate_source() def _validate_table_name(self): try: if dataproperty.is_empty_string(self.table_name): raise ValueError("table name is empty") except (TypeError, AttributeError): raise TypeError("table_name expected to a string") def _validate_source(self): if dataproperty.is_empty_string(self.source): raise ValueError("data source is empty")