Ë
    ö%9jc€  ã                   óª   — d Z ddlmZ ddlmZ ddlmZ ddlmZm	Z	  G d„ de
«      Z G d„ d	e
«      Z G d
„ de«      Z G d„ de«      Z G d„ de«      Zy)z%Manage access to objects and buckets.é    )Ú _add_generation_match_parameters)Úcreate_trace_span)Ú_DEFAULT_TIMEOUT)ÚDEFAULT_RETRYÚ)DEFAULT_RETRY_IF_METAGENERATION_SPECIFIEDc                   óf   — e Zd ZdZdZdZdZdd„Zd„ Zd„ Z	d	„ Z
d
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)Ú
_ACLEntitya¾  Class representing a set of roles for an entity.

    This is a helper class that you likely won't ever construct
    outside of using the factor methods on the :class:`ACL` object.

    :type entity_type: str
    :param entity_type: The type of entity (ie, 'group' or 'user').

    :type identifier: str
    :param identifier: (Optional) The ID or e-mail of the entity. For the special
                       entity types (like 'allUsers').
    ÚREADERÚWRITERÚOWNERNc                 ó@   — || _         t        g «      | _        || _        y ©N)Ú
identifierÚsetÚrolesÚtype)ÚselfÚentity_typer   s      úT/var/www/html/truck-me/venv/lib/python3.12/site-packages/google/cloud/storage/acl.pyÚ__init__z_ACLEntity.__init__,   s   € Ø$ˆŒÜ˜“WˆŒ
Øˆ�	ó    c                 óh   — | j                   st        | j                  «      S dj                  | ¬«      S )Nz{acl.type}-{acl.identifier})Úacl)r   Ústrr   Úformat©r   s    r   Ú__str__z_ACLEntity.__str__1   s+   € Ø�ŠÜ�t—y‘y“>Ð!à0×7Ñ7¸DÐ7ÓAÐAr   c                 óF   — d| › ddj                  | j                  «      › d�S )Nz<ACL Entity: z (z, z)>)Újoinr   r   s    r   Ú__repr__z_ACLEntity.__repr__7   s%   € Ø˜t˜f B t§y¡y°·±Ó'<Ð&=¸RÐ@Ð@r   c                 ó   — | j                   S )zšGet the list of roles permitted by this entity.

        :rtype: list of strings
        :returns: The list of roles associated with this entity.
        )r   r   s    r   Ú	get_rolesz_ACLEntity.get_roles:   s   € ð �z‰zÐr   c                 ó:   — | j                   j                  |«       y)zoAdd a role to the entity.

        :type role: str
        :param role: The role to add to the entity.
        N)r   Úadd©r   Úroles     r   Úgrantz_ACLEntity.grantB   s   € ð 	�
‰
�‰�tÕr   c                 óX   — || j                   v r| j                   j                  |«       yy)zyRemove a role from the entity.

        :type role: str
        :param role: The role to remove from the entity.
        N)r   Úremover%   s     r   Úrevokez_ACLEntity.revokeJ   s'   € ð �4—:‘:ÑØ�J‰J×Ñ˜dÕ#ð r   c                 óB   — | j                  t        j                  «       y)z(Grant read access to the current entity.N)r'   r	   ÚREADER_ROLEr   s    r   Ú
grant_readz_ACLEntity.grant_readS   ó   € à�
‰
”:×)Ñ)Õ*r   c                 óB   — | j                  t        j                  «       y)z)Grant write access to the current entity.N)r'   r	   ÚWRITER_ROLEr   s    r   Úgrant_writez_ACLEntity.grant_writeW   r.   r   c                 óB   — | j                  t        j                  «       y)z)Grant owner access to the current entity.N)r'   r	   Ú
OWNER_ROLEr   s    r   Úgrant_ownerz_ACLEntity.grant_owner[   s   € à�
‰
”:×(Ñ(Õ)r   c                 óB   — | j                  t        j                  «       y)z+Revoke read access from the current entity.N)r*   r	   r,   r   s    r   Úrevoke_readz_ACLEntity.revoke_read_   ó   € à�‰”J×*Ñ*Õ+r   c                 óB   — | j                  t        j                  «       y)z,Revoke write access from the current entity.N)r*   r	   r0   r   s    r   Úrevoke_writez_ACLEntity.revoke_writec   r7   r   c                 óB   — | j                  t        j                  «       y)z,Revoke owner access from the current entity.N)r*   r	   r3   r   s    r   Úrevoke_ownerz_ACLEntity.revoke_ownerg   s   € à�‰”J×)Ñ)Õ*r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r,   r0   r3   r   r   r    r"   r'   r*   r-   r1   r4   r6   r9   r;   © r   r   r	   r	      sV   „ ñð €KØ€KØ€Jó ò
BòAòòò$ò+ò+ò*ò,ò,ó+r   r	   c                   ó>  — e Zd ZdZdZdZdddddd	d
œZ eg d¢«      Z	 dZ	dZ
dZdZd„ Zefd„Zed„ «       Zd„ Zd„ Zd„ Zd„ Zd%d„Zd„ Zd%d„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zed„ «       Z d„ Z!dee"fd „Z#ddddee$fd!„Z%ddddddee$fd"„Z&dddddee$fd#„Z'dddddee$fd$„Z(y)&ÚACLz7Container class representing a list of access controls.r   ÚpredefinedAclÚprojectPrivateÚ
publicReadÚpublicReadWriteÚauthenticatedReadÚbucketOwnerReadÚbucketOwnerFullControl)zproject-privatezpublic-readzpublic-read-writezauthenticated-readzbucket-owner-readzbucket-owner-full-control)ÚprivaterD   rE   rF   rG   rH   rI   FNc                 ó   — i | _         y r   )Úentitiesr   s    r   r   zACL.__init__“   s	   € Øˆ�r   c                 óB   — | j                   s| j                  |¬«       yy)zéLoad if not already loaded.

        :type timeout: float or tuple
        :param timeout:
            (Optional) The amount of time, in seconds, to wait
            for the server response.  See: :ref:`configuring_timeouts`
        )ÚtimeoutN)ÚloadedÚreload)r   rN   s     r   Ú_ensure_loadedzACL._ensure_loaded–   s   € ð �{Š{Ø�K‰K ˆKÕ(ð r   c                 óz   — | j                   j                  ||«      }|r|| j                  vrt        d|› �«      ‚|S )a:  Ensures predefined is in list of predefined json values

        :type predefined: str
        :param predefined: name of a predefined acl

        :type predefined: str
        :param predefined: validated JSON name of predefined acl

        :raises: :exc: `ValueError`: If predefined is not a valid acl
        zInvalid predefined ACL: )ÚPREDEFINED_XML_ACLSÚgetÚPREDEFINED_JSON_ACLSÚ
ValueError)ÚclsÚ
predefineds     r   Úvalidate_predefinedzACL.validate_predefined¡   sE   € ð ×,Ñ,×0Ñ0°¸ZÓHˆ
Ù˜*¨C×,DÑ,DÑDÜÐ7¸
°|ÐDÓEÐEØÐr   c                 óF   — | j                   j                  «        d| _        y)z@Remove all entities from the ACL, and clear the ``loaded`` flag.FN)rL   ÚclearrO   r   s    r   Úresetz	ACL.reset²   s   € à�‰×ÑÔØˆ�r   c              #   óº   K  — | j                  «        | j                  j                  «       D ]*  }|j                  «       D ]  }|sŒt	        |«      |dœ–— Œ Œ, y ­w)N)Úentityr&   )rQ   rL   Úvaluesr"   r   )r   r^   r&   s      r   Ú__iter__zACL.__iter__·   s\   è ø€ Ø×ÑÔà—m‘m×*Ñ*Ó,ò 	@ˆFØ×(Ñ(Ó*ò @�ÚÜ%(¨£[¸$Ñ?Ó?ñ@ñ	@ùs   ‚AAÁAc                 ó(  — |d   }|d   }|dk(  r| j                  «       }nB|dk(  r| j                  «       }n,d|v r(|j                  dd«      \  }}| j                  ||¬«      }t	        |t
        «      st        d|› �«      ‚|j                  |«       |S )	aÄ  Build an _ACLEntity object from a dictionary of data.

        An entity is a mutable object that represents a list of roles
        belonging to either a user or group or the special types for all
        users and all authenticated users.

        :type entity_dict: dict
        :param entity_dict: Dictionary full of data from an ACL lookup.

        :rtype: :class:`_ACLEntity`
        :returns: An Entity constructed from the dictionary.
        r^   r&   ÚallUsersÚallAuthenticatedUsersú-é   ©r   r   zInvalid dictionary: )ÚallÚall_authenticatedÚsplitr^   Ú
isinstancer	   rV   r'   )r   Úentity_dictr^   r&   r   r   s         r   Úentity_from_dictzACL.entity_from_dict¿   sž   € ð ˜XÑ&ˆØ˜6Ñ"ˆà�ZÒØ—X‘X“Z‰FàÐ.Ò.Ø×+Ñ+Ó-‰Fà�F‰]Ø&,§l¡l°3¸Ó&:Ñ#ˆK˜Ø—[‘[¨[ÀZ�[ÓPˆFä˜&¤*Ô-ÜÐ3°K°=ÐAÓBÐBà�‰�TÔØˆr   c                 óP   — | j                  «        t        |«      | j                  v S )a  Returns whether or not this ACL has any entries for an entity.

        :type entity: :class:`_ACLEntity`
        :param entity: The entity to check for existence in this ACL.

        :rtype: bool
        :returns: True of the entity exists in the ACL.
        )rQ   r   rL   ©r   r^   s     r   Ú
has_entityzACL.has_entityß   s#   € ð 	×ÑÔÜ�6‹{˜dŸm™mÐ+Ð+r   c                 ól   — | j                  «        | j                  j                  t        |«      |«      S )a¯  Gets an entity object from the ACL.

        :type entity: :class:`_ACLEntity` or string
        :param entity: The entity to get lookup in the ACL.

        :type default: anything
        :param default: This value will be returned if the entity
                        doesn't exist.

        :rtype: :class:`_ACLEntity`
        :returns: The corresponding entity or the value provided
                  to ``default``.
        )rQ   rL   rT   r   )r   r^   Údefaults      r   Ú
get_entityzACL.get_entityë   s+   € ð 	×ÑÔØ�}‰}× Ñ ¤ V£¨gÓ6Ð6r   c                 óT   — | j                  «        || j                  t        |«      <   y)zƒAdd an entity to the ACL.

        :type entity: :class:`_ACLEntity`
        :param entity: The entity to add to this ACL.
        N)rQ   rL   r   rn   s     r   Ú
add_entityzACL.add_entityü   s"   € ð 	×ÑÔØ%+ˆ�‰”c˜&“kÒ"r   c                 óŠ   — t        ||¬«      }| j                  |«      r| j                  |«      }|S | j                  |«       |S )aÇ  Factory method for creating an Entity.

        If an entity with the same type and identifier already exists,
        this will return a reference to that entity.  If not, it will
        create a new one and add it to the list of known entities for
        this ACL.

        :type entity_type: str
        :param entity_type: The type of entity to create
                            (ie, ``user``, ``group``, etc)

        :type identifier: str
        :param identifier: The ID of the entity (if applicable).
                           This can be either an ID or an e-mail address.

        :rtype: :class:`_ACLEntity`
        :returns: A new Entity or a reference to an existing identical entity.
        rf   )r	   ro   rr   rt   )r   r   r   r^   s       r   r^   z
ACL.entity  sD   € ô& ¨À
ÔKˆØ�?‰?˜6Ô"Ø—_‘_ VÓ,ˆFð ˆð �O‰O˜FÔ#Øˆr   c                 ó(   — | j                  d|¬«      S )zëFactory method for a user Entity.

        :type identifier: str
        :param identifier: An id or e-mail for this particular user.

        :rtype: :class:`_ACLEntity`
        :returns: An Entity corresponding to this user.
        Úuser©r   ©r^   ©r   r   s     r   rw   zACL.user  s   € ð �{‰{˜6¨jˆ{Ó9Ð9r   c                 ó(   — | j                  d|¬«      S )zîFactory method for a group Entity.

        :type identifier: str
        :param identifier: An id or e-mail for this particular group.

        :rtype: :class:`_ACLEntity`
        :returns: An Entity corresponding to this group.
        Úgrouprx   ry   rz   s     r   r|   z	ACL.group*  s   € ð �{‰{˜7¨zˆ{Ó:Ð:r   c                 ó(   — | j                  d|¬«      S )zÙFactory method for a domain Entity.

        :type domain: str
        :param domain: The domain for this entity.

        :rtype: :class:`_ACLEntity`
        :returns: An entity corresponding to this domain.
        Údomainrx   ry   )r   r~   s     r   r~   z
ACL.domain5  s   € ð �{‰{˜8°ˆ{Ó7Ð7r   c                 ó$   — | j                  d«      S )z–Factory method for an Entity representing all users.

        :rtype: :class:`_ACLEntity`
        :returns: An entity representing all users.
        rb   ry   r   s    r   rg   zACL.all@  s   € ð �{‰{˜:Ó&Ð&r   c                 ó$   — | j                  d«      S )z²Factory method for an Entity representing all authenticated users.

        :rtype: :class:`_ACLEntity`
        :returns: An entity representing all authenticated users.
        rc   ry   r   s    r   rh   zACL.all_authenticatedH  s   € ð �{‰{Ð2Ó3Ð3r   c                 óh   — | j                  «        t        | j                  j                  «       «      S )z�Get a list of all Entity objects.

        :rtype: list of :class:`_ACLEntity` objects
        :returns: A list of all Entity objects.
        )rQ   ÚlistrL   r_   r   s    r   Úget_entitieszACL.get_entitiesP  s(   € ð 	×ÑÔÜ�D—M‘M×(Ñ(Ó*Ó+Ð+r   c                 ó   — t         ‚)z&Abstract getter for the object client.)ÚNotImplementedErrorr   s    r   Úclientz
ACL.clientY  s
   € ô "Ð!r   c                 ó"   — |€| j                   }|S )a   Check client or verify over-ride.

        :type client: :class:`~google.cloud.storage.client.Client` or
                      ``NoneType``
        :param client: the client to use.  If not passed, falls back to the
                       ``client`` stored on the current ACL.

        :rtype: :class:`google.cloud.storage.client.Client`
        :returns: The client passed in or the currently bound client.
        )r†   )r   r†   s     r   Ú_require_clientzACL._require_client^  s   € ð ˆ>Ø—[‘[ˆFØˆr   c                 ó–  — t        d¬«      5  | j                  }| j                  |«      }i }| j                  �| j                  |d<   | j                  j                  «        |j                  ||||¬«      }d| _        |j                  dd«      D ]"  }| j                  | j                  |«      «       Œ$ 	 ddd«       y# 1 sw Y   yxY w)	aâ  Reload the ACL data from Cloud Storage.

        If :attr:`user_project` is set, bills the API request to that project.

        :type client: :class:`~google.cloud.storage.client.Client` or
                      ``NoneType``
        :param client: (Optional) The client to use.  If not passed, falls back
                       to the ``client`` stored on the ACL's parent.
        :type timeout: float or tuple
        :param timeout:
            (Optional) The amount of time, in seconds, to wait
            for the server response.  See: :ref:`configuring_timeouts`

        :type retry: :class:`~google.api_core.retry.Retry`
        :param retry:
            (Optional) How to retry the RPC. See: :ref:`configuring_retries`
        zStorage.ACL.reload©ÚnameNÚuserProject©Úquery_paramsrN   ÚretryTÚitemsr@   )r   Úreload_pathrˆ   Úuser_projectrL   r[   Ú_get_resourcerO   rT   rt   rl   )r   r†   rN   r�   ÚpathrŽ   ÚfoundÚentrys           r   rP   z
ACL.reloadm  sÉ   € ô$ Ð$8Ô9ñ 	>Ø×#Ñ#ˆDØ×)Ñ)¨&Ó1ˆFØˆLà× Ñ Ð,Ø.2×.?Ñ.?�˜]Ñ+à�M‰M×ÑÔ!à×(Ñ(ØØ)ØØð	 )ó ˆEð ˆDŒKàŸ™ 7¨BÓ/ò >�Ø—‘ × 5Ñ 5°eÓ <Õ=ñ>÷%	>÷ 	>ñ 	>ús   �B(B?Â?Cc
                 óÜ  — | j                  |«      }ddi}
|�g }||
| j                  <   | j                  �| j                  |
d<   t        |
||||¬«       | j                  }|j                  || j                  t        |«      i|
||	¬«      }| j                  j                  «        |j                  | j                  d«      D ]"  }| j                  | j                  |«      «       Œ$ d| _        y)	a¢  Helper for :meth:`save` and :meth:`save_predefined`.

        :type acl: :class:`google.cloud.storage.acl.ACL`, or a compatible list.
        :param acl: The ACL object to save.  If left blank, this will save
                    current entries.

        :type predefined: str
        :param predefined: An identifier for a predefined ACL.  Must be one of the
            keys in :attr:`PREDEFINED_JSON_ACLS` If passed, `acl` must be None.

        :type client: :class:`~google.cloud.storage.client.Client` or
                      ``NoneType``
        :param client: (Optional) The client to use.  If not passed, falls back
                       to the ``client`` stored on the ACL's parent.

        :type if_generation_match: long
        :param if_generation_match:
            (Optional) See :ref:`using-if-generation-match`

        :type if_generation_not_match: long
        :param if_generation_not_match:
            (Optional) See :ref:`using-if-generation-not-match`

        :type if_metageneration_match: long
        :param if_metageneration_match:
            (Optional) See :ref:`using-if-metageneration-match`

        :type if_metageneration_not_match: long
        :param if_metageneration_not_match:
            (Optional) See :ref:`using-if-metageneration-not-match`

        :type timeout: float or tuple
        :param timeout:
            (Optional) The amount of time, in seconds, to wait
            for the server response.  See: :ref:`configuring_timeouts`

        :type retry: google.api_core.retry.Retry or google.cloud.storage.retry.ConditionalRetryPolicy
        :param retry:
            (Optional) How to retry the RPC. See: :ref:`configuring_retries`
        Ú
projectionÚfullNrŒ   )Úif_generation_matchÚif_generation_not_matchÚif_metageneration_matchÚif_metageneration_not_matchr�   r@   T)rˆ   Ú_PREDEFINED_QUERY_PARAMr’   r   Ú	save_pathÚ_patch_resourceÚ_URL_PATH_ELEMr‚   rL   r[   rT   rt   rl   rO   )r   r   rX   r†   rš   r›   rœ   r�   rN   r�   rŽ   r”   Úresultr–   s                 r   Ú_savez	ACL._save”  sý   € ðh ×%Ñ% fÓ-ˆØ$ fÐ-ˆàÐ!ØˆCØ9CˆL˜×5Ñ5Ñ6à×ÑÐ(Ø*.×*;Ñ*;ˆL˜Ñ'ä(ØØ 3Ø$;Ø$;Ø(Cõ	
ð �~‰~ˆà×'Ñ'ØØ× Ñ ¤$ s£)Ð,Ø%ØØð (ó 
ˆð 	�‰×ÑÔà—Z‘Z × 3Ñ 3°RÓ8ò 	:ˆEØ�O‰O˜D×1Ñ1°%Ó8Õ9ð	:ð ˆ�r   c	                 ó¤   — t        d¬«      5  |€| }|j                  }	nd}	|	r| j                  |d|||||||¬«	       ddd«       y# 1 sw Y   yxY w)a!  Save this ACL for the current bucket.

        If :attr:`user_project` is set, bills the API request to that project.

        :type acl: :class:`google.cloud.storage.acl.ACL`, or a compatible list.
        :param acl: The ACL object to save.  If left blank, this will save
                    current entries.

        :type client: :class:`~google.cloud.storage.client.Client` or
                      ``NoneType``
        :param client: (Optional) The client to use.  If not passed, falls back
                       to the ``client`` stored on the ACL's parent.

        :type if_generation_match: long
        :param if_generation_match:
            (Optional) See :ref:`using-if-generation-match`

        :type if_generation_not_match: long
        :param if_generation_not_match:
            (Optional) See :ref:`using-if-generation-not-match`

        :type if_metageneration_match: long
        :param if_metageneration_match:
            (Optional) See :ref:`using-if-metageneration-match`

        :type if_metageneration_not_match: long
        :param if_metageneration_not_match:
            (Optional) See :ref:`using-if-metageneration-not-match`

        :type timeout: float or tuple
        :param timeout:
            (Optional) The amount of time, in seconds, to wait
            for the server response.  See: :ref:`configuring_timeouts`

        :type retry: google.api_core.retry.Retry or google.cloud.storage.retry.ConditionalRetryPolicy
        :param retry:
            (Optional) How to retry the RPC. See: :ref:`configuring_retries`
        zStorage.ACL.saverŠ   NT©rš   r›   rœ   r�   rN   r�   )r   rO   r£   )
r   r   r†   rš   r›   rœ   r�   rN   r�   Úsave_to_backends
             r   ÚsavezACL.saveë  sj   € ôb Ð$6Ô7ñ 	Øˆ{Ø�Ø"%§*¡*‘à"&�áØ—
‘
ØØØØ(;Ø,CØ,CØ0KØ#Øð ô 
÷	÷ 	ñ 	ús   �0AÁAc	                 óœ   — t        d¬«      5  | j                  |«      }| j                  d||||||||¬«	       ddd«       y# 1 sw Y   yxY w)að  Save this ACL for the current bucket using a predefined ACL.

        If :attr:`user_project` is set, bills the API request to that project.

        :type predefined: str
        :param predefined: An identifier for a predefined ACL.  Must be one
                           of the keys in :attr:`PREDEFINED_JSON_ACLS`
                           or :attr:`PREDEFINED_XML_ACLS` (which will be
                           aliased to the corresponding JSON name).
                           If passed, `acl` must be None.

        :type client: :class:`~google.cloud.storage.client.Client` or
                      ``NoneType``
        :param client: (Optional) The client to use.  If not passed, falls back
                       to the ``client`` stored on the ACL's parent.

        :type if_generation_match: long
        :param if_generation_match:
            (Optional) See :ref:`using-if-generation-match`

        :type if_generation_not_match: long
        :param if_generation_not_match:
            (Optional) See :ref:`using-if-generation-not-match`

        :type if_metageneration_match: long
        :param if_metageneration_match:
            (Optional) See :ref:`using-if-metageneration-match`

        :type if_metageneration_not_match: long
        :param if_metageneration_not_match:
            (Optional) See :ref:`using-if-metageneration-not-match`

        :type timeout: float or tuple
        :param timeout:
            (Optional) The amount of time, in seconds, to wait
            for the server response.  See: :ref:`configuring_timeouts`

        :type retry: google.api_core.retry.Retry or google.cloud.storage.retry.ConditionalRetryPolicy
        :param retry:
            (Optional) How to retry the RPC. See: :ref:`configuring_retries`
        zStorage.ACL.savePredefinedrŠ   Nr¥   )r   rY   r£   )	r   rX   r†   rš   r›   rœ   r�   rN   r�   s	            r   Úsave_predefinedzACL.save_predefined0  s_   € ôh Ð$@ÔAñ 	Ø×1Ñ1°*Ó=ˆJØ�J‰JØØØØ$7Ø(?Ø(?Ø,GØØð ô 
÷	÷ 	ñ 	ús   �,AÁAc                 óx   — t        d¬«      5  | j                  g |||||||¬«       ddd«       y# 1 sw Y   yxY w)áI  Remove all ACL entries.

        If :attr:`user_project` is set, bills the API request to that project.

        Note that this won't actually remove *ALL* the rules, but it
        will remove all the non-default rules.  In short, you'll still
        have access to a bucket that you created even after you clear
        ACL rules with this method.

        :type client: :class:`~google.cloud.storage.client.Client` or
                      ``NoneType``
        :param client: (Optional) The client to use.  If not passed, falls back
                       to the ``client`` stored on the ACL's parent.

        :type if_generation_match: long
        :param if_generation_match:
            (Optional) See :ref:`using-if-generation-match`

        :type if_generation_not_match: long
        :param if_generation_not_match:
            (Optional) See :ref:`using-if-generation-not-match`

        :type if_metageneration_match: long
        :param if_metageneration_match:
            (Optional) See :ref:`using-if-metageneration-match`

        :type if_metageneration_not_match: long
        :param if_metageneration_not_match:
            (Optional) See :ref:`using-if-metageneration-not-match`

        :type timeout: float or tuple
        :param timeout:
            (Optional) The amount of time, in seconds, to wait
            for the server response.  See: :ref:`configuring_timeouts`

        :type retry: google.api_core.retry.Retry or google.cloud.storage.retry.ConditionalRetryPolicy
        :param retry:
            (Optional) How to retry the RPC. See: :ref:`configuring_retries`
        zStorage.ACL.clearrŠ   ©r†   rš   r›   rœ   r�   rN   r�   N)r   r§   )r   r†   rš   r›   rœ   r�   rN   r�   s           r   r[   z	ACL.clearr  sL   € ôb Ð$7Ô8ñ 
	Ø�I‰IØØØ$7Ø(?Ø(?Ø,GØØð ô 	÷
	÷ 
	ñ 
	ús   �0°9r   ))r<   r=   r>   r?   r¡   rž   rS   Ú	frozensetrU   rO   r‘   rŸ   r’   r   r   rQ   ÚclassmethodrY   r\   r`   rl   ro   rr   rt   r^   rw   r|   r~   rg   rh   rƒ   Úpropertyr†   rˆ   r   rP   r   r£   r§   r©   r[   r@   r   r   rB   rB   l   s`  „ ÙAà€NØ-Ðð ,Ø#Ø.Ø1Ø.Ø%=ñÐñ %ò	
ó
Ððð €Fð €KØ€IØ€Lòð &6ó 	)ð ñó ðò ò
@òò@
,ó7ò",óò4	:ò	;ò	8ò'ò4ò,ð ñ"ó ð"òð !Ð*:À-ó %>ðX !Ø $Ø $Ø$(Ø Ø7óUðr ØØ Ø $Ø $Ø$(Ø Ø7óCðP Ø Ø $Ø $Ø$(Ø Ø7ó@ðH Ø Ø $Ø $Ø$(Ø Ø7ô;r   rB   c                   ób   ‡ — e Zd ZdZˆ fd„Zed„ «       Zed„ «       Zed„ «       Zed„ «       Z	ˆ xZ
S )Ú	BucketACLzžAn ACL specifically for a bucket.

    :type bucket: :class:`google.cloud.storage.bucket.Bucket`
    :param bucket: The bucket to which this ACL relates.
    c                 ó8   •— t         t        | �  «        || _        y r   )Úsuperr±   r   Úbucket)r   r´   Ú	__class__s     €r   r   zBucketACL.__init__·  s   ø€ ÜŒi˜Ñ'Ô)Øˆ�r   c                 ó.   — | j                   j                  S )z&The client bound to this ACL's bucket.)r´   r†   r   s    r   r†   zBucketACL.client»  s   € ð �{‰{×!Ñ!Ð!r   c                 óL   — | j                   j                  › d| j                  › �S )ú3Compute the path for GET API requests for this ACL.ú/)r´   r”   r¡   r   s    r   r‘   zBucketACL.reload_pathÀ  s'   € ð —+‘+×"Ñ"Ð# 1 T×%8Ñ%8Ð$9Ð:Ð:r   c                 ó.   — | j                   j                  S ©z5Compute the path for PATCH API requests for this ACL.)r´   r”   r   s    r   rŸ   zBucketACL.save_pathÅ  s   € ð �{‰{×ÑÐr   c                 ó.   — | j                   j                  S ©z?Compute the user project charged for API requests for this ACL.)r´   r’   r   s    r   r’   zBucketACL.user_projectÊ  s   € ð �{‰{×'Ñ'Ð'r   )r<   r=   r>   r?   r   r¯   r†   r‘   rŸ   r’   Ú__classcell__©rµ   s   @r   r±   r±   °  s]   ø„ ñôð ñ"ó ð"ð ñ;ó ð;ð ñ ó ð ð ñ(ó ô(r   r±   c                   ó   — e Zd ZdZdZdZy)ÚDefaultObjectACLz9A class representing the default object ACL for a bucket.ÚdefaultObjectAclÚpredefinedDefaultObjectAclN)r<   r=   r>   r?   r¡   rž   r@   r   r   rÁ   rÁ   Ð  s   „ ÙCà'€NØ:Ñr   rÁ   c                   ó²   ‡ — e Zd ZdZˆ fd„Zed„ «       Zed„ «       Zed„ «       Zed„ «       Z	dddddde
efˆ fd„	Zddddde
efˆ fd	„	Zddddde
efˆ fd
„	Zˆ xZS )Ú	ObjectACLz¬An ACL specifically for a Cloud Storage object / blob.

    :type blob: :class:`google.cloud.storage.blob.Blob`
    :param blob: The blob that this ACL corresponds to.
    c                 ó8   •— t         t        | �  «        || _        y r   )r³   rÅ   r   Úblob)r   rÇ   rµ   s     €r   r   zObjectACL.__init__Þ  s   ø€ ÜŒi˜Ñ'Ô)Øˆ�	r   c                 ó.   — | j                   j                  S )z$The client bound to this ACL's blob.)rÇ   r†   r   s    r   r†   zObjectACL.clientâ  s   € ð �y‰y×ÑÐr   c                 ó4   — | j                   j                  › d�S )r¸   z/acl©rÇ   r”   r   s    r   r‘   zObjectACL.reload_pathç  s   € ð —)‘)—.‘.Ð! Ð&Ð&r   c                 ó.   — | j                   j                  S r»   rÊ   r   s    r   rŸ   zObjectACL.save_pathì  s   € ð �y‰y�~‰~Ðr   c                 ó.   — | j                   j                  S r½   )rÇ   r’   r   s    r   r’   zObjectACL.user_projectñ  s   € ð �y‰y×%Ñ%Ð%r   Nc	           
      ó4   •— t         ‰	| �  ||||||||¬«       y)a!  Save this ACL for the current object.

        If :attr:`user_project` is set, bills the API request to that project.

        :type acl: :class:`google.cloud.storage.acl.ACL`, or a compatible list.
        :param acl: The ACL object to save.  If left blank, this will save
                    current entries.

        :type client: :class:`~google.cloud.storage.client.Client` or
                      ``NoneType``
        :param client: (Optional) The client to use.  If not passed, falls back
                       to the ``client`` stored on the ACL's parent.

        :type if_generation_match: long
        :param if_generation_match:
            (Optional) See :ref:`using-if-generation-match`

        :type if_generation_not_match: long
        :param if_generation_not_match:
            (Optional) See :ref:`using-if-generation-not-match`

        :type if_metageneration_match: long
        :param if_metageneration_match:
            (Optional) See :ref:`using-if-metageneration-match`

        :type if_metageneration_not_match: long
        :param if_metageneration_not_match:
            (Optional) See :ref:`using-if-metageneration-not-match`

        :type timeout: float or tuple
        :param timeout:
            (Optional) The amount of time, in seconds, to wait
            for the server response.  See: :ref:`configuring_timeouts`

        :type retry: google.api_core.retry.Retry or google.cloud.storage.retry.ConditionalRetryPolicy
        :param retry:
            (Optional) How to retry the RPC. See: :ref:`configuring_retries`
        )r   r†   rš   r›   rœ   r�   rN   r�   N)r³   r§   )
r   r   r†   rš   r›   rœ   r�   rN   r�   rµ   s
            €r   r§   zObjectACL.saveö  s/   ø€ ôb 	‰‰ØØØ 3Ø$;Ø$;Ø(CØØð 	õ 		
r   c	           
      ó4   •— t         ‰	| �  ||||||||¬«       y)að  Save this ACL for the current object using a predefined ACL.

        If :attr:`user_project` is set, bills the API request to that project.

        :type predefined: str
        :param predefined: An identifier for a predefined ACL.  Must be one
                           of the keys in :attr:`PREDEFINED_JSON_ACLS`
                           or :attr:`PREDEFINED_XML_ACLS` (which will be
                           aliased to the corresponding JSON name).
                           If passed, `acl` must be None.

        :type client: :class:`~google.cloud.storage.client.Client` or
                      ``NoneType``
        :param client: (Optional) The client to use.  If not passed, falls back
                       to the ``client`` stored on the ACL's parent.

        :type if_generation_match: long
        :param if_generation_match:
            (Optional) See :ref:`using-if-generation-match`

        :type if_generation_not_match: long
        :param if_generation_not_match:
            (Optional) See :ref:`using-if-generation-not-match`

        :type if_metageneration_match: long
        :param if_metageneration_match:
            (Optional) See :ref:`using-if-metageneration-match`

        :type if_metageneration_not_match: long
        :param if_metageneration_not_match:
            (Optional) See :ref:`using-if-metageneration-not-match`

        :type timeout: float or tuple
        :param timeout:
            (Optional) The amount of time, in seconds, to wait
            for the server response.  See: :ref:`configuring_timeouts`

        :type retry: google.api_core.retry.Retry or google.cloud.storage.retry.ConditionalRetryPolicy
        :param retry:
            (Optional) How to retry the RPC. See: :ref:`configuring_retries`
        )rX   r†   rš   r›   rœ   r�   rN   r�   N)r³   r©   )
r   rX   r†   rš   r›   rœ   r�   rN   r�   rµ   s
            €r   r©   zObjectACL.save_predefined2  s0   ø€ ôh 	‰ÑØ!ØØ 3Ø$;Ø$;Ø(CØØð 	 õ 		
r   c           	      ó2   •— t         ‰| �  |||||||¬«       y)r«   r¬   N)r³   r[   )	r   r†   rš   r›   rœ   r�   rN   r�   rµ   s	           €r   r[   zObjectACL.clearq  s,   ø€ ôb 	‰‰ØØ 3Ø$;Ø$;Ø(CØØð 	õ 	
r   )r<   r=   r>   r?   r   r¯   r†   r‘   rŸ   r’   r   r   r§   r©   r[   r¾   r¿   s   @r   rÅ   rÅ   ×  s»   ø„ ñôð ñ ó ð ð ñ'ó ð'ð ñó ðð ñ&ó ð&ð ØØ Ø $Ø $Ø$(Ø Øõ:
ð~ Ø Ø $Ø $Ø$(Ø Øõ=
ðB Ø Ø $Ø $Ø$(Ø Ø÷9
ñ 9
r   rÅ   N)r?   Úgoogle.cloud.storage._helpersr   Ú+google.cloud.storage._opentelemetry_tracingr   Úgoogle.cloud.storage.constantsr   Úgoogle.cloud.storage.retryr   r   Úobjectr	   rB   r±   rÁ   rÅ   r@   r   r   ú<module>rÕ      s]   ðñ ,å JÝ IÝ ;÷ôO+�ô O+ôdA	ˆ&ô A	ôH(�ô (ô@;�yô ;ôS
�õ S
r   