@s3_path.setter
    def s3_path(self, value):
        if not isinstance(value, S3Path):
            raise ETLInputError('Input path should be of type S3Path')

        if not value.is_directory:
            raise ETLInputError('S3 path must be directory')
        self._s3_path = value
Ref: http://stackoverflow.com/a/9619101/1276501
dataset/ETHPy150Open coursera/dataduct/dataduct/s3/s3_directory.py/S3Directory.s3_path--crossover with--dataset/ETHPy150Open tankywoo/simiki/simiki/generators.py/CatalogGenerator.get_content_structure_and_meta