U
    be	                     @   s   d Z ddlZddlZzddlZddlZddlZW n ek
rH   dZY nX ddl	Z
ddlZ
ddl
mZ eeZdZdZddiZdd	 Zd
d Zdd ZdedddfddZdddZdddZdS )zAImplements file-like objects for reading and writing to/from GCS.    NT)	constantsgsi   Zignore_flushc                 C   s:   t j| }|jtkst|j}|jd}t	t||dS )N/)scheme	bucket_idblob_id)

smart_openutilsZsafe_urlsplitr   SCHEMEAssertionErrornetlocpathlstripdict)Zuri_as_stringsrr   r    r   P/var/www/html/services/stratfitenv/lib/python3.8/site-packages/smart_open/gcs.py	parse_uri$   s
    r   c                 C   s.   t | }tjt|}t|d |d |f|S )Nr   r   )r   r   r	   Zcheck_kwargsopen)urimodeZtransport_paramsZ
parsed_urikwargsr   r   r   open_uri,   s    r   c                 C   s   d|  d}t |t d S )Nz
Parameter z7 is deprecated, this parameter no-longer has any effect)warningswarnUserWarning)Zparameter_namemessager   r   r   warn_deprecated2   s    r   c           	      C   sx   |dkri }|dk	rt d |tjddfkr>t| |||d}n6|tjddfkrdt| |||||d}ntd	| d
|S )a1  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.
    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.

    Nbuffer_sizerrt)bucketkeyclientblob_open_kwargswwt)r!   blobmin_part_sizer#   blob_propertiesr$   zGCS support for mode z not implemented)r   r   ZREAD_BINARYReaderZWRITE_BINARYWriterNotImplementedError)	r   r   r   r   r(   r#   r)   r$   _blobr   r   r   r   7   s(    !r   c                 C   s   |d kri }|d kr t jj }|d k	r0td |d k	r@td || }||}|d krvt jjd| d|  |j	d|S )Nr   line_terminatorzblob z not found in rb)r/   )
googlecloudstorageClientr   r!   Zget_blob
exceptionsNotFoundr   )r!   r"   r   r.   r#   r$   Zbktr'   r   r   r   r*   r   s    

r*   c                 C   s   |d kri }|d kri }|d kr,t jj }t|}|| }| s\t jjd|  d|j	||d}|
 D ]\}}	t|||	 qr|jd|}
dd |
_|
S )Nzbucket z
 not found)
chunk_sizewbc                   S   s   d S )Nr   r   r   r   r   <lambda>       zWriter.<locals>.<lambda>)r7   )r0   r1   r2   r3   _DEFAULT_WRITE_OPEN_KWARGSr!   existsr4   r5   r'   itemssetattrr   	terminate)r!   r'   r(   r#   r)   r$   Zg_bucketZg_blobkvr-   r   r   r   r+      s&    

r+   )NNNN)NNNN)__doc__loggingr   Zgoogle.cloud.exceptionsr0   Zgoogle.cloud.storageZgoogle.auth.transport.requestsImportErrorZMISSING_DEPSZsmart_open.bytebufferr   Zsmart_open.utilsr   	getLogger__name__loggerr
   Z_DEFAULT_MIN_PART_SIZEr:   r   r   r   r   r*   r+   r   r   r   r   <module>   sD   

	
=    
    