
    
!i:                       S SK Jr  S SKrS SKrS SKrS SKrS SKrS SKrS SKJ	r	J
r
  S SKJr  S SKrS SKJr  S SKJs  Jr  S SKJs  Jr  S SKJr  S SKJr  S SKJr  S S	KJr   S S
KJ!r!  S SKJ"r"  S SK#r$S SK%r$ S SK&J'r'  \'RP                  r(Sr*Sr+\RX                  S 5       r- " S S\R\                  5      r. " S S\R^                  5      r/\R`                   " S S5      5       r1SSSSSSS.           S%S jjr2\1" 5       r3\3Re                  5         S&S jr4S'S jr5S(S jr6S)S jr7S*S jr8S+S jr9S,S  jr:S-S! jr;S.S" jr<S/S# jr=S0S$ jr>g! \) a    Sr( Nf = f)1    )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               #     #    [         R                  R                  n S[        R                  ;   a  S [         R                  l         S v   U [         R                  l        g ! U [         R                  l        f = f7f)NCOLAB_RELEASE_TAGc                     g)N)NN )argskwargss     T/home/james-whalen/.local/lib/python3.13/site-packages/google/generativeai/client.py<lambda>-patch_colab_gce_credentials.<locals>.<lambda>9   s    \    )r
   _default_get_gce_credentialsosenviron)get_gces    r   patch_colab_gce_credentialsr   5   sL     mm00Gbjj(-Q*5-4*W*s   AA<A" A<"A99A<c                  j   ^  \ rS rSrU 4S jrS
SS jjrSSSSSS.             SS jjrS	rU =r$ )FileServiceClientA   c                h   > S U l         [        R                  " 5       U l        [        TU ]  " U0 UD6  g N)_discovery_api	threadinglocal_localsuper__init__)selfr   r   	__class__s      r   r)   FileServiceClient.__init__B   s+    "oo'$)&)r   r   c                   U R                   R                  nUc  [        S5      e[        R                  R                  [        R                  " 5       S [         SU 3[        U5      S9nUR                  5       u  pEUR                  R                  5         UR                  S5      n[        R                  R                  XbS9U R                  l        g )NzaInvalid operation: Uploading to the File API requires an API key. Please provide a valid API key.c                    X4$ r#   r   )respcontents     r   r   8FileServiceClient._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googleapiclientr2   HttpRequesthttplib2HttpGENAI_API_DISCOVERY_URLdictexecuteclosedecode	discoverybuild_from_documentr'   discovery_api)r*   metadatar8   requestresponser0   discovery_docs          r   _setup_discovery_api&FileServiceClient._setup_discovery_apiG   s    &&..?s  "&&22:*++?yIN	 3 
 $OO-w/$3$=$=$Q$Q %R %
!r   NT)	mime_typenamedisplay_name	resumablerF   c                  U R                   c  U R                  U5        0 nUb  X7S'   Ub  XGS'   [        U[        5      (       a  [        R
                  R                  XUS9nO[        R
                  R                  XUS9nU R                  R                  R                  5       R                  SU0US9n	U H  u  pXR                  U
'   M     U	R                  5       nU R                  SUS   S   05      $ )NrM   displayName)fdmimetyperO   )filenamerS   rO   file)body
media_body)r$   rJ   
isinstancer   r:   r2   MediaIoBaseUploadMediaFileUploadr'   rE   mediauploadr5   r@   get_file)r*   pathrL   rM   rN   rO   rF   rU   r[   rG   keyvalueresults                r   create_fileFileServiceClient.create_file\   s     &%%h/L#".dF###((::y ; E $((88Y 9 E ++++113::[`:a"JC#(OOC  #"}}ffVnV&<=>>r   )r$   r'   )r   )rF   z dict | Sequence[tuple[str, str]])r^   z)str | pathlib.Path | os.PathLike | IOBaserL   
str | NonerM   rd   rN   rd   rO   boolrF   Sequence[tuple[str, str]]returnzprotos.File)	__name__
__module____qualname____firstlineno__r)   rJ   rb   __static_attributes____classcell__)r+   s   @r   r    r    A   sl    *

2 !%#'.0!?7!? 	!?
 !? !!? !? ,!? 
!? !?r   r    c                      \ rS rSrS rSrg)FileServiceAsyncClient   c                    #    [        S5      e7f)NzPThe `create_file` method is currently not supported for the asynchronous client.)NotImplementedError)r*   r   r   s      r   rb   "FileServiceAsyncClient.create_file   s     !^
 	
s   r   N)rh   ri   rj   rk   rb   rl   r   r   r   ro   ro      s    
r   ro   c                      \ rS rSr% \R
                  " \S9rS\S'   Sr	S\S'   \R
                  " \S9r
S\S'   S	S	S	S	S	SS
.             SS jjrS rS rSS jrSrg	)_ClientManager   )default_factoryzdict[str, Any]client_configr   rf   default_metadataclientsNr8   r   	transportr   client_infory   c                  [        U[        5      (       a  [        R                  " U5      nUc  [        R                  " 5       n[        [        R                  U5      n[        USS5      nU(       a  Ub  [        S5      eO@U(       d  [        R                  " S5      nU(       d  [        R                  " S5      nXl
        [         S[         3nU(       a1  UR                  (       a  U=R                  SU 3-  sl        O$Xl        O[        R                  R!                  US9nUUUUS	.n	U	R#                  5        V
Vs0 s H  u  pUc  M
  X_M     n	n
nXl        X`l        0 U l        gs  snn
f )
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.
Nr8   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   r|   r   r}   )rX   r?   client_options_lib	from_dictClientOptionsr   getattrr9   r   getenvr8   
USER_AGENT__version__r   r   r}   
ClientInfoitemsrx   ry   rz   )r*   r8   r   r|   r   r}   ry   had_api_key_valuer   rx   r_   r`   s               r   	configure_ClientManager.configure   sQ   D nd++/99.IN!/==?N0>>O#NItD" v  #
  ))$45 ))$45%,""|1[M2
%%&&Aj\*::&)3&"..99Z9PK '",&	
 7D6I6I6Ka6K
u6Ka* 0 bs   ?	E)E)c                  ^  US:X  a  [         nOzUS:X  a  [        nOmUR                  S5      (       a6  UR                  S5      S   n[	        [
        UR                  5       S-   5      nO![	        [
        UR                  5       S-   5      nT R                  (       d
  [        5          [        5          U" S0 T R                  D6nS S S 5        T R                  (       d  W$ S	 nU 4S
 jn[        R                  " U5       H4  u  pU" X5      (       d  M  [	        WU5      nU" U5      n[!        X1U5        M6     W$ ! , (       d  f       Nz= f! [        R                   a  nSUl        UeS nAff = f)NrU   
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                    U R                  S5      (       a  g[        U5      (       d  gS[        R                  " U5      R                  R                  5       ;  a  gg)Nr   FrF   T)
startswithcallableinspect	signature
parameterskeys)rM   fs     r   keep(_ClientManager.make_client.<locals>.keep   sH    s##A;;!2!21!5!@!@!E!E!GGr   c                    >^  SS.U U4S jjnU$ )Nr   )rF   c                ^   > [        U 5      [        TR                  5      -   n T" U0 UDSU 0D6$ )NrF   )listry   )rF   r   r   r   r*   s      r   callN_ClientManager.make_client.<locals>.add_default_metadata_wrapper.<locals>.call  s1    >D1F1F,GG$<&<8<<r   r   )r   r   r*   s   ` r   add_default_metadata_wrapper@_ClientManager.make_client.<locals>.add_default_metadata_wrapper
  s    %' = = Kr   r   )r    ro   endswithsplitr   glmtitlerx   r   r   ga_exceptionsDefaultCredentialsErrorr   ry   r   
getmemberssetattr)	r*   rM   clsclienter   r   r`   r   s	   `        r   make_client_ClientManager.make_client   s6   6>#C\!(C]]8$$::c?1%D#tzz|.BBCC#tzz|o=>C !!K
	,.2t112 / $$M
		 #--c2KD$$%A,Q/AF!$ 3 Q /.44 	AF G	s6   %
E /D6E 6
E E E E)	E$$E)c                    UR                  5       nUS:X  a  U R                  5       $ U R                  R                  U5      nUc  U R	                  U5      nX R                  U'   U$ N
operations)lowerget_default_operations_clientrz   getr   )r*   rM   r   s      r   get_default_client!_ClientManager.get_default_client  s^    zz|<5577!!$'>%%d+F!'LLr   c                    U R                   R                  SS 5      nUc5  U R                  S5      nUR                  R                  nXR                   S'   U$ )Nr   Model)rz   r   r   
_transportoperations_client)r*   r   model_clients      r   r   ,_ClientManager.get_default_operations_client%  sO    !!,5>227;L!,,>>F)/LL&r   )rx   rz   ry   )r8   rd   r   (ga_credentials.Credentials | dict | Noner|   rd   r   z8client_options_lib.ClientOptions | dict[str, Any] | Noner}   &gapic_v1.client_info.ClientInfo | Nonery   rf   rg   Nonerg   zoperations_v1.OperationsClient)rh   ri   rj   rk   dataclassesfieldr?   rx   __annotations__ry   rz   r   r   r   r   rl   r   r   r   ru   ru      s    $/$5$5d$KM>K24/4)//EG^E
 #@D !%SW>B68Q Q >	Q Q QQ <Q 4Q 
Qf8t	r   ru   r   r{   c           	     2    [         R                  U UUUUUS9$ )aY  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.
r{   )_client_managerr   r{   s         r   r   r   .  s.    > $$%) %  r   c                 ,    [         R                  S5      $ )Ncacher   r   r   r   r   get_default_cache_clientr   [      --g66r   c                 ,    [         R                  S5      $ )NrU   r   r   r   r   get_default_file_clientr   _  s    --f55r   c                 ,    [         R                  S5      $ )Nr   r   r   r   r   get_default_file_async_clientr   c      --l;;r   c                 ,    [         R                  S5      $ )N
generativer   r   r   r   get_default_generative_clientr   g  r   r   c                 ,    [         R                  S5      $ )Ngenerative_asyncr   r   r   r   #get_default_generative_async_clientr   k      --.@AAr   c                 ,    [         R                  S5      $ r   r   r   r   r   r   r   o  r   r   c                 ,    [         R                  S5      $ )Nmodelr   r   r   r   get_default_model_clientr   s  r   r   c                 ,    [         R                  S5      $ )N	retrieverr   r   r   r   get_default_retriever_clientr   w  s    --k::r   c                 ,    [         R                  S5      $ )Nretriever_asyncr   r   r   r   "get_default_retriever_async_clientr   {  s    --.?@@r   c                 ,    [         R                  S5      $ )N
permissionr   r   r   r   get_default_permission_clientr     r   r   c                 ,    [         R                  S5      $ )Npermission_asyncr   r   r   r   #get_default_permission_async_clientr     r   r   )r8   rd   r   r   r|   rd   r   z.client_options_lib.ClientOptions | dict | Noner}   r   ry   rf   )rg   zglm.CacheServiceClient)rg   zglm.FilesServiceClient)rg   zglm.FilesServiceAsyncClient)rg   zglm.GenerativeServiceClient)rg   z glm.GenerativeServiceAsyncClientr   )rg   zglm.ModelServiceAsyncClient)rg   zglm.RetrieverClient)rg   zglm.RetrieverAsyncClient)rg   zglm.PermissionServiceClient)rg   z glm.PermissionServiceAsyncClient)?
__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.httpr:   googleapiclient.discoverygoogle.generativeair   r   ImportErrorr   r>   contextmanagerr   r    ro   	dataclassru   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>r     s   " 	       $   * * + + 5 3  @ $ )   +%%K 
  V  5 5<?-- <?~
S77 
 c c cP <@ !EI:>24&& :& & C& 8& 0&R !"    76<<B<7;A<BI  Ks   6E	 	EE