§
    é˜ºh  ã                  ó~  — U d Z ddlmZ ddlZddlZddlmZmZmZm	Z	 ddl
mZ ddlmZ ddlmZ ddlmZ dZd	ed
<   	 ddlZn# e$ rZeZdZY dZ[ndZ[ww xY we€enej        j        Z G d„ de¦  «        Zd!d„Z G d„ dej        ¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Zdaded<   d"d„Z d#d„Z!d$d „Z"dS )%z1Module that holds a global gspread.client.Client.é    )ÚannotationsN)ÚAnyÚCallableÚMappingÚSequence)Úcredentials)Ú
html_utils)Úipython_env)Ú	sheets_idzException | NoneÚ_gspread_import_errorc                  ó   — e Zd ZdS )ÚSpreadsheetNotFoundErrorN)Ú__name__Ú
__module__Ú__qualname__© ó    ús/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/google/generativeai/notebook/gspread_client.pyr   r   *   s   € € € € € Ø€Dr   r   ÚreturnÚ	Exceptionc                 óP   — t          d                     t          ¦  «        ¦  «        S )Nz&"gspread" module not imported, got: {})ÚRuntimeErrorÚformatr   r   r   r   Ú_get_import_errorr   .   s    € ÝÐ@×GÒGÕH]Ñ^Ô^Ñ_Ô_Ð_r   c                  óx   — e Zd ZdZej        dd„¦   «         Zej        dd
„¦   «         Zej        dd„¦   «         ZdS )ÚGSpreadClientztWrapper around gspread.client.Client.

    This adds a layer of indirection for us to inject mocks for testing.
    Úsidúsheets_id.SheetsIdentifierr   ÚNonec                ó   — dS )z­Validates that `name` is the name of a Google Sheets document.

        Raises an exception if false.

        Args:
          sid: The identifier for the document.
        Nr   ©Úselfr   s     r   ÚvalidatezGSpreadClient.validate8   ó   € € € r   Úworksheet_idÚintú6tuple[Sequence[Mapping[str, str]], Callable[[], None]]c                ó   — dS )z2Returns all records for a Google Sheets worksheet.Nr   ©r"   r   r%   s      r   Úget_all_recordszGSpreadClient.get_all_recordsB   r$   r   ÚrowsúSequence[Sequence[Any]]c                ó   — dS )z@Writes results to a new worksheet to the Google Sheets document.Nr   ©r"   r   r+   s      r   Úwrite_recordszGSpreadClient.write_recordsJ   r$   r   N©r   r   r   r   ©r   r   r%   r&   r   r'   ©r   r   r+   r,   r   r   )	r   r   r   Ú__doc__ÚabcÚabstractmethodr#   r*   r/   r   r   r   r   r   2   s”   € € € € € ðð ð
 	Ôðð ð ñ Ôðð 	ÔðAð Að Añ ÔðAð 	ÔðOð Oð Oñ ÔðOð Oð Or   r   c                  ó:   — e Zd ZdZdd„Zdd	„Zdd„Zdd„Zdd„ZdS )ÚGSpreadClientImplz)Concrete implementation of GSpreadClient.Úclientr   Úenvúipython_env.IPythonEnv | Nonec                ó"   — || _         || _        dS )zßConstructor.

        Args:
          client: Instance of gspread.client.Client.
          env: Optional instance of IPythonEnv. This is used to display messages
            such as the URL of the output Worksheet.
        N)Ú_clientÚ_ipython_env)r"   r8   r9   s      r   Ú__init__zGSpreadClientImpl.__init__V   s   € ð ˆŒØˆÔÐÐr   r   r   c                óB  — 	 |                      ¦   «         r,| j                             |                      ¦   «         ¦  «        S |                     ¦   «         r9| j                             t          |                     ¦   «         ¦  «        ¦  «        S |                     ¦   «         r9| j                             t          |                     ¦   «         ¦  «        ¦  «        S n5# t          $ r(}t          d 
                    |¦  «        ¦  «        |‚d}~ww xY wt          d¦  «        ‚)ac  Opens a Sheets document from `sid`.

        Args:
          sid: The identifier for the Sheets document.

        Raises:
          SpreadsheetNotFoundError: If the Sheets document cannot be found or
            cannot be opened.

        Returns:
          A gspread.Worksheet instance representing the worksheet referred to by
          `sid`.
        zUnable to find Sheets with {}Nz"Invalid sheets_id.SheetsIdentifier)Únamer<   ÚopenÚkeyÚopen_by_keyÚstrÚurlÚopen_by_urlÚGSpreadExceptionr   r   )r"   r   Úexcs      r   Ú_openzGSpreadClientImpl._opena   sù   € ð	aØ�xŠx‰zŒzð 5Ø”|×(Ò(¨¯ª©¬Ñ4Ô4Ð4Ø�wŠw‰yŒyð @Ø”|×/Ò/µ°C·G²G±I´I±´Ñ?Ô?Ð?Ø�wŠw‰yŒyð @Ø”|×/Ò/µ°C·G²G±I´I±´Ñ?Ô?Ð?ð@øåð 	að 	að 	aÝ*Ð+J×+QÒ+QÐRUÑ+VÔ+VÑWÔWÐ]`Ð`øøøøð	aøøøå&Ð'KÑLÔLÐLs%   ‚?C ÁAC ÂAC Ã
DÃ'#D
Ä
Dr   r   c                ó0   — |                       |¦  «         d S ©N)rI   r!   s     r   r#   zGSpreadClientImpl.validatez   s   € Ø�
Š
�3‰Œˆˆˆr   r%   r&   r'   c                óÀ   ‡‡‡— |                       |¦  «        Š‰                     |¦  «        Š| j        �| j        Šˆˆˆfd„}nˆˆfd„}‰                     ¦   «         |fS )Nc                 óê   •— ‰                       d                     t          j        t	          j        ‰j        ¦  «        d                     ‰j        ‰j        ¦  «        ¬¦  «        ¦  «        ¦  «         d S )Nz Reading inputs from worksheet {}ú{} in {}©rE   Útext)Údisplay_htmlr   r	   Úget_anchor_tagr   Ú	SheetsURLrE   Útitle)r9   ÚsheetÚ	worksheets   €€€r   Ú_display_fnz6GSpreadClientImpl.get_all_records.<locals>._display_fnˆ   st   ø€ Ø× Ò Ø6×=Ò=Ý"Ô1Ý )Ô 3°I´MÑ BÔ BØ!+×!2Ò!2°9´?ÀEÄKÑ!PÔ!Pðñ ô ñô ñô ð ð ð r   c                 ób   •— t          d                     ‰j        ‰ j        ¦  «        ¦  «         d S )Nz&Reading inputs from worksheet {} in {})Úprintr   rT   )rU   rV   s   €€r   rW   z6GSpreadClientImpl.get_all_records.<locals>._display_fn”   s.   ø€ ÝÐ>×EÒEÀiÄoÐW\ÔWbÑcÔcÑdÔdÐdÐdÐdr   )rI   Úget_worksheetr=   r*   )r"   r   r%   rW   r9   rU   rV   s       @@@r   r*   z!GSpreadClientImpl.get_all_records}   sŸ   øøø€ ð
 —
’
˜3‘”ˆØ×'Ò'¨Ñ5Ô5ˆ	àÔÐ(ØÔ#ˆCðð ð ð ð ð ð ð ðeð eð eð eð eð eð ×(Ò(Ñ*Ô*¨KÐ7Ð7r   r+   r,   c                ó6  — |                       |¦  «        }t          j                             ¦   «         }d|d›d|d›d�}|                     |dd¬¦  «        }|                     |¬¦  «         | j        �x| j                             d	                     t          j	        t          j        |j        ¦  «        d
                     |j        |j        ¦  «        ¬¦  «        ¦  «        ¦  «         d S t          d                     |j        |j        ¦  «        ¦  «         d S )NzResults z%Y_%m_%dz (z%sú)é   )rT   r+   Úcols)Úvaluesz#Results written to new worksheet {}rN   rO   z)Results written to new worksheet {} in {})rI   ÚdatetimeÚnowÚadd_worksheetÚappend_rowsr=   rQ   r   r	   rR   r   rS   rE   rT   rY   )r"   r   r+   rU   Úcurrent_datetimerT   rV   s          r   r/   zGSpreadClientImpl.write_records™   s'  € ð
 —
’
˜3‘”ˆõ
 $Ô,×0Ò0Ñ2Ô2ÐØNÐ+ÐNÐNÐNÐ8HÐNÐNÐNÐNˆð ×'Ò'¨e¸!À!Ð'ÑDÔDˆ	Ø×Ò TÐÑ*Ô*Ð*àÔÐ(ØÔ×*Ò*Ø5×<Ò<ÝÔ-Ý%Ô/°	´Ñ>Ô>Ø'×.Ò.¨y¬ÀÄÑLÔLðñ ô ñô ñô ð ð ð õ Ð=×DÒDÀYÄ_ÐV[ÔVaÑbÔbÑcÔcÐcÐcÐcr   N)r8   r   r9   r:   )r   r   r0   r1   r2   )	r   r   r   r3   r>   rI   r#   r*   r/   r   r   r   r7   r7   S   sˆ   € € € € € Ø3Ð3ð	 ð 	 ð 	 ð 	 ðMð Mð Mð Mð2ð ð ð ð8ð 8ð 8ð 8ð8dð dð dð dð dð dr   r7   c                  ó*   — e Zd ZdZdd„Zdd
„Zdd„ZdS )ÚNullGSpreadClientz­Null-object implementation of GSpreadClient.

    This class raises an error if any of its methods are called. It is used when
    the gspread library is not available.
    r   r   r   r   c                ó   — t          ¦   «         ‚rK   ©r   r!   s     r   r#   zNullGSpreadClient.validate¿   s   € ÝÑ!Ô!Ð!r   r%   r&   r'   c                ó   — t          ¦   «         ‚rK   rh   r)   s      r   r*   z!NullGSpreadClient.get_all_recordsÂ   ó   € õ
  Ñ!Ô!Ð!r   r+   r,   c                ó   — t          ¦   «         ‚rK   rh   r.   s      r   r/   zNullGSpreadClient.write_recordsÉ   rj   r   Nr0   r1   r2   )r   r   r   r3   r#   r*   r/   r   r   r   rf   rf   ¸   sZ   € € € € € ðð ð"ð "ð "ð "ð"ð "ð "ð "ð"ð "ð "ð "ð "ð "r   rf   zGSpreadClient | NoneÚ_gspread_clientÚcredsúcredentials.Credentialsr9   r:   r   c                ó~   — t           �'t          j        | ¦  «        }t          ||¬¦  «        adS t	          ¦   «         adS )z Sets up credential for gspreads.N)r8   r9   )ÚgspreadÚ	authorizer7   rl   rf   )rm   r9   r8   s      r   rq   rq   Õ   s?   € õ ÐÝÔ" 5Ñ)Ô)ˆÝ+°6¸sÐCÑCÔCˆˆˆå+Ñ-Ô-ˆˆˆr   c                 ó<   — t           st          d¦  «        ‚t           S )NzMust call authorize() first)rl   r   r   r   r   Ú
get_clientrs   ß   s   € Ýð :ÝÐ8Ñ9Ô9Ð9ÝÐr   r8   c                ó
   — | a dS )z(Overrides the global client for testing.N)rl   )r8   s    r   Útestonly_set_clientru   å   s   € ð €O€O€Or   )r   r   )rm   rn   r9   r:   r   r   )r   r   )r8   r   r   r   )#r3   Ú
__future__r   r4   r`   Útypingr   r   r   r   Úgoogle.authr   Úgoogle.generativeai.notebookr	   r
   r   r   Ú__annotations__rp   ÚImportErrorÚer   Ú
exceptionsrG   r   r   r   ÚABCr   r7   rf   rl   rq   rs   ru   r   r   r   ú<module>r      sC  ðð 8Ð 7Ð 7Ø "Ð "Ð "Ð "Ð "Ð "à 
€
€
€
Ø €€€Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø #Ð #Ð #Ð #Ð #Ð #Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2ð
 +/Ð Ð .Ð .Ð .Ñ .ðà€N€N€N€NøØð ð ð ØÐØ€G€G€G€G€G€Gøøøøðøøøð !( �9�9°WÔ5GÔ5XÐ ð	ð 	ð 	ð 	ð 	˜|ñ 	ô 	ð 	ð`ð `ð `ð `ðOð Oð Oð Oð O�C”Gñ Oô Oð OðBbdð bdð bdð bdð bd˜ñ bdô bdð bdðJ"ð "ð "ð "ð "˜ñ "ô "ð "ð4 )-€Ð ,Ð ,Ð ,Ñ ,ð.ð .ð .ð .ðð ð ð ðð ð ð ð ð s   ¾A ÁAÁAÁA