8000 Permit hierarchical filenames in GCS artifact service · google/adk-python@67fb794 · GitHub
[go: up one dir, main page]

Skip to content

Commit 67fb794

Browse files
committed
Permit hierarchical filenames in GCS artifact service
1 parent 0a5cf45 commit 67fb794

File tree

2 files changed

+19
-5
lines changed

2 files changed

+19
-5
lines changed

src/google/adk/artifacts/gcs_artifact_service.py

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -151,15 +151,15 @@ async def list_artifact_keys(
151151
self.bucket, prefix=session_prefix
152152
)
153153
for blob in session_blobs:
154-
_, _, _, filename, _ = blob.name.split("/")
154+
filename = get_full_file_name_from_blob_name(blob.name)
155155
filenames.add(filename)
156156

157157
user_namespace_prefix = f"{app_name}/{user_id}/user/"
158158
user_namespace_blobs = self.storage_client.list_blobs(
159159
self.bucket, prefix=user_namespace_prefix
160160
)
161161
for blob in user_namespace_blobs:
162-
_, _, _, filename, _ = blob.name.split("/")
162+
filename = get_full_file_name_from_blob_name(blob.name)
163163
filenames.add(filename)
164164

165165
return sorted(list(filenames))
@@ -190,6 +190,20 @@ async def list_versions(
190190
blobs = self.storage_client.list_blobs(self.bucket, prefix=prefix)
191191
versions = []
192192
for blob in blobs:
193-
_, _, _, _, version = blob.name.split("/")
193+
version = get_version_from_blob_name(blob.name)
194194
versions.append(int(version))
195195
return versions
196+
197+
def get_version_from_blob_name(blob_name: str) -> int:
198+
name_parts = blob_name.split("/")
199+
return int(name_parts[-1])
200+
201+
def get_full_file_name_from_blob_name(blob_name: str) -> str:
202+
"""Gets the full file name even if it contains slashes."""
203+
name_parts = blob_name.split("/")
204+
# cut the well-known {app_name}/{user_id}/{session_id} or "user"/
205+
name_parts = name_parts[3:]
206+
# cut the version
207+
name_parts = name_parts[:-1]
208+
# all that's left is the full file name
209+
return "/".join(name_parts)

tests/unittests/artifacts/test_artifact_service.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ async def test_list_keys(service_type):
222222
app_name = "app0"
223223
user_id = "user0"
224224
session_id = "123"
225-
filename = "filename"
225+
filename = "hierarchical/path/filename"
226226
filenames = [filename + str(i) for i in range(5)]
227227

228228
for f in filenames:
@@ -253,7 +253,7 @@ async def test_list_versions(service_type):
253253
app_name = "app0"
254254
user_id = "user0"
255255
session_id = "123"
256-
filename = "filename"
256+
filename = "hierarchical/path/filename"
257257
versions = [
258258
types.Part.from_bytes(
259259
data=i.to_bytes(2, byteorder="big"), mime_type="text/plain"

0 commit comments

Comments
 (0)
0