Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
with pytest.raises(ValueError):
path.stat()
path = S3Path('/fake-bucket/fake-key')
with pytest.raises(ClientError):
path.stat()
s3 = boto3.resource('s3')
s3.create_bucket(Bucket='test-bucket')
object_summary = s3.ObjectSummary('test-bucket', 'Test.test')
object_summary.put(Body=b'test data')
path = S3Path('/test-bucket/Test.test')
stat = path.stat()
assert isinstance(stat, StatResult)
assert stat == StatResult(
size=object_summary.size,
last_modified=object_summary.last_modified,
)
with NamedTemporaryFile() as local_file:
local_file.write(path.read_bytes())
local_file.flush()
local_path = Path(local_file.name)
local_stat = local_path.stat()
s3_stat = path.stat()
assert s3_stat.st_size == local_stat.st_size == s3_stat.size
assert s3_stat.last_modified.timestamp() == s3_stat.st_mtime
assert s3_stat.st_mtime < local_stat.st_mtime
path.stat()
path = S3Path('/fake-bucket/fake-key')
with pytest.raises(ClientError):
path.stat()
s3 = boto3.resource('s3')
s3.create_bucket(Bucket='test-bucket')
object_summary = s3.ObjectSummary('test-bucket', 'Test.test')
object_summary.put(Body=b'test data')
path = S3Path('/test-bucket/Test.test')
stat = path.stat()
assert isinstance(stat, StatResult)
assert stat == StatResult(
size=object_summary.size,
last_modified=object_summary.last_modified,
)
with NamedTemporaryFile() as local_file:
local_file.write(path.read_bytes())
local_file.flush()
local_path = Path(local_file.name)
local_stat = local_path.stat()
s3_stat = path.stat()
assert s3_stat.st_size == local_stat.st_size == s3_stat.size
assert s3_stat.last_modified.timestamp() == s3_stat.st_mtime
assert s3_stat.st_mtime < local_stat.st_mtime
def __init__(self, name, is_dir, size=None, last_modified=None):
self.name = name
self._is_dir = is_dir
self._stat = StatResult(size=size, last_modified=last_modified)
def stat(self, path):
object_summery = self.s3.ObjectSummary(self.bucket_name(path.bucket), str(path.key))
return StatResult(
size=object_summery.size,
last_modified=object_summery.last_modified,
)