
                             S r SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJ	r	   " S S	\R                  5      r " S
 S\R                  5      r " S S\5      r " S S\R                  5      rg)z2Functions for du command to display resource size.    )absolute_import)division)print_function)unicode_literals)	list_util)shim_format_utilc                       \ rS rSrSrS rSrg)_ObjectFormatWrapper   z:For formatting how obejects are printed when listed by du.c                     [        U R                  SS5      nU R                  5       u  p#SR                  [        R
                  " XR                  U R                  S9US9$ )2Returns string of select properties from resource.sizer   {size:<13}{url}use_gsutil_styler   url)getattrresource_check_and_handles_versionsformatr   #check_and_convert_to_readable_sizes_readable_sizes_use_gsutil_style)selfr   
url_string_s       9lib/googlecloudsdk/command_lib/storage/du_command_util.py__str___ObjectFormatWrapper.__str__   sb    4==&!,D446MJ %%::&&9O9O
 	 &       N)__name__
__module____qualname____firstlineno____doc__r   __static_attributes__r"   r!   r   r
   r
      s
    Br!   r
   c                   >   ^  \ rS rSrSr    SU 4S jjrS rSrU =r$ )_ContainerSummaryFormatWrapper+   z<For formatting how containers are printed when listed by du.c                 l   > [         [        U ]  U[        R                  R
                  UUUS9  X l        g)z?See list_util.BaseFormatWrapper class for function doc strings.)display_detailobject_statereadable_sizesr   N)superr*   __init__r   DisplayDetailSHORT_container_size)r   r   container_sizer.   r/   r   	__class__s         r   r1   '_ContainerSummaryFormatWrapper.__init__.   s=     

($8 ..44!%) 9  *r!   c                 H   U R                   R                  R                  nU R                   R                  R                  5       (       a  UR	                  S5      nOUn[
        R                  " U R                  U R                  U R                  5      nSR                  UUS9$ )r   /r   r   )r   storage_urlversionless_url_string	is_bucketrstripr   r   r4   r   r   r   )r   raw_url_stringr   r   s       r   r   &_ContainerSummaryFormatWrapper.__str__@   s    ]]..EEN}}  **,, "((-j!j 88d22D4J4JD
 %% &  r!   )r4   )NNFF)	r#   r$   r%   r&   r'   r1   r   r(   __classcell__r6   s   @r   r*   r*   +   s#    D
 *$ r!   r*   c                   (   ^  \ rS rSrU 4S jrSrU =r$ )_BucketSummaryFormatWrapperW   c                 |   > U R                   R                  R                  5       (       a  [        [        U ]  5       $ g)N )r   r:   r<   r0   rC   r   )r   r6   s    r   r   #_BucketSummaryFormatWrapper.__str__Y   s0    }}  **,,.=??r!   r"   )r#   r$   r%   r&   r   r(   r@   rA   s   @r   rC   rC   W   s     r!   rC   c                   R   ^  \ rS rSrSr        SU 4S jjrS rS rS rSr	U =r
$ )	
DuExecutor`   z Helper class for the Du command.c
                    > [         [        U ]  UUUUSUUUU	S9	  XPl        U R                  (       a  [        U l        g[        U l        [        U l        g)z>See list_util.BaseListExecutor class for function doc strings.T)	
cloud_urlsexclude_patternsr.   r/   recursion_flagtotalr   zero_terminatorlist_filterN)	r0   rI   r1   
_summarizerC   _container_summary_wrapperr*   r
   _object_wrapper)r   rL   rM   r.   r/   	summarizerO   r   rP   rQ   r6   s             r   r1   DuExecutor.__init__c   sZ     
*d$)!%)' % 
  O(Cd%(Fd%1dr!   c                     g)NFr"   )r   raw_cloud_urls     r   _should_only_display_buckets'DuExecutor._should_only_display_buckets   s    r!   c                 ~   U R                   (       a  UR                  5       (       a  g U R                  (       a  [        R                  " X@R
                  S9nUR                  5       (       a  UR                  R                  S5      nOUR                  n[        SR                  XES9U R                  (       a  SOSS9  g )Nr   r9   r   r    
end)rR   is_providerr   r   get_human_readable_byte_valuer   r<   r   r=   printr   _zero_terminator)r   resource_urlonly_display_bucketsobject_counttotal_bytesr   s         r    _print_summary_for_top_level_url+DuExecutor._print_summary_for_top_level_url   s     ??l6688$BB
(>(>k   **11#6j**j	   	! 	
 ))Dt	r!   c           	          [        SR                  [        R                  " UU R                  U R
                  5      S9U R                  (       a  SOSS9  g )Nz{size:<13}total)r   r\   r]   r^   )rb   r   r   r   r   r   rc   )r   all_sources_total_bytess     r   _print_totalDuExecutor._print_total   sO    	  >>'$$&& 	! 	
 ))Dt	r!   )rS   rT   rR   )NNFFFFFN)r#   r$   r%   r&   r'   r1   rY   rh   rl   r(   r@   rA   s   @r   rI   rI   `   s:    (
 2@0
 
r!   rI   N)r'   
__future__r   r   r   r   "googlecloudsdk.command_lib.storager   ,googlecloudsdk.command_lib.storage.resourcesr   BaseFormatWrapperr
   r*   rC   BaseListExecutorrI   r"   r!   r   <module>rs      sb    9 &  % ' 8 I966 ")Y%@%@ )X"@ I++ Ir!   