
    ; i:                    z   d dl 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Zd dlm	Z	m
Z
 d dlmZ d dlZd dlmZ d dlmc mZ d dlmc m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! d dlm"Z" d dl#Z$d dl%Z$	 d dl&m'Z' e'j(        Z(n# e)$ r dZ(Y nw xY wdZ*dZ+ej,        d             Z- G d dej.                  Z. G d dej/                  Z/ej0         G d d                      Z1dddddddd<d$Z2 e1            Z3e32                                 d=d'Z4d>d)Z5d?d+Z6d@d-Z7dAd/Z8dBd1Z9dCd3Z:dDd5Z;dEd7Z<dFd9Z=dGd;Z>dS )H    )annotationsN)Anycast)Sequence)IOBase)credentials)
exceptions)auth)client_options)gapic_v1)operations_v1)versionz0.0.0zgenai-pyz9https://generativelanguage.googleapis.com/$discovery/restc               #     K   t           j        j        } dt          j        v rd t           j        _        	 d V  | t           j        _        d S # | t           j        _        w xY w)NCOLAB_RELEASE_TAGc                     dS )N)NN )argskwargss     r/var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/google/generativeai/client.py<lambda>z-patch_colab_gce_credentials.<locals>.<lambda>9   s    \     )r
   _default_get_gce_credentialsosenviron)get_gces    r   patch_colab_gce_credentialsr   5   s^      m0Gbj((-Q-Q*5-4***W*4444s   A Ac                  >     e Zd Z fdZdddZddddddddZ xZS )FileServiceClientc                x    d | _         t          j                    | _         t	                      j        |i | d S N)_discovery_api	threadinglocal_localsuper__init__)selfr   r   	__class__s      r   r'   zFileServiceClient.__init__B   s<    "o''$)&)))))r   r   metadata dict | Sequence[tuple[str, str]]c                   | j         j        }|t          d          t          j                            t          j                    d t           d| t          |                    }|
                                \  }}|j                                         |                    d          }t          j                            ||          | j        _        d S )NzaInvalid operation: Uploading to the File API requires an API key. Please provide a valid API key.c                
    | |fS r!   r   )respcontents     r   r   z8FileServiceClient._setup_discovery_api.<locals>.<lambda>P   s
    D'? r   z?version=v1beta&key=)httppostprocuriheaderszutf-8)developerKey)_client_optionsapi_key
ValueErrorgoogleapiclientr0   HttpRequesthttplib2HttpGENAI_API_DISCOVERY_URLdictexecuteclosedecode	discoverybuild_from_documentr%   discovery_api)r(   r*   r6   requestresponser/   discovery_docs          r   _setup_discovery_apiz&FileServiceClient._setup_discovery_apiG   s    &.?s   "&22::*IIIINN	 3 
 
 $OO--'w//$3$=$Q$Q %R %
 %
!!!r   NT)	mime_typenamedisplay_name	resumabler*   path)str | pathlib.Path | os.PathLike | IOBaserH   
str | NonerI   rJ   rK   boolSequence[tuple[str, str]]returnprotos.Filec               
   | j         |                     |           i }|||d<   |||d<   t          |t                    r#t          j                            |||          }n"t          j                            |||          }| j        j	        
                                                    d|i|          }	|D ]\  }
}||	j        |
<   |	                                }|                     d|d         d         i          S )NrI   displayName)fdmimetyperK   )filenamerV   rK   file)body
media_body)r"   rG   
isinstancer   r8   r0   MediaIoBaseUploadMediaFileUploadr%   rC   mediauploadr3   r>   get_file)r(   rL   rH   rI   rJ   rK   r*   rX   r^   rD   keyvalueresults                r   create_filezFileServiceClient.create_file\   s$    &%%h///DL#".DdF## 	#(::)y ;  EE $(88	Y 9  E ++1133::[`:aa" 	) 	)JC#(GOC  ""}}ffVnV&<=>>>r   )r   )r*   r+   )rL   rM   rH   rN   rI   rN   rJ   rN   rK   rO   r*   rP   rQ   rR   )__name__
__module____qualname__r'   rG   rd   __classcell__)r)   s   @r   r   r   A   s        * * * * *

 
 
 
 
2 !%#'.0!? !? !? !? !? !? !? !? !? !?r   r   c                      e Zd Zd ZdS )FileServiceAsyncClientc                $   K   t          d          )NzPThe `create_file` method is currently not supported for the asynchronous client.)NotImplementedError)r(   r   r   s      r   rd   z"FileServiceAsyncClient.create_file   s      !^
 
 	
r   N)re   rf   rg   rd   r   r   r   rj   rj      s#        
 
 
 
 
r   rj   c                      e Zd ZU  ej        e          Zded<   dZded<    ej        e          Z	ded<   ddddddd	ddZ
d Zd ZddZdS )_ClientManager)default_factoryzdict[str, Any]client_configr   rP   default_metadataclientsNr6   r   	transportr   client_inforq   r6   rN   r   (ga_credentials.Credentials | dict | Nonert   r   8client_options_lib.ClientOptions | dict[str, Any] | Noneru   &gapic_v1.client_info.ClientInfo | NonerQ   Nonec                  t          |t                    rt          j        |          }|t          j                    }t          t          j        |          }t          |dd          }|r|t          d          n3|st          j	        d          }|st          j	        d          }||_
        t           dt           }|r#|j        r|xj        d| z  c_        n(||_        n t          j                            |          }||||d	}	d
 |	                                D             }	|	| _        || _        i | _        dS )a  Initializes default client configurations using specified parameters or environment variables.

        If no API key has been provided (either directly, or on `client_options`) and the
        `GEMINI_API_KEY` environment variable is set, it will be used as the API key. If not,
        if the `GOOGLE_API_KEY` environement variable is set, it will be used as the API key.

        Note: Not all arguments are detailed below. Refer to the `*ServiceClient` classes in
        `google.ai.generativelanguage` for details on the other arguments.

        Args:
            transport: A string, one of: [`rest`, `grpc`, `grpc_asyncio`].
            api_key: The API-Key to use when creating the default clients (each service uses
                a separate client). This is a shortcut for `client_options={"api_key": api_key}`.
                If omitted, and the `GEMINI_API_KEY` or the `GOOGLE_API_KEY` environment variable
                are set, they will be used in this order of priority.
            default_metadata: Default (key, value) metadata pairs to send with every request.
                when using `transport="rest"` these are sent as HTTP headers.
        Nr6   z`Invalid configuration: Please set either `api_key` or `client_options['api_key']`, but not both.GEMINI_API_KEYGOOGLE_API_KEY/ )
user_agent)r   rt   r   ru   c                    i | ]
\  }}|||S r!   r   ).0ra   rb   s      r   
<dictcomp>z,_ClientManager.configure.<locals>.<dictcomp>   s#    aaa
UuO`eO`O`O`r   )r[   r=   client_options_lib	from_dictClientOptionsr   getattrr7   r   getenvr6   
USER_AGENT__version__r   r   ru   
ClientInfoitemsrp   rq   rr   )
r(   r6   r   rt   r   ru   rq   had_api_key_valuer   rp   s
             r   	configurez_ClientManager.configure   s   D nd++ 	J/9.IIN!/=??N0>OO#NItDD 	-" v   #
  6 )$455 6 )$455%,N""22[22
 	Q% 4&&*:j*:*::&&&)3&&".99Z9PPK '",&	
 
 bam6I6I6K6Kaaa* 0r   c                    |dk    rt           }n|dk    rt          }n|                    d          rF|                    d          d         }t	          t
          |                                dz             }n*t	          t
          |                                dz             } j        st                       	 t                      5   |di  j        }d d d            n# 1 swxY w Y   n # t          j        $ r}d|_        |d }~ww xY w j        s|S d	 } fd
}t          j        |          D ]>\  }} |||          st	          ||          } ||          }t!          |||           ?|S )NrX   
file_async_async_r   ServiceAsyncClientServiceClient)a  
  No API_KEY or ADC found. Please either:
    - Set the `GOOGLE_API_KEY` environment variable.
    - Manually pass the key with `genai.configure(api_key=my_api_key)`.
    - Or set up Application Default Credentials, see https://ai.google.dev/gemini-api/docs/oauth for more information.c                    |                      d          rdS t          |          sdS dt          j        |          j                                        vrdS dS )Nr   Fr*   T)
startswithcallableinspect	signature
parameterskeys)rI   fs     r   keepz(_ClientManager.make_client.<locals>.keep   s]    s## uA;; u!21!5!5!@!E!E!G!GGGu4r   c                     dd fd
}|S )Nr   )r*   c                d    t          |           t          j                  z   }  |i |d| iS )Nr*   )listrq   )r*   r   r   r   r(   s      r   callzN_ClientManager.make_client.<locals>.add_default_metadata_wrapper.<locals>.call  s>    >>D1F,G,GGq$<&<<8<<<<r   r   )r   r   r(   s   ` r   add_default_metadata_wrapperz@_ClientManager.make_client.<locals>.add_default_metadata_wrapper
  s6    %' = = = = = = = = Kr   r   )r   rj   endswithsplitr   glmtitlerp   r   r   ga_exceptionsDefaultCredentialsErrorr   rq   r   
getmemberssetattr)	r(   rI   clsclienter   r   rb   r   s	   `        r   make_clientz_ClientManager.make_client   s   6>>#CC\!!(CC]]8$$ 	?::c??1%D#tzz||.BBCCCC#tzz||o=>>C ! 	KKK
	,.. 3 322t1223 3 3 3 3 3 3 3 3 3 3 3 3 3 34 	 	 	AF G	 $ 	M
	 
	 
		 	 	 	 	 #-c22 	% 	%KD%4e$$ %%A,,Q//AFD!$$$$s<   9C- C!C- !C%%C- (C%)C- -D
<	DD
c                    |                                 }|dk    r|                                 S | j                            |          }||                     |          }|| j        |<   |S N
operations)lowerget_default_operations_clientrr   getr   )r(   rI   r   s      r   get_default_clientz!_ClientManager.get_default_client  sj    zz||<55777!!$''>%%d++F!'DLr   operations_v1.OperationsClientc                    | j                             dd           }|+|                     d          }|j        j        }|| j         d<   |S )Nr   Model)rr   r   r   
_transportoperations_client)r(   r   model_clients      r   r   z,_ClientManager.get_default_operations_client%  sM    !!,55>227;;L!,>F)/DL&r   )r6   rN   r   rv   rt   rN   r   rw   ru   rx   rq   rP   rQ   ry   rQ   r   )re   rf   rg   dataclassesfieldr=   rp   __annotations__rq   rr   r   r   r   r   r   r   r   rn   rn      s         $5K$5d$K$K$KMKKKK244444/k/EEEGEEEE
 #@D !%SW>B68Q Q Q Q Q Qf8 8 8t	 	 	     r   rn   r   rs   r6   rN   r   rv   rt   r   .client_options_lib.ClientOptions | dict | Noneru   rx   rq   rP   c                B    t                               | |||||          S )a  Captures default client configuration.

    If no API key has been provided (either directly, or on `client_options`) and the
    `GOOGLE_API_KEY` environment variable is set, it will be used as the API key.

    Note: Not all arguments are detailed below. Refer to the `*ServiceClient` classes in
    `google.ai.generativelanguage` for details on the other arguments.

    Args:
        transport: A string, one of: [`rest`, `grpc`, `grpc_asyncio`].
        api_key: The API-Key to use when creating the default clients (each service uses
            a separate client). This is a shortcut for `client_options={"api_key": api_key}`.
            If omitted, and the `GOOGLE_API_KEY` environment variable is set, it will be
            used.
        default_metadata: Default (key, value) metadata pairs to send with every request.
            when using `transport="rest"` these are sent as HTTP headers.
    rs   )_client_managerr   rs   s         r   r   r   .  s3    > $$%) %   r   rQ   glm.CacheServiceClientc                 6    t                               d          S )Ncacher   r   r   r   r   get_default_cache_clientr   [      --g666r   glm.FilesServiceClientc                 6    t                               d          S )NrX   r   r   r   r   get_default_file_clientr   _  s    --f555r   glm.FilesServiceAsyncClientc                 6    t                               d          S )Nr   r   r   r   r   get_default_file_async_clientr   c      --l;;;r   glm.GenerativeServiceClientc                 6    t                               d          S )N
generativer   r   r   r   get_default_generative_clientr   g  r   r    glm.GenerativeServiceAsyncClientc                 6    t                               d          S )Ngenerative_asyncr   r   r   r   #get_default_generative_async_clientr   k      --.@AAAr   r   c                 6    t                               d          S r   r   r   r   r   r   r   o  r   r   glm.ModelServiceAsyncClientc                 6    t                               d          S )Nmodelr   r   r   r   get_default_model_clientr   s  r   r   glm.RetrieverClientc                 6    t                               d          S )N	retrieverr   r   r   r   get_default_retriever_clientr   w  s    --k:::r   glm.RetrieverAsyncClientc                 6    t                               d          S )Nretriever_asyncr   r   r   r   "get_default_retriever_async_clientr   {  s    --.?@@@r   glm.PermissionServiceClientc                 6    t                               d          S )N
permissionr   r   r   r   get_default_permission_clientr     r   r    glm.PermissionServiceAsyncClientc                 6    t                               d          S )Npermission_asyncr   r   r   r   #get_default_permission_async_clientr     r   r   )r6   rN   r   rv   rt   rN   r   r   ru   rx   rq   rP   )rQ   r   )rQ   r   )rQ   r   )rQ   r   )rQ   r   r   )rQ   r   )rQ   r   )rQ   r   )rQ   r   )rQ   r   )?
__future__r   r   
contextlibr   r   pathlibr#   typingr   r   collections.abcr   r:   ior   google.ai.generativelanguageaigenerativelanguager   google.generativeai.protosgenerativeaiprotosgoogle.authr   ga_credentialsr	   r   googler
   google.api_corer   r   r   r   googleapiclient.httpr8   googleapiclient.discoverygoogle.generativeair   r   ImportErrorr   r<   contextmanagerr   r   rj   	dataclassrn   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>r     s   " " " " " " 				                       $ $ $ $ $ $        * * * * * * * * * + + + + + + + + + 5 5 5 5 5 5 3 3 3 3 3 3       @ @ @ @ @ @ $ $ $ $ $ $ ) ) ) ) ) )            ++++++%KK   KKK 
  V  5 5 5<? <? <? <? <?- <? <? <?~
 
 
 
 
S7 
 
 
 c c c c c c c cP <@ !EI:>24& & & & & &R !.""      7 7 7 76 6 6 6< < < << < < <B B B B< < < <7 7 7 7; ; ; ;A A A A< < < <B B B B B Bs   6B BB