o
    \hW                     @  sb  d dl mZ d dl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Zd dlZd dlZddlmZ ddlmZmZ dd	lmZ dd
lmZ ddlmZ ddlmZmZ ddlmZmZmZ ddl m!Z! ddl"m#Z# e$ Z%e&dZ'e(ej)Z*e*+e' e%,e* G dd de!Z-d"ddZ.d#ddZ/d$ddZ0d%dd Z1e2d!kre3e/  dS dS )&    )annotationsN)AnyListTypeOptional)ClassVar   )_tools   )_ApiType__version__)register_commands)can_use_http2)ProxiesDict)CLIErrordisplay_error)PYDANTIC_V2
ConfigDictmodel_parse)	BaseModel)APIErrorz[%(asctime)s] %(message)sc                   @  s   e Zd ZU ereddZded< n	G dd dejZ	ded< d	Z
d
ed< d
ed< d
ed< d
ed< ded< d	Zded< d	Zd
ed< d	Zd
ed< d	Zd
ed< d	Zded< g Zded< dZded< d	S )	Argumentsignore)extrazClassVar[ConfigDict]model_configc                   @  s   e Zd ZU ejjZded< dS )zArguments.Configr   r   N)__name__
__module____qualname__pydanticExtrar   r   __annotations__ r!   r!   R/home/air/segue/gemini/backup/venv/lib/python3.10/site-packages/openai/cli/_cli.pyConfig&   s   
 r#   int	verbosityNzOptional[str]versionapi_keyapi_baseorganizationzOptional[List[str]]proxyzOptional[_ApiType]api_typeapi_versionazure_endpointazure_ad_tokenzOptional[Type[BaseModel]]
args_modelz	List[str]unknown_argsFboolallow_unknown_args)r   r   r   r   r   r   r    r   
BaseConfigr#   r&   r+   r,   r-   r.   r/   r0   r2   r!   r!   r!   r"   r      s&   
 r   returnargparse.ArgumentParserc                    s  t jd dd  jddddddd	  jd
ddd  jdddd  jddddd  jdddd  jddtddd  jddd  jd d!d  jd"d#d  jd$d%d&d't d( d2 fd+d,}  j| d-   }|jd.d/d}t| |jd0d1d}t	||  S )3Nopenai)descriptionprogz-vz	--verbosecountr%   r   zSet verbosity.)actiondestdefaulthelpz-bz
--api-basezWhat API base url to use.)r=   z-kz	--api-keyzWhat API key to use.z-pz--proxy+zWhat proxy to use.)nargsr=   z-oz--organizationzRWhich organization to run as (will use your default organization if not specified)z-tz
--api-type)r6   azurez4The backend API to call, must be `openai` or `azure`)typechoicesr=   z--api-versionzvThe Azure API version, e.g. 'https://learn.microsoft.com/en-us/azure/ai-services/openai/reference#rest-api-versioning'z--azure-endpointz<The Azure endpoint, e.g. 'https://endpoint.openai.azure.com'z--azure-ad-tokenzyA token from Azure Active Directory, https://www.microsoft.com/en-us/security/business/identity-access/microsoft-entra-idz-Vz	--versionr&   z	%(prog)s )r:   r&   r4   Nonec                     s       d S N)
print_helpr!   parserr!   r"   r=   o   s   z_build_parser.<locals>.help)funcapizDirect API callstoolsz!Client side tools for conveniencer4   rC   )
argparseArgumentParseradd_argumentstrr   set_defaultsadd_subparsers
add_parserr   r	   )r=   
subparserssub_api	sub_toolsr!   rF   r"   _build_parser?   sd   rV   r$   c               
   C  sb   zt   W dS  tttjfy! }  zt|  W Y d } ~ dS d } ~ w ty0   tj	d Y dS w )Nr   
r   )
_mainr   r   r   ValidationErrorr   KeyboardInterruptsysstderrwrite)errr!   r!   r"   main   s   r_   rG   /tuple[argparse.Namespace, Arguments, list[str]]c                 C  s   dt jv rt jd}t jd| }t j|d  }n	t jdd  }g }| |\}}|| ttt|}|js=| 	  |||fS )Nz--r   )
r[   argvindexparse_known_argsextendr   r   varsr2   
parse_args)rG   idx
known_argsr0   parsedremaining_unknownargsr!   r!   r"   _parse_args   s   


rl   rC   c                  C  s  t  } t| \}}}|jdkrtjd i }|jd ur;|jD ]}|dr(dnd}||v r6td| d|||< qt	j
|p@d t d}|t_|jrO|jt_|jrV|jt_|jr]|jt_|jd urf|jt_|jd uro|jt_|jd urx|jt_|jd ur|jt_z3|jr|t|ji d	d
 t| D d|i n|  W z|  W d S  ty   Y d S w z|  W w  ty   Y w w )Nr   z)Warning: --verbosity isn't supported yet
httpszhttps://zhttp://z	Multiple z0 proxies given - only the last one would be used)proxieshttp2c                 S  s   i | ]\}}|d ur||qS rD   r!   ).0keyvaluer!   r!   r"   
<dictcomp>   s
    z_main.<locals>.<dictcomp>r0   )rV   rl   r%   r[   r\   r]   r*   
startswithr   httpxClientr   r6   http_clientr)   r'   r(   base_urlr+   r-   r,   r.   r/   rH   r   re   itemsclose	Exception)rG   ri   rk   unknownrn   r*   rq   rw   r!   r!   r"   rX      sp   








rX   __main__)r4   r5   )r4   r$   )rG   r5   r4   r`   rK   )4
__future__r   r[   loggingrL   typingr   r   r   r   typing_extensionsr   ru   r   r6    r	   r   r   _apir   _utilsr   _typesr   _errorsr   r   _compatr   r   r   _modelsr   _exceptionsr   	getLoggerlogger	Formatter	formatterStreamHandlerr\   handlersetFormatter
addHandlerr   rV   r_   rl   rX   r   exitr!   r!   r!   r"   <module>   s>    



 
@

F