
                             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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KJr  SSKJr  SSKJr  SSKJr  SSKJr  SrSrSr\
R4                  \
R6                  " \
R8                  R:                  5       " S S\
R<                  5      5       5       r\
R4                  \
R6                  " \
R8                  R@                  5       " S S\5      5       5       r!g)zGImplementation of objects describe command for getting info on objects.    )absolute_import)division)unicode_literals)api_factory)	cloud_api)request_config_factory)base)encryption_util)errors)errors_util)flags)storage_url)wildcard_iterator)contexts_only_formatter)full_resource_formatter)gsutil_json_printer)resource_utilz"
Describe a Cloud Storage object.
z
Describe a Google Cloud Storage object with the url
"gs://bucket/my-object":

  $ {command} gs://bucket/my-object

Describe object with JSON formatting, only returning the "name" key:

  $ {command} gs://bucket/my-object --format="json(name)"
z{
Describe only contexts attached to objects as key value pairs.

  $ {command} gs://my-bucket/object --format=contextsonly
c                   8    \ rS rSrSr\\S.r\S 5       r	S r
Srg)Describe8    Describe a Cloud Storage object.DESCRIPTIONEXAMPLESc                    UR                  SSS9  [        R                  " U5        [        R                  " USS9  [        R                  " USS9  [        R
                  " U5        [        R                  " U5        [        R                  R                  5         U R                  5       [        R                  R                  :X  a  [        R                  R                  5         g g )Nurlz$Specifies URL of object to describe.)helpT)command_only_reads_dataF)is_list)add_argumentr   add_additional_headers_flagadd_encryption_flags&add_fetch_encrypted_object_hashes_flagadd_raw_display_flagadd_soft_deleted_flagr   GsutilJsonPrinterRegisterReleaseTrackr	   ALPHAr   ContextsOnlyPrinter)clsparsers     'lib/surface/storage/objects/describe.pyArgsDescribe.ArgsB   s    
$JK	%%f-	vtD	00G	v&	'))224
T..44411::< 5    c           	         [         R                  " U5        [        R                  " UR                  5      (       a  [
        R                  " S5      e[        R                  " UR                  5      n[        R                  " UR                  U5        [        R                  " UR                  5      nUR                  UR                   UR"                  UR$                  [&        R(                  R*                  UR,                  S9nUR.                  (       a  [&        R0                  R2                  UR4                  ;   a  UR6                  (       a  UR8                  (       d  UR:                  (       a  [<        R>                  " UR                  UR:                  SS9nUR                  UR@                  URB                  [&        R(                  R*                  UR$                  UUR,                  S9nOUnURD                  [F        RH                  :X  a  U$ [J        RL                  " U[N        RP                  URR                  S9$ )NzDescribe does not accept wildcards because it returns a single resource. Please use the `ls` or `objects list` command for retrieving multiple resources.)
generationfields_scopesoft_deletedT)decryption_key_hash_sha256error_on_missing_key)r3   r2   request_configr4   )display_raw_keys)*r
   initialize_key_storer   contains_wildcardr   r   InvalidUrlErrorr   storage_url_from_stringr   raise_error_if_not_cloud_objectcommand_pathr   get_apischemeget_object_metadatabucket_nameresource_namer2   r   FieldsScopeFULLr4   fetch_encrypted_object_hashes
Capability
ENCRYPTIONcapabilitiesmd5_hashcrc32c_hashr5   r   get_request_configbucketnameformatr   CONTEXT_ONLY_PRINTER_FORMATr   get_display_dict_for_resourcer   ObjectDisplayTitlesAndDefaultsraw)selfargsr   clientresourcer7   final_resources          r-   RunDescribe.RunO   s   ((.**48844"",- -
 
-
-dhh
7C//0A0A3G  ,F))>>**//&& * H 	**''6+>+>>8#7#7++-@@


%-%H%H#%n 11
//
-- ,,11(('(( 2 n  n{{-III66>> r0    N)__name__
__module____qualname____firstlineno____doc___COMMAND_DESCRIPTION_GA_EXAMPLESdetailed_helpclassmethodr.   rY   __static_attributes__r[   r0   r-   r   r   8   s/     ) *-
 
= 
=.r0   r   c                   (    \ rS rSrSr\\\-   S.rSr	g)DescribeAlpha   r   r   r[   N)
r\   r]   r^   r_   r`   ra   rb   _ALPHA_EXAMPLESrc   re   r[   r0   r-   rg   rg      s     ) *0-r0   rg   N)"r`   
__future__r   r   r   googlecloudsdk.api_lib.storager   r   r   googlecloudsdk.callioper	   "googlecloudsdk.command_lib.storager
   r   r   r   r   r   ,googlecloudsdk.command_lib.storage.resourcesr   r   r   r   ra   rb   ri   UniverseCompatibleReleaseTracksr(   GADescribeCommandr   r)   rg   r[   r0   r-   <module>rs      s    N &  ' 6 4 A ( > 5 : 4 : @ P P L F 	 D%%(()Ct## C * CL D%%++,H  - r0   