airbyte-source-google-drive 0.4.0.dev202504091818__py3-none-any.whl → 0.4.0.dev202504191947__py3-none-any.whl

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.

@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: airbyte-source-google-drive
3
- Version: 0.4.0.dev202504091818
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.0.dev04107)
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)
@@ -6,9 +6,9 @@ source_google_drive/schemas/identities.json,sha256=JXBR_v0wpfDKiWVzLoc8bPs33x5CG
6
6
  source_google_drive/source.py,sha256=Hmz60uMCQZyA9AhCN0bOUSW2iL3GW6VTwI5vrK0D1RY,4140
7
7
  source_google_drive/spec.py,sha256=-WkA2zGuQtf3G7uK8uq9BnimUlQh0s3vsqROmIHOgzI,4718
8
8
  source_google_drive/stream_permissions_reader.py,sha256=88bSJBC5n2svioTDwgVqf0x5yXRxityk_i0xokWEJcQ,9026
9
- source_google_drive/stream_reader.py,sha256=r7eSUJ1CTgaZsMg3TljUDjSNidTyAyfRGfv2vxhLdlQ,14909
9
+ source_google_drive/stream_reader.py,sha256=NzmHL6SYeush4Etxmu-Ke3LUVU1GDg_7TdSPj49ubE0,15803
10
10
  source_google_drive/utils.py,sha256=ewR-kBKLmtD-s7zqCfGECfzWYF43tpQdscAQIlUEkR8,1022
11
- airbyte_source_google_drive-0.4.0.dev202504091818.dist-info/METADATA,sha256=3kVi44z3GI6xpjSQPUhi44MAUSk6FoldVXQlYvhoK5w,5536
12
- airbyte_source_google_drive-0.4.0.dev202504091818.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
13
- airbyte_source_google_drive-0.4.0.dev202504091818.dist-info/entry_points.txt,sha256=YgpJf0nA5Mn0B7YC9VOFI847vz1jI6U4q7BeLUOXa54,67
14
- airbyte_source_google_drive-0.4.0.dev202504091818.dist-info/RECORD,,
11
+ airbyte_source_google_drive-0.4.0.dev202504191947.dist-info/METADATA,sha256=V3GFlG7a2ORB7tPsRc7zPkhhQNellpQ6E5xtSeVV9iM,5549
12
+ airbyte_source_google_drive-0.4.0.dev202504191947.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
13
+ airbyte_source_google_drive-0.4.0.dev202504191947.dist-info/entry_points.txt,sha256=YgpJf0nA5Mn0B7YC9VOFI847vz1jI6U4q7BeLUOXa54,67
14
+ airbyte_source_google_drive-0.4.0.dev202504191947.dist-info/RECORD,,
@@ -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,