From bb4751ec7f2a1c6cbda5b6e20f3730c0e2a946e8 Mon Sep 17 00:00:00 2001 From: Stephen Nichols Date: Fri, 31 May 2024 12:00:11 -0400 Subject: [PATCH] Fix for issue #68: decode key before list_objects --- fs_s3fs/_s3fs.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/fs_s3fs/_s3fs.py b/fs_s3fs/_s3fs.py index d7f98e2..d1d8bd8 100644 --- a/fs_s3fs/_s3fs.py +++ b/fs_s3fs/_s3fs.py @@ -28,6 +28,7 @@ from fs.subfs import SubFS from fs.path import basename, dirname, forcedir, join, normpath, relpath from fs.time import datetime_to_epoch +from urllib.parse import unquote def _make_repr(class_name, *args, **kwargs): @@ -716,10 +717,11 @@ def gen_info(): } yield Info(info) for _obj in result.get("Contents", ()): - name = _obj["Key"][prefix_len:] + _key = unquote(_obj["Key"]) + name = _key[prefix_len:] if name: with s3errors(path): - obj = self.s3.Object(self._bucket_name, _obj["Key"]) + obj = self.s3.Object(self._bucket_name, _key) info = self._info_from_object(obj, namespaces) yield Info(info)