# Path: arbalest/core.py
# class SchemaException(Exception):
#     pass


from arbalest.core import SchemaException
        self.table = table
        self.update_table = table + '_update'
        self.properties = []
        self.schema = []
        for json_property in args:
            self.__append_property(json_property)
        self.file_name = '{0}_jsonpath.json'.format(table)

    def property(self, name, column_type, column_name=None):
        self.__append_property(Property(name, column_type, column_name))
        return self

    def paths(self):
        return {
            'jsonpaths': [self.__path(schema_property) for schema_property
                          in self.schema]
        }

    def __append_property(self, json_object_property):
        name = json_object_property.column_name
        self.__validate_unique_property_name(name)
        self.properties.append(name)
        self.schema.append(json_object_property)

    def __path(self, schema_property):
        return '$' + ''.join(
            ["['{0}']".format(key) for key in schema_property.keys])

    def __validate_unique_property_name(self, property_name):
        if property_name in self.properties:

# Path: arbalest/core.py
# class SchemaException(Exception):
#     pass


# Path: arbalest/redshift/schema.py
from arbalest.core import SchemaException

        self.table = table
        self.update_table = table + '_update'
        self.properties = []
        self.schema = []
        for json_property in args:
            self.__append_property(json_property)
        self.file_name = '{0}_jsonpath.json'.format(table)

    def property(self, name, column_type, column_name=None):
        self.__append_property(Property(name, column_type, column_name))
        return self

    def paths(self):
        return {
            'jsonpaths': [self.__path(schema_property) for schema_property
                          in self.schema]
        }

    def __append_property(self, json_object_property):
        name = json_object_property.column_name
        self.__validate_unique_property_name(name)
        self.properties.append(name)
        self.schema.append(json_object_property)

    def __path(self, schema_property):
        return '$' + ''.join(
            ["['{0}']".format(key) for key in schema_property.keys])

    def __validate_unique_property_name(self, property_name):
        if property_name in self.properties:

            raise SchemaException(