@@ -289,6 +289,41 @@ def process_stac_item(
289289 for _ , current_class in objects :
290290 storage_class_counts [current_class ] = storage_class_counts .get (current_class , 0 ) + 1
291291
292+ # Show initial distribution before processing
293+ if storage_class_counts :
294+ logger .info ("" )
295+ logger .info ("Initial storage class distribution (before changes):" )
296+ total = sum (storage_class_counts .values ())
297+ for sc in sorted (storage_class_counts .keys ()):
298+ count = storage_class_counts [sc ]
299+ percentage = (count / total * 100 ) if total > 0 else 0
300+ logger .info (f" { sc } : { count } objects ({ percentage :.1f} %)" )
301+
302+ # Show expected distribution after changes
303+ if not dry_run and len (objects_to_change ) > 0 :
304+ logger .info ("" )
305+ logger .info ("Expected storage class distribution (after changes):" )
306+ expected_counts = storage_class_counts .copy ()
307+ # Remove changed objects from their old classes
308+ for _ , old_class in objects_to_change :
309+ expected_counts [old_class ] = expected_counts .get (old_class , 0 ) - 1
310+ if expected_counts [old_class ] == 0 :
311+ del expected_counts [old_class ]
312+ # Add changed objects to target class
313+ expected_counts [storage_class ] = expected_counts .get (storage_class , 0 ) + len (
314+ objects_to_change
315+ )
316+
317+ expected_total = sum (expected_counts .values ())
318+ for sc in sorted (expected_counts .keys ()):
319+ count = expected_counts [sc ]
320+ percentage = (count / expected_total * 100 ) if expected_total > 0 else 0
321+ logger .info (f" { sc } : { count } objects ({ percentage :.1f} %)" )
322+
323+ if dry_run :
324+ logger .info (" (DRY RUN)" )
325+ logger .info ("" )
326+
292327 logger .info (f"Processing { total_objects } objects..." )
293328 logger .info (
294329 f" { len (objects_already_correct )} already have target storage class { storage_class } "
@@ -327,39 +362,6 @@ def process_stac_item(
327362 logger .info (f" Succeeded: { stats ['succeeded' ]} " )
328363 logger .info (f" Failed: { stats ['failed' ]} " )
329364
330- if storage_class_counts :
331- logger .info ("" )
332- logger .info ("Initial storage class distribution (before changes):" )
333- total = sum (storage_class_counts .values ())
334- for sc in sorted (storage_class_counts .keys ()):
335- count = storage_class_counts [sc ]
336- percentage = (count / total * 100 ) if total > 0 else 0
337- logger .info (f" { sc } : { count } objects ({ percentage :.1f} %)" )
338-
339- # Show expected distribution after changes
340- if not dry_run and len (objects_to_change ) > 0 :
341- logger .info ("" )
342- logger .info ("Expected storage class distribution (after changes):" )
343- expected_counts = storage_class_counts .copy ()
344- # Remove changed objects from their old classes
345- for _ , old_class in objects_to_change :
346- expected_counts [old_class ] = expected_counts .get (old_class , 0 ) - 1
347- if expected_counts [old_class ] == 0 :
348- del expected_counts [old_class ]
349- # Add changed objects to target class
350- expected_counts [storage_class ] = expected_counts .get (storage_class , 0 ) + len (
351- objects_to_change
352- )
353-
354- expected_total = sum (expected_counts .values ())
355- for sc in sorted (expected_counts .keys ()):
356- count = expected_counts [sc ]
357- percentage = (count / expected_total * 100 ) if expected_total > 0 else 0
358- logger .info (f" { sc } : { count } objects ({ percentage :.1f} %)" )
359-
360- if dry_run :
361- logger .info (" (DRY RUN)" )
362-
363365 return stats
364366
365367
0 commit comments