Ë
    æš¾j  ã                  ó~  — d Z ddlmZ ddlZddlmZmZmZ 	 ddlZ	ddl
Z	ddlZ	ddlZddlZddlmZ er
ddlZddlmZ  ej*                  e«      ZdZ	 d	Z	 d
diZ G d„ de«      Zdd„Zdd„Zeddddf	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Z	 	 	 d	 	 	 	 	 	 	 	 	 	 	 dd„Z	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Z y# e$ r dZY Œ—w xY w)zAImplements file-like objects for reading and writing to/from GCS.é    )ÚannotationsN)ÚTYPE_CHECKINGÚAnyÚ	TypedDictT)Ú	constants)ÚTransportParams)ÚgcsÚgsi   Úignore_flushc                  ó,   — e Zd ZU ded<   ded<   ded<   y)Ú_GCSUriÚstrÚschemeÚ	bucket_idÚblob_idN)Ú__name__Ú
__module__Ú__qualname__Ú__annotations__© ó    úX/home/spazio/kingdom_calls/work5/transenv/lib/python3.12/site-packages/smart_open/gcs.pyr   r   )   s   … ØƒKØƒNØ„Lr   r   c                óÖ   — t         j                  j                  | «      }|j                  t        v sJ ‚|j
                  }|j                  j                  d«      }|j                  ||dœS )zHParse a ``gcs://`` or ``gs://`` URI into its bucket and blob components.ú/)r   r   r   )Ú
smart_openÚutilsÚsafe_urlsplitr   ÚSCHEMESÚnetlocÚpathÚlstrip)Úuri_as_stringÚsrr   r   s       r   Ú	parse_urir$   /   sV   € ä	×	Ñ	×	'Ñ	'¨Ó	6€BØ�9‰9œÑÐÐØ—	‘	€IØ�g‰g�n‰n˜SÓ!€GØ—i‘i¨iÀGÑLÐLr   c                óˆ   — t        | «      }t        j                  j                  t        |«      }t	        |d   |d   |fi |¤ŽS )z9Open a GCS URI using the given mode and transport params.r   r   )r$   r   r   Úcheck_kwargsÚopen)ÚuriÚmodeÚtransport_paramsÚ
parsed_uriÚkwargss        r   Úopen_urir-   8   sB   € ä˜3“€JÜ×Ñ×*Ñ*¬4Ð1AÓB€FÜ�
˜;Ñ'¨°IÑ)>ÀÑOÈÑOÐOr   c                óÊ   — |€i }|t         j                  ddfv rt        | ||||¬«      }|S |t         j                  ddfv rt	        | |||||¬«      }|S d|› d�}	t        |	«      ‚)	a¸  Open an GCS blob for reading or writing.

    Args:
        bucket_id: The name of the bucket this object resides in.
        blob_id: The name of the blob within the bucket.
        mode: The mode for opening the object. Must be either "rb" or "wb".
        min_part_size: The minimum part size for multipart uploads. For writing only.
        client: The GCS client to use when working with google-cloud-storage.
        get_blob_kwargs: Additional keyword arguments to propagate to the bucket.get_blob
            method of the google-cloud-storage library. For reading only.
        blob_properties: Set properties on blob before writing. For writing only.
        blob_open_kwargs: Additional keyword arguments to propagate to the blob.open method
            of the google-cloud-storage library.

    Returns:
        A file-like object for the GCS blob.

    Raises:
        NotImplementedError: If `mode` is not one of the supported modes.
    ÚrÚrt)ÚbucketÚkeyÚclientÚget_blob_kwargsÚblob_open_kwargsÚwÚwt)r1   ÚblobÚmin_part_sizer3   Úblob_propertiesr5   zGCS support for mode z not implemented)r   ÚREAD_BINARYÚReaderÚWRITE_BINARYÚWriterÚNotImplementedError)
r   r   r)   r9   r3   r4   r:   r5   Ú_blobÚmsgs
             r   r'   r'   ?   s›   € ð< ÐØÐà”	×%Ñ% s¨DÐ1Ñ1ÜØØØØ+Ø-ô
ˆð, €Lð 
”)×(Ñ(¨#¨tÐ4Ñ	4ÜØØØ'ØØ+Ø-ô
ˆð €Lð & d VÐ+;Ð<ˆÜ! #Ó&Ð&r   c                ó8  — |€i }|€i }|€(t         j                  j                  j                  «       }|j	                  | «      } |j
                  |fi |¤Ž}|€1d|› d| › �}t         j                  j                  j                  |«      ‚ |j                  di |¤ŽS )zGReturn a file-like object for reading the GCS blob `key` from `bucket`.zblob z not found in )Úrb)	ÚgoogleÚcloudÚstorageÚClientr1   Úget_blobÚ
exceptionsÚNotFoundr'   )r1   r2   r3   r4   r5   Úbktr8   rA   s           r   r<   r<   z   s¢   € ð ÐØˆØÐØÐØ€~Ü—‘×%Ñ%×,Ñ,Ó.ˆà
�-‰-˜Ó
€CØˆ3�<‰<˜Ñ/˜Ñ/€Dà€|Ø�c�U˜.¨¨Ð1ˆÜ�l‰l×%Ñ%×.Ñ.¨sÓ3Ð3àˆ4�9‰9Ñ.Ð-Ñ.Ð.r   c                ó,  — |€i }|€i }|€(t         j                  j                  j                  «       }i t        ¥|¥}|j                  | «      j                  ||¬«      }|j                  «       D ]  \  }}t        |||«       Œ  |j                  di |¤ŽS )zEReturn a file-like object for writing to GCS blob `blob` in `bucket`.)Ú
chunk_size)Úwb)
rD   rE   rF   rG   Ú_DEFAULT_WRITE_OPEN_KWARGSr1   r8   ÚitemsÚsetattrr'   )	r1   r8   r9   r3   r:   r5   Úg_blobÚkÚvs	            r   r>   r>   “   s¯   € ð ÐØÐØÐØˆØ€~Ü—‘×%Ñ%×,Ñ,Ó.ˆàIÔ4ÐIÐ8HÐIÐà�]‰]˜6Ó"×'Ñ'ØØ ð (ó €Fð
  ×%Ñ%Ó'ò ‰ˆˆ1Ü�˜˜1Õðð ˆ6�;‰;Ñ0Ð/Ñ0Ð0r   )r"   r   Úreturnr   )r(   r   r)   r   r*   r   rU   ú	io.IOBase)r   r   r   r   r)   r   r9   Úintr3   ú"google.cloud.storage.Client | Noner4   údict[str, Any] | Noner:   rY   r5   rY   rU   rV   )NNN)r1   r   r2   r   r3   rX   r4   rY   r5   rY   rU   rV   )NNNN)r1   r   r8   r   r9   z
int | Noner3   rX   r:   rY   r5   rY   rU   rV   )!Ú__doc__Ú
__future__r   ÚloggingÚtypingr   r   r   Úgoogle.auth.transport.requestsrD   Úgoogle.cloud.exceptionsÚgoogle.cloud.storageÚImportErrorÚMISSING_DEPSÚsmart_open.bytebufferr   Úsmart_open.utilsr   ÚioÚsmart_open._typingr   Ú	getLoggerr   Úloggerr   Ú_DEFAULT_MIN_PART_SIZErO   r   r$   r-   r'   r<   r>   r   r   r   ú<module>rj      s   ðñ Hå "ã ß 0Ñ 0ðÛ)Û"Ûó Û Ý  áÛå2à	ˆ×	Ñ	˜8Ó	$€à
€Ø gà%Ð Ø 9à,¨dÐ3Ð ôˆiô óMóPð 0Ø15Ø-1Ø-1Ø.2ð8Øð8àð8ð ð8ð ð	8ð
 /ð8ð +ð8ð +ð8ð ,ð8ð ó8ð| 26Ø-1Ø.2ð/Øð/à	ð/ð /ð/ð +ð	/ð
 ,ð/ð ó/ð8 !%Ø15Ø-1Ø.2ð1Øð1à
ð1ð ð1ð /ð	1ð
 +ð1ð ,ð1ð ô1øðC ò Ø‚Lðús   ˜B2 Â2B<Â;B<