Skip to content

Commit

Permalink
Merge pull request #328 from cool-RR/2020-06-12-raise-from
Browse files Browse the repository at this point in the history
Fix exception causes in core.py
  • Loading branch information
martindurant committed Jun 16, 2020
2 parents f9ec635 + 19e69b7 commit 8e379c9
Showing 1 changed file with 28 additions and 28 deletions.
56 changes: 28 additions & 28 deletions s3fs/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ class S3FileSystem(AbstractFileSystem):
If not anonymous, use this security token, if specified
use_ssl : bool (True)
Whether to use SSL in connections to S3; may be faster without, but
insecure. If ``use_ssl`` is also set in ``client_kwargs``,
insecure. If ``use_ssl`` is also set in ``client_kwargs``,
the value set in ``client_kwargs`` will take priority.
s3_additional_kwargs : dict of parameters that are used when calling s3 api
methods. Typically used for things like "ServerSideEncryption".
Expand Down Expand Up @@ -278,9 +278,9 @@ def connect(self, refresh=True):
self.session = botocore.session.Session(**self.kwargs)

logger.debug("Setting up s3fs instance")

client_kwargs = self.client_kwargs.copy()
init_kwargs = dict(aws_access_key_id=self.key,
init_kwargs = dict(aws_access_key_id=self.key,
aws_secret_access_key=self.secret,
aws_session_token=self.token)
init_kwargs = {key: value for key, value in init_kwargs.items()
Expand All @@ -290,12 +290,12 @@ def connect(self, refresh=True):
config_kwargs = self._prepare_config_kwargs()
if self.anon:
from botocore import UNSIGNED
drop_keys = {"aws_access_key_id",
"aws_secret_access_key",
drop_keys = {"aws_access_key_id",
"aws_secret_access_key",
"aws_session_token"}
init_kwargs = {key: value for key, value
init_kwargs = {key: value for key, value
in init_kwargs.items() if key not in drop_keys}
client_kwargs = {key: value for key, value
client_kwargs = {key: value for key, value
in client_kwargs.items() if key not in drop_keys}
config_kwargs["signature_version"] = UNSIGNED
conf = Config(**config_kwargs)
Expand Down Expand Up @@ -415,7 +415,7 @@ def _lsdir(self, path, refresh=False, max_items=None):
f['Key'] = '/'.join([bucket, f['Key']])
f['name'] = f['Key']
except ClientError as e:
raise translate_boto_error(e)
raise translate_boto_error(e) from e

self.dircache[path] = files
return files
Expand All @@ -439,9 +439,9 @@ def mkdir(self, path, acl="", create_parents=True, **kwargs):
self.invalidate_cache('')
self.invalidate_cache(bucket)
except ClientError as e:
raise translate_boto_error(e)
raise translate_boto_error(e) from e
except ParamValidationError as e:
raise ValueError('Bucket create failed %r: %s' % (bucket, e))
raise ValueError('Bucket create failed %r: %s' % (bucket, e)) from e
elif not self.exists(bucket):
raise FileNotFoundError

Expand All @@ -453,7 +453,7 @@ def rmdir(self, path):
try:
self.s3.delete_bucket(Bucket=path)
except ClientError as e:
raise translate_boto_error(e)
raise translate_boto_error(e) from e
self.invalidate_cache(path)
self.invalidate_cache('')

Expand Down Expand Up @@ -524,7 +524,7 @@ def touch(self, path, truncate=True, data=None, **kwargs):
try:
self._call_s3(self.s3.put_object, kwargs, Bucket=bucket, Key=key)
except ClientError as ex:
raise translate_boto_error(ex)
raise translate_boto_error(ex) from ex
self.invalidate_cache(self._parent(path))

def info(self, path, version_id=None, refresh=False):
Expand Down Expand Up @@ -558,9 +558,9 @@ def info(self, path, version_id=None, refresh=False):
ee = translate_boto_error(e)
# This could have failed since the thing we are looking for is a prefix.
if not isinstance(ee, FileNotFoundError):
raise ee
raise ee from e
except ParamValidationError as e:
raise ValueError('Failed to head path %r: %s' % (path, e))
raise ValueError('Failed to head path %r: %s' % (path, e)) from e

if should_fetch_from_s3:
try:
Expand All @@ -587,12 +587,12 @@ def info(self, path, version_id=None, refresh=False):

raise FileNotFoundError(path)
except ClientError as e:
raise translate_boto_error(e)
raise translate_boto_error(e) from e
except ParamValidationError as e:
raise ValueError("Failed to list path %r: %s" % (path, e))
raise ValueError("Failed to list path %r: %s" % (path, e)) from e

return super().info(path)

def checksum(self, path, refresh=False):
"""
Unique value for current version of file
Expand All @@ -607,16 +607,16 @@ def checksum(self, path, refresh=False):
path of file to get checksum for
refresh : bool (=False)
if False, look in local cache for file details first
"""

info = self.info(path, refresh=refresh)

if info["type"] != 'directory':
return int(info["ETag"].strip('"'), 16)
else:
return int(tokenize(info), 16)


def isdir(self, path):
path = self._strip_protocol(path).strip("/")
Expand Down Expand Up @@ -923,9 +923,9 @@ def copy_basic(self, path1, path2, **kwargs):
Bucket=buc2, Key=key2, CopySource=copy_src
)
except ClientError as e:
raise translate_boto_error(e)
raise translate_boto_error(e) from e
except ParamValidationError as e:
raise ValueError('Copy failed (%r -> %r): %s' % (path1, path2, e))
raise ValueError('Copy failed (%r -> %r): %s' % (path1, path2, e)) from e
self.invalidate_cache(path2)


Expand Down Expand Up @@ -963,7 +963,7 @@ def copy_managed(self, path1, path2, block=5 * 2**30, **kwargs):
exc_info=True)
time.sleep(1.7 ** attempt * 0.1)
except Exception as exc:
raise IOError('Write failed: %r' % exc)
raise IOError('Write failed: %r' % exc) from exc
parts.append({'PartNumber': i + 1,
'ETag': out['CopyPartResult']['ETag']})
self._call_s3(
Expand Down Expand Up @@ -1015,7 +1015,7 @@ def bulk_delete(self, pathlist, **kwargs):
kwargs,
Bucket=bucket, Delete=delete_keys)
except ClientError as e:
raise translate_boto_error(e)
raise translate_boto_error(e) from e

def rm(self, path, recursive=False, **kwargs):
"""
Expand Down Expand Up @@ -1046,14 +1046,14 @@ def rm(self, path, recursive=False, **kwargs):
self._call_s3(
self.s3.delete_object, kwargs, Bucket=bucket, Key=key)
except ClientError as e:
raise translate_boto_error(e)
raise translate_boto_error(e) from e
self.invalidate_cache(self._parent(path))
else:
if self.exists(bucket):
try:
self.s3.delete_bucket(Bucket=bucket)
except BotoCoreError as e:
raise IOError('Delete bucket %r failed: %s' % (bucket, e))
raise IOError('Delete bucket %r failed: %s' % (bucket, e)) from e
self.invalidate_cache(bucket)
self.invalidate_cache('')
else:
Expand Down Expand Up @@ -1192,9 +1192,9 @@ def _initiate_upload(self):
self.fs.s3.create_multipart_upload,
Bucket=self.bucket, Key=self.key, ACL=self.acl)
except ClientError as e:
raise translate_boto_error(e)
raise translate_boto_error(e) from e
except ParamValidationError as e:
raise ValueError('Initiating write to %r failed: %s' % (self.path, e))
raise ValueError('Initiating write to %r failed: %s' % (self.path, e)) from e

if self.append_block:
# use existing data in key when appending,
Expand Down

0 comments on commit 8e379c9

Please sign in to comment.