
                             S r SSKJr  SSKJr  SSKJr  SSKJr   " S S\5      r " S S	\5      r " S
 S\5      r	 " S S\5      r
g)z>Classes for cloud/file references yielded by gsutil iterators.    )absolute_import)print_function)division)unicode_literalsc                   f    \ rS rSrSr " S S\5      r\S 5       r\S 5       r	S r
S rS	 rS
 rSrg)BucketListingRef   a  Base class for a reference to one fully expanded iterator result.

This allows polymorphic iteration over wildcard-iterated URLs.  The
reference contains a fully expanded URL string containing no wildcards and
referring to exactly one entity (if a wildcard is contained, it is assumed
this is part of the raw string and should never be treated as a wildcard).

Each reference represents a Bucket, Object, or Prefix.  For filesystem URLs,
Objects represent files and Prefixes represent directories.

The root_object member contains the underlying object as it was retrieved.
It is populated by the calling iterator, which may only request certain
fields to reduce the number of server requests.

For filesystem URLs, root_object is not populated.
c                   $    \ rS rSrSrSrSrSrSrg)&BucketListingRef._BucketListingRefType)   z,Enum class for describing BucketListingRefs.bucketobjectprefix N)	__name__
__module____qualname____firstlineno____doc__BUCKETOBJECTPREFIX__static_attributes__r       +platform/gsutil/gslib/bucket_listing_ref.py_BucketListingRefTyper   )   s    6FFFr   r   c                     U R                   $ N_url_stringselfs    r   
url_stringBucketListingRef.url_string/   s    r   c                     U R                   $ r   )	_ref_typer!   s    r   	type_nameBucketListingRef.type_name3   s    >>r   c                 H    U R                   U R                  R                  :H  $ r   )r&   r   r   r!   s    r   IsBucketBucketListingRef.IsBucket7       >>T77>>>>r   c                 H    U R                   U R                  R                  :H  $ r   )r&   r   r   r!   s    r   IsObjectBucketListingRef.IsObject:   r,   r   c                 H    U R                   U R                  R                  :H  $ r   )r&   r   r   r!   s    r   IsPrefixBucketListingRef.IsPrefix=   r,   r   c                     U R                   $ r   r   r!   s    r   __str__BucketListingRef.__str__@   s    r   r   N)r   r   r   r   r   r   r   propertyr#   r'   r*   r.   r1   r4   r   r   r   r   r   r      sO    "f     ???r   r   c                   0   ^  \ rS rSrSrSU 4S jjrSrU =r$ )BucketListingBucketD   z&BucketListingRef subclass for buckets.c                    > [         [        U ]  5         U R                  R                  U l        UR                  U l        Xl        X l	        g)zCreates a BucketListingRef of type bucket.

Args:
  storage_url: StorageUrl containing a bucket.
  root_object: Underlying object metadata, if available.
N)
superr8   __init__r   r   r&   r#   r    storage_urlroot_objectr"   r=   r>   	__class__s      r   r<   BucketListingBucket.__init__G   @     

t-///66DN"--D""r   r&   r    r>   r=   r   r   r   r   r   r   r<   r   __classcell__r@   s   @r   r8   r8   D       .# #r   r8   c                   0   ^  \ rS rSrSrSU 4S jjrSrU =r$ )BucketListingPrefixU   z'BucketListingRef subclass for prefixes.c                    > [         [        U ]  5         U R                  R                  U l        UR                  U l        Xl        X l	        g)zCreates a BucketListingRef of type prefix.

Args:
  storage_url: StorageUrl containing a prefix.
  root_object: Underlying object metadata, if available.
N)
r;   rI   r<   r   r   r&   r#   r    r=   r>   r?   s      r   r<   BucketListingPrefix.__init__X   rB   r   rC   r   rD   rF   s   @r   rI   rI   U   s    /# #r   rI   c                   0   ^  \ rS rSrSrSU 4S jjrSrU =r$ )BucketListingObjectf   z&BucketListingRef subclass for objects.c                    > [         [        U ]  5         U R                  R                  U l        UR                  U l        Xl        X l	        g)zCreates a BucketListingRef of type object.

Args:
  storage_url: StorageUrl containing an object.
  root_object: Underlying object metadata, if available.
N)
r;   rN   r<   r   r   r&   r#   r    r=   r>   r?   s      r   r<   BucketListingObject.__init__i   rB   r   rC   r   rD   rF   s   @r   rN   rN   f   rG   r   rN   N)r   
__future__r   r   r   r   r   r   r8   rI   rN   r   r   r   <module>rS      sK    E & %  '*v *Z#* #"#* #"#* #r   