From a7a822e2df46641de850499e7775442f45ec7a4a Mon Sep 17 00:00:00 2001 From: Casper da Costa-Luis Date: Sat, 30 May 2020 23:24:30 +0100 Subject: [PATCH 1/2] add len(MediaIoReadable) --- pydrive2/files.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pydrive2/files.py b/pydrive2/files.py index c9e8a0b7..daa76c78 100644 --- a/pydrive2/files.py +++ b/pydrive2/files.py @@ -137,6 +137,7 @@ def __init__( self.downloader = MediaIoBaseDownload( self._fd, request, chunksize=chunksize ) + self.size = None self._pre_buffer = False if pre_buffer: self.read() @@ -157,7 +158,8 @@ def read(self): if self.done: return None try: - _, self.done = self.downloader.next_chunk() + status, self.done = self.downloader.next_chunk() + self.size = status.total_size except errors.HttpError as error: raise ApiRequestError(error) return self._fd.read() @@ -172,6 +174,9 @@ def __iter__(self): break yield chunk + def __len__(self): + return self.size + class GoogleDriveFile(ApiAttributeMixin, ApiResource): """Google Drive File instance. From c04a9c7a30d85d0af210414cc395c575a96afcef Mon Sep 17 00:00:00 2001 From: Casper da Costa-Luis Date: Sat, 30 May 2020 23:53:20 +0100 Subject: [PATCH 2/2] test buffer len --- pydrive2/test/test_file.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pydrive2/test/test_file.py b/pydrive2/test/test_file.py index fe6aab27..4ca0a6a7 100644 --- a/pydrive2/test/test_file.py +++ b/pydrive2/test/test_file.py @@ -291,9 +291,11 @@ def test_11_Files_Get_Content_Buffer(self): buffer1 = pydrive_retry(file1.GetContentIOBuffer) self.assertEqual(file1.metadata["title"], filename) + self.assertEqual(len(buffer1), len(content)) self.assertEqual(b"".join(iter(buffer1)).decode("ascii"), content) buffer2 = pydrive_retry(file1.GetContentIOBuffer, encoding="ascii") + self.assertEqual(len(buffer2), len(content)) self.assertEqual("".join(iter(buffer2)), content) self.DeleteUploadedFiles(drive, [file1["id"]])