@@ -23,13 +23,16 @@ class DeleteQueue:
2323 Allows adding multiple databus URIs to a queue and executing their deletion in batch.
2424 """
2525
26- def __init__ (self , databus_key : str ):
26+ def __init__ (self , databus_key : str , manifest_context = None ):
2727 """Create a DeleteQueue bound to a given Databus API key.
2828
2929 Args:
3030 databus_key: API key used to authenticate deletion requests.
31+ manifest_context: Optional ManifestContext to record deletion
32+ outcomes into. Passed through to _delete_list on execute().
3133 """
3234 self .databus_key = databus_key
35+ self .manifest_context = manifest_context
3336 self .queue : set [str ] = set ()
3437
3538 def add_uri (self , databusURI : str ):
@@ -69,11 +72,13 @@ def execute(self):
6972 """Execute all queued deletions.
7073
7174 Each queued URI will be deleted using `_delete_resource`.
75+ Passes manifest_context through so deletions are recorded.
7276 """
7377 _delete_list (
7478 list (self .sorted_queue ()),
7579 self .databus_key ,
7680 force = True ,
81+ manifest_context = self .manifest_context ,
7782 )
7883
7984
@@ -116,6 +121,7 @@ def _delete_resource(
116121 dry_run : bool = False ,
117122 force : bool = False ,
118123 queue : DeleteQueue = None ,
124+ manifest_context = None ,
119125):
120126 """Delete a single Databus resource (version, artifact, group).
121127
@@ -144,6 +150,8 @@ def _delete_resource(
144150
145151 if dry_run :
146152 print (f"[DRY RUN] Would delete: { databusURI } " )
153+ if manifest_context is not None :
154+ manifest_context .record_file (url = databusURI , status = "dry_run" )
147155 return
148156
149157 if queue is not None :
@@ -156,6 +164,8 @@ def _delete_resource(
156164
157165 if response .status_code in (200 , 204 ):
158166 print (f"Successfully deleted: { databusURI } " )
167+ if manifest_context is not None :
168+ manifest_context .record_file (url = databusURI , status = "success" )
159169 else :
160170 raise Exception (
161171 f"Failed to delete { databusURI } : { response .status_code } - { response .text } "
@@ -168,6 +178,7 @@ def _delete_list(
168178 dry_run : bool = False ,
169179 force : bool = False ,
170180 queue : DeleteQueue = None ,
181+ manifest_context = None ,
171182):
172183 """Delete a list of Databus resources.
173184
@@ -180,7 +191,7 @@ def _delete_list(
180191 """
181192 for databusURI in databusURIs :
182193 _delete_resource (
183- databusURI , databus_key , dry_run = dry_run , force = force , queue = queue
194+ databusURI , databus_key , dry_run = dry_run , force = force , queue = queue , manifest_context = manifest_context
184195 )
185196
186197
@@ -190,6 +201,7 @@ def _delete_artifact(
190201 dry_run : bool = False ,
191202 force : bool = False ,
192203 queue : DeleteQueue = None ,
204+ manifest_context = None ,
193205):
194206 """Delete an artifact and all its versions.
195207
@@ -223,11 +235,11 @@ def _delete_artifact(
223235 else :
224236 # Delete all versions
225237 _delete_list (
226- version_uris , databus_key , dry_run = dry_run , force = force , queue = queue
238+ version_uris , databus_key , dry_run = dry_run , force = force , queue = queue , manifest_context = manifest_context
227239 )
228240
229241 # Finally, delete the artifact itself
230- _delete_resource (databusURI , databus_key , dry_run = dry_run , force = force , queue = queue )
242+ _delete_resource (databusURI , databus_key , dry_run = dry_run , force = force , queue = queue , manifest_context = manifest_context )
231243
232244
233245def _delete_group (
@@ -236,6 +248,7 @@ def _delete_group(
236248 dry_run : bool = False ,
237249 force : bool = False ,
238250 queue : DeleteQueue = None ,
251+ manifest_context = None ,
239252):
240253 """Delete a group and all its artifacts and versions.
241254
@@ -266,14 +279,14 @@ def _delete_group(
266279 # Delete all artifacts (which deletes their versions)
267280 for artifact_uri in artifact_uris :
268281 _delete_artifact (
269- artifact_uri , databus_key , dry_run = dry_run , force = force , queue = queue
282+ artifact_uri , databus_key , dry_run = dry_run , force = force , queue = queue , manifest_context = manifest_context
270283 )
271284
272285 # Finally, delete the group itself
273- _delete_resource (databusURI , databus_key , dry_run = dry_run , force = force , queue = queue )
286+ _delete_resource (databusURI , databus_key , dry_run = dry_run , force = force , queue = queue , manifest_context = manifest_context )
274287
275288
276- def delete (databusURIs : List [str ], databus_key : str , dry_run : bool , force : bool ):
289+ def delete (databusURIs : List [str ], databus_key : str , dry_run : bool , force : bool , manifest_context = None ):
277290 """Delete a dataset from the databus.
278291
279292 Delete a group, artifact, or version identified by the given databus URI.
@@ -286,7 +299,7 @@ def delete(databusURIs: List[str], databus_key: str, dry_run: bool, force: bool)
286299 force: If True, skip confirmation prompt and proceed with deletion.
287300 """
288301
289- queue = DeleteQueue (databus_key )
302+ queue = DeleteQueue (databus_key , manifest_context = manifest_context )
290303
291304 for databusURI in databusURIs :
292305 _host , _account , group , artifact , version , file = (
@@ -296,24 +309,24 @@ def delete(databusURIs: List[str], databus_key: str, dry_run: bool, force: bool)
296309 if group == "collections" and artifact is not None :
297310 print (f"Deleting collection: { databusURI } " )
298311 _delete_resource (
299- databusURI , databus_key , dry_run = dry_run , force = force , queue = queue
312+ databusURI , databus_key , dry_run = dry_run , force = force , queue = queue , manifest_context = manifest_context
300313 )
301314 elif file is not None :
302315 print (f"Deleting file is not supported via API: { databusURI } " )
303316 elif version is not None :
304317 print (f"Deleting version: { databusURI } " )
305318 _delete_resource (
306- databusURI , databus_key , dry_run = dry_run , force = force , queue = queue
319+ databusURI , databus_key , dry_run = dry_run , force = force , queue = queue , manifest_context = manifest_context
307320 )
308321 elif artifact is not None :
309322 print (f"Deleting artifact and all its versions: { databusURI } " )
310323 _delete_artifact (
311- databusURI , databus_key , dry_run = dry_run , force = force , queue = queue
324+ databusURI , databus_key , dry_run = dry_run , force = force , queue = queue , manifest_context = manifest_context
312325 )
313326 elif group is not None and group != "collections" :
314327 print (f"Deleting group and all its artifacts and versions: { databusURI } " )
315328 _delete_group (
316- databusURI , databus_key , dry_run = dry_run , force = force , queue = queue
329+ databusURI , databus_key , dry_run = dry_run , force = force , queue = queue , manifest_context = manifest_context
317330 )
318331 else :
319332 print (f"Deleting { databusURI } is not supported." )
0 commit comments