
                         z    d Z ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlm	Z	 ddl
mZ 	 	 dd	Z	 	 dd
Zd Zy)ztGeneric logic for rm and mv command surfaces.

Tested in mv_test.py, rm_test.py, and managed_folders/delete_test.py
    )folder_util)plurality_checkable_iterator)task_executor)task_status)	task_util)delete_task_iterator_factory)logc           	         t        j                  ||      }t        j                  t	        j
                  |j                         d             }|j                         r|sy|rt        j                  j                  d       t        j                  |d|t        j                  t        j                  j                   d      | j"                  xs t%        j&                         	      S )
z8Creates and executes tasks for removing managed folders.task_status_queuec                     | j                   S N)managed_folder_urltasks    9lib/googlecloudsdk/command_lib/storage/rm_command_util.py<lambda>z(remove_managed_folders.<locals>.<lambda>/   s
    T-D-D    get_url_functionr   zRemoving managed folders:FNmanifest_pathparallelizabler   progress_manager_argscontinue_on_error)r   DeleteTaskIteratorFactoryr   PluralityCheckableIteratorr   reverse_containment_ordermanaged_folder_iteratoris_emptyr	   statusPrintr   execute_tasksr   ProgressManagerArgsIncrementTypeINTEGERr   r   should_use_parallelism)argssource_expansion_iteratorr   raise_error_for_unmatched_urlsverbosetask_iterator_factorydelete_task_iterators          r   remove_managed_foldersr/      s     #<<
#-  #==

/
/#;;= D  ""$-KJJ01		$	$)';;

#
#
+
+ 
 
 
FI$D$D$F
 r   c           	         t        |       }t        j                  ||      }t        j                  t        j                  |j                         d             }|j                         r|sy|rt        j                  j                  d       t        j                  |d|t        j                  t        j                   j"                  d      t%        j&                         	      S )
z0Creates and executes tasks for removing folders.r   c                     | j                   S r   )
folder_urlr   s    r   r   z remove_folders.<locals>.<lambda>_   s    T__r   r   r   zRemoving folders:FNr   r   )_de_duplicate_foldersr   r   r   r   r   r   folder_iteratorr!   r	   r"   r#   r   r$   r   r%   r&   r'   r   r(   )r*   r   r+   r,   !updated_source_expansion_iteratorr-   r.   s          r   remove_foldersr6   J   s     '<'#
 #<<
+-  #==

/
/#335 <  ""$-KJJ()		$	$)';;

#
#
+
+ "88:
 r   c                     i }t        | d      s| S | D ]4  }|j                  j                  |vs|||j                  j                  <   6 |j                         S )z=Removes duplicate folders from the source expansion iterator.__iter__)hasattrresourcestorage_urlvalues)r*   de_duplicated_mapsources      r   r3   r3   x   s^    & 	*J	7$$)f""*;;7=334 * 
	!	!	##r   N)FF)__doc__"googlecloudsdk.command_lib.storager   r   (googlecloudsdk.command_lib.storage.tasksr   r   r   +googlecloudsdk.command_lib.storage.tasks.rmr   googlecloudsdk.corer	   r/   r6   r3    r   r   <module>rE      sB   
 ; K B @ > T # $)*` $)	+\$r   