airbyte-source-google-drive 0.4.0.dev202504091818__tar.gz → 0.4.0.dev202504191947__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of airbyte-source-google-drive might be problematic. Click here for more details.
- {airbyte_source_google_drive-0.4.0.dev202504091818 → airbyte_source_google_drive-0.4.0.dev202504191947}/PKG-INFO +2 -2
- {airbyte_source_google_drive-0.4.0.dev202504091818 → airbyte_source_google_drive-0.4.0.dev202504191947}/pyproject.toml +2 -2
- {airbyte_source_google_drive-0.4.0.dev202504091818 → airbyte_source_google_drive-0.4.0.dev202504191947}/source_google_drive/stream_reader.py +19 -2
- {airbyte_source_google_drive-0.4.0.dev202504091818 → airbyte_source_google_drive-0.4.0.dev202504191947}/README.md +0 -0
- {airbyte_source_google_drive-0.4.0.dev202504091818 → airbyte_source_google_drive-0.4.0.dev202504191947}/source_google_drive/__init__.py +0 -0
- {airbyte_source_google_drive-0.4.0.dev202504091818 → airbyte_source_google_drive-0.4.0.dev202504191947}/source_google_drive/exceptions.py +0 -0
- {airbyte_source_google_drive-0.4.0.dev202504091818 → airbyte_source_google_drive-0.4.0.dev202504191947}/source_google_drive/run.py +0 -0
- {airbyte_source_google_drive-0.4.0.dev202504091818 → airbyte_source_google_drive-0.4.0.dev202504191947}/source_google_drive/schemas/file_permissions.json +0 -0
- {airbyte_source_google_drive-0.4.0.dev202504091818 → airbyte_source_google_drive-0.4.0.dev202504191947}/source_google_drive/schemas/identities.json +0 -0
- {airbyte_source_google_drive-0.4.0.dev202504091818 → airbyte_source_google_drive-0.4.0.dev202504191947}/source_google_drive/source.py +0 -0
- {airbyte_source_google_drive-0.4.0.dev202504091818 → airbyte_source_google_drive-0.4.0.dev202504191947}/source_google_drive/spec.py +0 -0
- {airbyte_source_google_drive-0.4.0.dev202504091818 → airbyte_source_google_drive-0.4.0.dev202504191947}/source_google_drive/stream_permissions_reader.py +0 -0
- {airbyte_source_google_drive-0.4.0.dev202504091818 → airbyte_source_google_drive-0.4.0.dev202504191947}/source_google_drive/utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: airbyte-source-google-drive
|
|
3
|
-
Version: 0.4.0.
|
|
3
|
+
Version: 0.4.0.dev202504191947
|
|
4
4
|
Summary: Source implementation for Google Drive.
|
|
5
5
|
License: ELv2
|
|
6
6
|
Author: Airbyte
|
|
@@ -10,7 +10,7 @@ Classifier: License :: Other/Proprietary License
|
|
|
10
10
|
Classifier: Programming Language :: Python :: 3
|
|
11
11
|
Classifier: Programming Language :: Python :: 3.10
|
|
12
12
|
Classifier: Programming Language :: Python :: 3.11
|
|
13
|
-
Requires-Dist: airbyte-cdk[file-based] (==6.45.
|
|
13
|
+
Requires-Dist: airbyte-cdk[file-based] (==6.45.4.post14.dev14544463167)
|
|
14
14
|
Requires-Dist: google-api-python-client (==2.104.0)
|
|
15
15
|
Requires-Dist: google-api-python-client-stubs (==1.18.0)
|
|
16
16
|
Requires-Dist: google-auth-httplib2 (==0.1.1)
|
|
@@ -5,7 +5,7 @@ requires = [
|
|
|
5
5
|
build-backend = "poetry.core.masonry.api"
|
|
6
6
|
|
|
7
7
|
[tool.poetry]
|
|
8
|
-
version = "0.4.0.
|
|
8
|
+
version = "0.4.0.dev202504191947"
|
|
9
9
|
name = "airbyte-source-google-drive"
|
|
10
10
|
description = "Source implementation for Google Drive."
|
|
11
11
|
authors = [
|
|
@@ -31,7 +31,7 @@ google-api-python-client-stubs = "==1.18.0"
|
|
|
31
31
|
extras = [
|
|
32
32
|
"file-based",
|
|
33
33
|
]
|
|
34
|
-
version = "6.45.
|
|
34
|
+
version = "6.45.4.post14.dev14544463167"
|
|
35
35
|
|
|
36
36
|
[tool.poetry.scripts]
|
|
37
37
|
source-google-drive = "source_google_drive.run:run"
|
|
@@ -63,6 +63,16 @@ class GoogleDriveRemoteFile(RemoteFile):
|
|
|
63
63
|
# The mime type of the file as returned by the Google Drive API
|
|
64
64
|
# This is not the same as the mime type when opened by the parser (e.g. google docs is exported as docx)
|
|
65
65
|
original_mime_type: str
|
|
66
|
+
view_link: str
|
|
67
|
+
# Only populated for items in shared drives.
|
|
68
|
+
drive_id: Optional[str] = None
|
|
69
|
+
created_at: datetime
|
|
70
|
+
|
|
71
|
+
@property
|
|
72
|
+
def url(self) -> str:
|
|
73
|
+
if self.drive_id:
|
|
74
|
+
return f"https://drive.google.com/open?id={self.id}&driveId={self.drive_id}"
|
|
75
|
+
return self.view_link
|
|
66
76
|
|
|
67
77
|
|
|
68
78
|
class SourceGoogleDriveStreamReader(AbstractFileBasedStreamReader):
|
|
@@ -134,10 +144,11 @@ class SourceGoogleDriveStreamReader(AbstractFileBasedStreamReader):
|
|
|
134
144
|
(path, folder_id) = folder_id_queue.pop()
|
|
135
145
|
# fetch all files in this folder (1000 is the max page size)
|
|
136
146
|
# supportsAllDrives and includeItemsFromAllDrives are required to access files in shared drives
|
|
147
|
+
# ref https://developers.google.com/workspace/drive/api/reference/rest/v3/files#File
|
|
137
148
|
request = service.files().list(
|
|
138
149
|
q=f"'{folder_id}' in parents",
|
|
139
150
|
pageSize=1000,
|
|
140
|
-
fields="nextPageToken, files(id, name, modifiedTime, mimeType)",
|
|
151
|
+
fields="nextPageToken, files(id, name, modifiedTime, mimeType, webViewLink, driveId, createdTime)",
|
|
141
152
|
supportsAllDrives=True,
|
|
142
153
|
includeItemsFromAllDrives=True,
|
|
143
154
|
)
|
|
@@ -160,6 +171,7 @@ class SourceGoogleDriveStreamReader(AbstractFileBasedStreamReader):
|
|
|
160
171
|
continue
|
|
161
172
|
else:
|
|
162
173
|
last_modified = datetime.strptime(new_file["modifiedTime"], "%Y-%m-%dT%H:%M:%S.%fZ")
|
|
174
|
+
created_at = datetime.strptime(new_file["createdTime"], "%Y-%m-%dT%H:%M:%S.%fZ")
|
|
163
175
|
original_mime_type = new_file["mimeType"]
|
|
164
176
|
mime_type = (
|
|
165
177
|
self._get_export_mime_type(original_mime_type)
|
|
@@ -169,9 +181,12 @@ class SourceGoogleDriveStreamReader(AbstractFileBasedStreamReader):
|
|
|
169
181
|
remote_file = GoogleDriveRemoteFile(
|
|
170
182
|
uri=file_name,
|
|
171
183
|
last_modified=last_modified,
|
|
184
|
+
created_at=created_at,
|
|
172
185
|
id=new_file["id"],
|
|
173
186
|
original_mime_type=original_mime_type,
|
|
174
187
|
mime_type=mime_type,
|
|
188
|
+
drive_id=new_file.get("driveId"),
|
|
189
|
+
view_link=new_file.get("webViewLink"),
|
|
175
190
|
)
|
|
176
191
|
if self.file_matches_globs(remote_file, globs):
|
|
177
192
|
yield remote_file
|
|
@@ -266,7 +281,7 @@ class SourceGoogleDriveStreamReader(AbstractFileBasedStreamReader):
|
|
|
266
281
|
raise FileSizeLimitError(message=message, internal_message=message, failure_type=FailureType.config_error)
|
|
267
282
|
|
|
268
283
|
try:
|
|
269
|
-
file_paths = self._get_file_transfer_paths(file, local_directory)
|
|
284
|
+
file_paths = self._get_file_transfer_paths(source_file_relative_path=file.uri, staging_directory=local_directory)
|
|
270
285
|
local_file_path = file_paths[self.LOCAL_FILE_PATH]
|
|
271
286
|
file_relative_path = file_paths[self.FILE_RELATIVE_PATH]
|
|
272
287
|
file_name = file_paths[self.FILE_NAME]
|
|
@@ -299,7 +314,9 @@ class SourceGoogleDriveStreamReader(AbstractFileBasedStreamReader):
|
|
|
299
314
|
bytes=file_size,
|
|
300
315
|
id=file.id,
|
|
301
316
|
mime_type=file.mime_type,
|
|
317
|
+
created_at=file.created_at.strftime("%Y-%m-%dT%H:%M:%S.%fZ"),
|
|
302
318
|
updated_at=file.last_modified.strftime("%Y-%m-%dT%H:%M:%S.%fZ"),
|
|
319
|
+
source_uri=file.url,
|
|
303
320
|
)
|
|
304
321
|
file_reference = AirbyteRecordMessageFileReference(
|
|
305
322
|
staging_file_url=local_file_path,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|