
    h-i                    l    d Z ddlmZ ddlZddlmZ ddZ G d d      Z G d d	      Z G d
 d      Z	y)z<Module for classes related to identifying a Sheets document.    )annotationsN)sheets_sanitize_urlc                f    t        j                  d|       st        dj                  |             | S )Nz[a-zA-Z0-9_-]+z"{}" is not a valid Sheets key)re	fullmatch
ValueErrorformat)keys    eD:\DhanshreeandTeamAI\Github\ai_code\venv\Lib\site-packages\google/generativeai/notebook/sheets_id.py_sanitize_keyr      s-    <<(#.9@@EFFJ    c                       e Zd ZdZddZddZy)	SheetsURLz?Class that enforces safety by ensuring that URLs are sanitized.c                8    t        j                  |      | _        y N)r   sanitize_sheets_url_url)selfurls     r   __init__zSheetsURL.__init__   s    ,@@E	r   c                    | j                   S r   r   r   s    r   __str__zSheetsURL.__str__"       yyr   N)r   strreturnr   __name__
__module____qualname____doc__r   r    r   r   r   r      s    IFr   r   c                       e Zd ZdZddZddZy)	SheetsKeyz?Class that enforces safety by ensuring that keys are sanitized.c                $    t        |      | _        y r   )r   _key)r   r
   s     r   r   zSheetsKey.__init__)   s    &s+	r   c                    | j                   S r   r(   r   s    r   r   zSheetsKey.__str__,   r   r   N)r
   r   r   r   r$   r   r   r&   r&   &   s    I,r   r&   c                  H    e Zd ZdZ	 	 	 d	 	 	 	 	 d	dZd
dZddZddZd Zy)SheetsIdentifierzEncapsulates a means to identify a Sheets document.

    The gspread library provides three ways to look up a Sheets document: by name,
    by url and by key. An instance of this class represents exactly one of the
    methods.
    Nc                   || _         || _        || _        t        t	        | j                               t        t	        | j                              z   t        t	        | j                              z   }|dk7  rt        d      y)a  Constructor.

        Exactly one of the arguments should be provided.

        Args:
          name: The name of the Sheets document. More-than-one Sheets documents can
            have the same name, so this is the least precise method of identifying
            the document.
          key: The key of the Sheets document
          url: The url to the Sheets document

        Raises:
          ValueError: If the caller does not specify exactly one of name, url or
          key.
           z(Must set exactly one of name, key or urlN)_namer(   r   intboolr   )r   namer
   r   
num_inputss        r   r   zSheetsIdentifier.__init__8   sj    * 
		 djj)*Sdii-AACTYYDXX
?GHH r   c                    | j                   S r   )r/   r   s    r   r2   zSheetsIdentifier.nameV   s    zzr   c                    | j                   S r   r*   r   s    r   r
   zSheetsIdentifier.keyY   r   r   c                    | j                   S r   r   r   s    r   r   zSheetsIdentifier.url\   r   r   c                    | j                   rdj                  | j                         S | j                  rdj                  | j                        S dj                  | j                        S )Nzname={}zkey={}zurl={})r/   r	   r(   r   r   s    r   r   zSheetsIdentifier.__str___   sK    ::##DJJ//YY??499--??499--r   )NNN)r2   
str | Noner
   SheetsKey | Noner   SheetsURL | None)r   r8   )r   r9   )r   r:   )	r    r!   r"   r#   r   r2   r
   r   r   r$   r   r   r,   r,   0   sK       $ $	II I 	I<.r   r,   )r
   r   r   r   )
r#   
__future__r   r   google.generativeai.notebookr   r   r   r&   r,   r$   r   r   <module>r=      s7    C " 	 <  5. 5.r   