
    \j                         d Z ddlZddl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j                  e      ZdZ	 dZ	 ddiZd Zd	 Zd
 ZdeddddfdZ	 	 	 	 	 ddZ	 	 	 	 ddZy# e$ r dZY Xw xY w)zAImplements file-like objects for reading and writing to/from GCS.    NT)	constantsgsi   ignore_flushc                     t         j                  j                  |       }|j                  t        k(  sJ |j
                  }|j                  j                  d      }t        t        ||      S )N/)scheme	bucket_idblob_id)	
smart_openutilssafe_urlsplitr   SCHEMEnetlocpathlstripdict)uri_as_stringsrr	   r
   s       8/root/env/lib/python3.12/site-packages/smart_open/gcs.py	parse_urir   $   sT    				'	'	6B99		IggnnS!GvGDD    c                     t        |       }t        j                  j                  t        |      }t	        |d   |d   |fi |S )Nr	   r
   )r   r   r   check_kwargsopen)urimodetransport_params
parsed_urikwargss        r   open_urir    ,   sB    3J**41ABF
;'I)>OOOr   c                 D    d|  d}t        j                  |t               y )Nz
Parameter z7 is deprecated, this parameter no-longer has any effect)warningswarnUserWarning)parameter_namemessages     r   warn_deprecatedr'   2   s     >**abGMM';'r   c	                     |i }|t        d       |t        j                  ddfv rt        | ||||      }	|	S |t        j                  ddfv rt        | |||||      }	|	S t        d| d	      )
a  Open an GCS blob for reading or writing.

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

    buffer_sizerrt)bucketkeyclientget_blob_kwargsblob_open_kwargswwt)r,   blobmin_part_sizer.   blob_propertiesr0   zGCS support for mode z not implemented)r'   r   READ_BINARYReaderWRITE_BINARYWriterNotImplementedError)
r	   r
   r   r)   r4   r.   r/   r5   r0   _blobs
             r   r   r   7   s    J &	%%sD11i"$'6(8	:" L 
)((#t4	4i#%2$'6(8: L "$9$?O"PQQr   c                 h   |i }|i }|(t         j                  j                  j                         }|t	        d       |t	        d       |j                  |       } |j                  |fi |}|/t         j                  j                  j                  d| d|         |j                  di |S )Nr)   line_terminatorzblob z not found in )rb)
googlecloudstorageClientr'   r,   get_blob
exceptionsNotFoundr   )	r,   r-   r)   r=   r.   r/   r0   bktr3   s	            r   r7   r7   w   s     ~%%,,.&")*
--
C3<<//D|ll%%..se>&/RSS499.-..r   c                 @   |i }|i }|(t         j                  j                  j                         }i t        |}|j                  |       j                  ||      }|j                         D ]  \  }}t        |||         |j                  di |}	d |	_
        |	S )N)
chunk_sizec                       y )N rJ   r   r   <lambda>zWriter.<locals>.<lambda>   s    r   )wb)r?   r@   rA   rB   _DEFAULT_WRITE_OPEN_KWARGSr,   r3   itemssetattrr   	terminate)
r,   r3   r4   r.   r5   r0   g_blobkvr;   s
             r   r9   r9      s     ~%%,,.I4I8HI]]6"''  ( F
  %%' 11 FKK1 01E #EOLr   )NNNNN)NNNN)__doc__loggingr"   google.cloud.exceptionsr?   google.cloud.storagegoogle.auth.transport.requestsImportErrorMISSING_DEPSsmart_open.bytebufferr   smart_open.utilsr   	getLogger__name__loggerr   _DEFAULT_MIN_PART_SIZErM   r   r    r'   r   r7   r9   rJ   r   r   <module>ra      s    H  ")    			8	$	 %  9,d3 EP( (=D  /<  E  Ls   A' 'A10A1