Skip to content

Commit 9494426

Browse files
authored
make_bucket_versioned method (#825)
1 parent 2c07450 commit 9494426

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

s3fs/core.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1943,6 +1943,17 @@ async def _is_bucket_versioned(self, bucket):
19431943

19441944
is_bucket_versioned = sync_wrapper(_is_bucket_versioned)
19451945

1946+
async def _make_bucket_versioned(self, bucket, versioned: bool = True):
1947+
"""Set bucket versioning status"""
1948+
status = "Enabled" if versioned else "Suspended"
1949+
return await self._call_s3(
1950+
"put_bucket_versioning",
1951+
Bucket=bucket,
1952+
VersioningConfiguration={"Status": status},
1953+
)
1954+
1955+
make_bucket_versioned = sync_wrapper(_make_bucket_versioned)
1956+
19461957
async def _rm_versioned_bucket_contents(self, bucket):
19471958
"""Remove a versioned bucket and all contents"""
19481959
await self.set_session()
@@ -2294,7 +2305,7 @@ def commit(self):
22942305
if self.buffer is not None:
22952306
logger.debug("Empty file committed %s" % self)
22962307
self._abort_mpu()
2297-
write_result = self.fs.touch(self.path)
2308+
write_result = self.fs.touch(self.path, **self.kwargs)
22982309
elif not self.parts:
22992310
if self.buffer is not None:
23002311
logger.debug("One-shot upload of %s" % self)

s3fs/tests/test_s3fs.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2729,3 +2729,12 @@ def test_cache_handles_find_with_maxdepth(s3):
27292729
assert base_name + "/dir1/fileB" not in f
27302730

27312731
s3.invalidate_cache()
2732+
2733+
2734+
def test_bucket_versioning(s3):
2735+
s3.mkdir("maybe_versioned")
2736+
assert not s3.is_bucket_versioned("maybe_versioned")
2737+
s3.make_bucket_versioned("maybe_versioned")
2738+
assert s3.is_bucket_versioned("maybe_versioned")
2739+
s3.make_bucket_versioned("maybe_versioned", False)
2740+
assert not s3.is_bucket_versioned("maybe_versioned")

0 commit comments

Comments
 (0)