
    oi,                         d dl Z d dlZd dlZd dlmZmZ d dlZd dlZd dlm	Z	 ddl
mZ ddlmZ  G d d      Z G d	 d
e      Zy)    N)DictOptional)__version__   )verboselogs)DeepgramApiKeyErrorc                   "   e Zd ZU dZej
                  ed<   eeef   ed<   dZ	e
ed<   dZe
ed<   dddej                  ddfd	ed
edededee   dee   fdZd	efdZd
efdZdefdZddee   fdZde
fdZde
fdZde
fdZde
fdZde
fdZy)DeepgramClientOptionsa<  
    Represents options for configuring a Deepgram client.

    This class allows you to customize various options for interacting with the Deepgram API.

    Attributes:
        api_key: (Optional) A Deepgram API key used for authentication. Default uses the `DEEPGRAM_API_KEY` environment variable.
        access_token: (Optional) A Deepgram access token used for authentication. Default uses the `DEEPGRAM_ACCESS_TOKEN` environment variable.
        url: (Optional) The URL used to interact with production, On-prem, and other Deepgram environments. Defaults to `api.deepgram.com`.
        verbose: (Optional) The logging level for the client. Defaults to `verboselogs.WARNING`.
        headers: (Optional) Headers for initializing the client.
        options: (Optional) Additional options for initializing the client.
    _loggerheadersF_inspect_listen_inspect_speak Napi_keyaccess_tokenurlverboseoptionsc                    t        j                  t              | _        | j                  j	                  t        j                                |d}|d}|| _        || _        || _	        |i }|j                         | _        | j                  |       t        |      dk(  rd}| j                  |      | _        |i }|| _        | j#                         rd| _        | j'                         rd| _        y y )Nr   r   r   api.deepgram.comT)r   VerboseLogger__name__r   
addHandlerloggingStreamHandlerr   r   r   copy_custom_headers_update_headerslen_get_urlr   r   is_auto_flush_reply_enabledr   is_auto_flush_speak_enabledr   )selfr   r   r   r   r   r   s          c/home/ccuser/rateright-growth/voice-assistant/venv/lib/python3.12/site-packages/deepgram/options.py__init__zDeepgramClientOptions.__init__%   s     #00: 5 5 78?GL(?G&||~W-s8q=$C==%?G++-#'D ++-"&D .    c                 Z    || _         d| _        | j                  t        | di              y)z
        set_apikey: Sets the API key for the client.

        Args:
            api_key: The Deepgram API key used for authentication.
        r   r   r   N)r   r   r   getattr)r$   r   s     r%   
set_apikeyz DeepgramClientOptions.set_apikeyM   s.     WT3Db%IJr'   c                 Z    || _         d| _        | j                  t        | di              y)z
        set_access_token: Sets the access token for the client.

        Args:
            access_token: The Deepgram access token used for authentication.
        r   r   r   N)r   r   r   r)   )r$   r   s     r%   set_access_tokenz&DeepgramClientOptions.set_access_tokenX   s.     )WT3Db%IJr'   returnc                 x    t        j                  d|t         j                        sd|z   }|j                  d      S )Nz
^https?://zhttps:///)rematch
IGNORECASEstrip)r$   r   s     r%   r!   zDeepgramClientOptions._get_urlc   s.    xxsBMM:s"Cyy~r'   c                 8   t        | d      r| j                  i | _        n8| j                  j                         D ci c]  \  }}|dvr|| }}}|| _        d| j                  d<   | j                  rd| j                   | j                  d<   n(| j                  rd| j                   | j                  d<   dt
         d	t        j                  d
    dt        j                  d    | j                  d<   |r| j                  j                  |       y y c c}}w )Nr   )AcceptAuthorization
User-Agentzapplication/jsonr5   zToken r6   zBearer z@deepgram/sdk/z python/r   .   r7   )	hasattrr   itemsr   r   r   sysversion_infoupdate)r$   r   kvexisting_custom_headerss        r%   r   z%DeepgramClientOptions._update_headersh   s   tY'4<<+?DL
 !LL..0'AqEE 1'# '
 3DL!3X <<.4T\\N,CDLL).5d6G6G5H,IDLL) [M#2B2B12E1FaHXHXYZH[G\] 	\" LL( )'s   Dc                 v    | j                   j                  dd      xs | j                   j                  dd      S )zo
        is_keep_alive_enabled: Returns True if the client is configured to keep the connection alive.
        	keepaliveF
keep_alive)r   getr$   s    r%   is_keep_alive_enabledz+DeepgramClientOptions.is_keep_alive_enabled   s8     ||U3 
t||7G7G%8
 	
r'   c                     t        | j                  j                  dd            }t        |t        j
                        xr |dkD  S )zq
        is_auto_flush_reply_enabled: Returns True if the client is configured to auto-flush for listen.
        auto_flush_reply_deltar   floatr   rE   
isinstancenumbersNumber)r$   rI   s     r%   r"   z1DeepgramClientOptions.is_auto_flush_reply_enabled   G     "'LL5q9"; -w~~> +&*	
r'   c                     t        | j                  j                  dd            }t        |t        j
                        xr |dkD  S )zp
        is_auto_flush_speak_enabled: Returns True if the client is configured to auto-flush for speak.
        auto_flush_speak_deltar   rJ   )r$   rQ   s     r%   r#   z1DeepgramClientOptions.is_auto_flush_speak_enabled   rO   r'   c                     | j                   S )za
        is_inspecting_listen: Returns True if the client is inspecting listen messages.
        )r   rF   s    r%   is_inspecting_listenz*DeepgramClientOptions.is_inspecting_listen   s     ###r'   c                     | j                   S )z_
        is_inspecting_speak: Returns True if the client is inspecting speak messages.
        )r   rF   s    r%   is_inspecting_speakz)DeepgramClientOptions.is_inspecting_speak   s     """r'   )N)r   
__module____qualname____doc__r   r   __annotations__r   strr   boolr   WARNINGintr   r&   r*   r,   r!   r   rG   r"   r#   rS   rU    r'   r%   r
   r
      s    &&&#s(^!OT! ND  "**"&"&&'&' &' 	&'
 &' $&' $&'P	K# 	K	KS 	Ks 
)x~ ):
t 
	
T 	
	
T 	
$d $#T #r'   r
   c                        e Zd ZU dZej
                  ed<   dddej                  ddfdededede	d	e
e   d
e
e   f fdZ xZS )ClientOptionsFromEnvzw
    This class extends DeepgramClientOptions and will attempt to use environment variables first before defaults.
    r   r   Nr   r   r   r   r   r   c                 	   t        j                  t              | _        | j                  j	                  t        j                                | j                  j                  t         j                         |d}|d}|dk(  rt        j                  dd      }|dk(  r|dk(  rt        j                  dd      }|dk(  r+|dk(  r&| j                  j                  d       t        d      |dk(  r4t        j                  dd      }| j                  j                  d|        |t         j                  k(  r(t        j                  dd      }|dk7  rt        |      }t        |t               r|xd	k(  r. | j                  j                  d
       t         j"                  }nxdk(  r. | j                  j                  d       t         j$                  }nxdk(  r. | j                  j                  d       t         j&                  }nWxdk(  r. | j                  j                  d       t         j(                  }n$xdk(  r- | j                  j                  d       t         j*                  }nxdk(  r- | j                  j                  d       t         j                  }nxdk(  r- | j                  j                  d       t         j,                  }nxdk(  r- | j                  j                  d       t         j.                  }n\dk(  r,| j                  j                  d       t         j0                  }n,	 | j                  j                  d       t         j                  }| j                  j                  d|        |i }t3        dd      D ][  }t        j                  d| d       }	|	=t        j                  d| d       ||	<   | j                  j5                  d |	||	          [ n t7        |      dk(  r| j                  j                  d!       d }|i }t3        dd      D ][  }t        j                  d"| d       }
|
=t        j                  d#| d       ||
<   | j                  j5                  d$|
||
          [ n t7        |      dk(  r| j                  j                  d%       d }t8        | u  ||||||&       y )'Nr   DEEPGRAM_ACCESS_TOKENDEEPGRAM_API_KEYz0Neither Deepgram API KEY nor ACCESS TOKEN is setDEEPGRAM_HOSTr   zDeepgram host is set to DEEPGRAM_LOGGINGNOTSETzLogging level is set to NOTSETSPAMzLogging level is set to SPAMDEBUGzLogging level is set to DEBUGVERBOSEzLogging level is set to VERBOSENOTICEzLogging level is set to NOTICEr\   zLogging level is set to WARNINGSUCCESSzLogging level is set to SUCCESSERRORzLogging level is set to ERRORCRITICALz Logging level is set to CRITICALzLogging level is set to r      DEEPGRAM_HEADER_DEEPGRAM_HEADER_VALUE_z'Deepgram header %s is set with value %szDeepgram headers are not setDEEPGRAM_PARAM_DEEPGRAM_PARAM_VALUE_z'Deepgram option %s is set with value %szDeepgram options are not set)r   r   r   r   r   r   )r   r   r   r   r   r   r   setLevelr\   osgetenvcriticalr   noticer]   rL   rZ   rf   rg   rh   ri   rj   rk   rl   rm   rangedebugr    superr&   )r$   r   r   r   r   r   r   	_loglevelxheaderparam	__class__s              r%   r&   zClientOptionsFromEnv.__init__   s    #00: 5 5 78k112?GL 299%<bALb=\R/ii 2B7G b=\R/LL!!BD%B  "9))O-?@CLL":3% @Ak)))		"4b9IBi.'3'!++,LM"-"4"4++,JK"-"2"2 ++,KL"-"3"3"++,MN"-"5"5!++,LM"-"4"4"++,MN"-"5"5"++,MN"-"5"5 ++,KL"-"3"3#++,NO"-"6"6++,MN"-"5"56wi@A?G1b\ %5aS#94@%&(ii04d'<GFOLL&&A  7|q ##$BC?G1b\ 			OA3"7>$%'YY/s3T&;GENLL&&A5'RW. 	 7|q ##$BC% 	 	
r'   )r   rV   rW   rX   r   r   rY   r\   rZ   r]   r   r   r&   __classcell__)r   s   @r%   r`   r`      s     &&& "**"&"&t
t
 t
 	t

 t
 $t
 $t
 t
r'   r`   )r<   r0   rt   typingr   r   r   rM   deepgramr   utilsr   errorsr   r
   r`   r^   r'   r%   <module>r      s>   
  	 	 !      '\# \#~}
}
r'   