
    rh                        d dl mZ d dlZd dlZd dlZd dlmZ d dlZd dlm	Z	 d dl
mZ d dlmZ d dlmZ d dlmZ g d	Z ej&                  d
d       ddddd	 	 	 	 	 	 	 	 	 	 	 ddZdddZddZddZy)    )annotationsN)Iterable)protos)islice)IOBase)
file_types)get_default_file_client)upload_fileget_file
list_filesdelete_filez
image/webpz.webpT)	mime_typenamedisplay_name	resumablec               v   t               }t        | t              r|ht        d      t	        j
                  t        j                  |             } || j                  }|t        j                  |       \  }}|t        d      |	d|vrd| }|j                  | ||||      }t        j                  |      S )a8  Calls the API to upload a file using a supported file service.

    Args:
        path: The path to the file or a file-like object (e.g., BytesIO) to be uploaded.
        mime_type: The MIME type of the file. If not provided, it will be
            inferred from the file extension.
        name: The name of the file in the destination (e.g., 'files/sample-image').
            If not provided, a system generated ID will be created.
        display_name: Optional display name of the file.
        resumable: Whether to use the resumable upload protocol. By default, this is enabled.
            See details at
            https://googleapis.github.io/google-api-python-client/docs/epy/googleapiclient.http.MediaFileUpload-class.html#resumable

    Returns:
        file_types.File: The response of the uploaded file.
    zUnknown mime type: When passing a file like object to `path` (instead of a
    path-like object) you must set the `mime_type` argumentziUnknown mime type: Could not determine the mimetype for your file
    please set the `mime_type` argument/files/)pathr   r   r   r   )r	   
isinstancer   
ValueErrorpathlibPathosfspathr   	mimetypes
guess_typecreate_filer   File)r   r   r   r   r   client_responses           l/var/www/html/ai-insurance-compliance-backend/venv/lib/python3.12/site-packages/google/generativeai/files.pyr
   r
   #   s    0 %&F$N 
 ||BIIdO,99L$//5LIq: 
 CtOv!!YTXa " H ??8$$    c              #     K   t               }|j                  t        j                  |             }|D ]  }t	        j
                  |        yw)z;Calls the API to list files using a supported file service.)	page_sizeN)r	   r   r   ListFilesRequestr   r   )r&   r    r"   protos       r#   r   r   [   sG     $&F  !8!89!MNH %ooe$$%s   AAc                r    d| vrd|  } t               }t        j                  |j                  |             S )zJCalls the API to retrieve a specified file using a supported file service.r   r   r   )r	   r   r   r   )r   r    s     r#   r   r   d   s6    
$v$&F??6???566r$   c                    t        | t        j                  t        j                  f      r| j                  } n	d| vrd|  } t        j
                  |       }t               }|j                  |       y)zTCalls the API to permanently delete a specified file using a supported file service.r   r   r*   )requestN)r   r   r   r   r   DeleteFileRequestr	   r   )r   r,   r    s      r#   r   r   l   s]    $&++67yy	Dv&&D1G$&F
w'r$   )r   z)str | pathlib.Path | os.PathLike | IOBaser   
str | Noner   r.   r   r.   r   boolreturnfile_types.File)d   )r0   zIterable[file_types.File])r   strr0   r1   )r   z#str | file_types.File | protos.File)
__future__r   r   r   r   typingr   logginggoogle.generativeair   	itertoolsr   ior   google.generativeai.typesr   google.generativeai.clientr	   __all__add_typer
   r   r   r    r$   r#   <module>r?      s    # 	     &   0 >
B 	  < ) !#5%
35% 5% 	5%
 5% 5% 5%p%7(r$   