U
    ·ÜŸj{  ã                   @  sf  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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d„Z,ddœdd„Z-dddœdd„Z.ddœdd„Z/e0d k�rbe 1e-ƒ ¡ dS )!é    )ÚannotationsN)ÚAnyÚListÚTypeÚOptional)ÚClassVaré   )Ú_toolsé   )Ú_ApiTypeÚ__version__)Úregister_commands)Úcan_use_http2)Ú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__ÚpydanticZExtrar   r   Ú__annotations__© r   r   ú3/tmp/pip-unpacked-wheel-2qj3ofc_/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   Z
BaseConfigr!   r$   r)   r*   r+   r,   r-   r.   r0   r   r   r   r    r      s$   
ÿr   zargparse.ArgumentParser©Úreturnc                    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(� d)d*œ‡ fd+d,„} ˆ j| d-� ˆ  ¡ }|jd.d/d�}t|ƒ |jd0d1d�}t	 ||¡ ˆ S )2NÚ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)r3   Z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 )r7   r$   ÚNoner1   c                     s   ˆ   ¡  d S ©N)Ú
print_helpr   ©Úparserr   r    r:   n   s    z_build_parser.<locals>.help)ÚfuncÚapizDirect API callsZtoolsz!Client side tools for convenience)
ÚargparseÚArgumentParserÚadd_argumentÚstrr   Úset_defaultsÚadd_subparsersÚ
add_parserr   r	   )r:   Z
subparsersZsub_apiZ	sub_toolsr   rB   r    Ú_build_parser>   sd    úýûþþþürM   r"   c               
   C  sh   z
t ƒ  W nX tttjfk
rB }  zt| ƒ W Y ¢dS d } ~ X Y n" tk
rb   tj 	d¡ Y dS X dS )Nr   Ú
r   )
Ú_mainr   r   r   ZValidationErrorr   ÚKeyboardInterruptÚsysÚstderrÚwrite)Úerrr   r   r    Úmain~   s    
rU   z/tuple[argparse.Namespace, Arguments, list[str]])rC   r2   c                 C  s„   dt jkr4t j d¡}t jd|… }t j|d … }nt jdd … }g }|  |¡\}}| |¡ ttt|ƒƒ}|jsz|  	¡  |||fS )Nz--r   )
rQ   ÚargvÚindexÚparse_known_argsÚextendr   r   Úvarsr0   Ú
parse_args)rC   ÚidxZ
known_argsr.   ÚparsedZremaining_unknownÚargsr   r   r    Ú_parse_argsŠ   s    

r_   r?   c                  C  sˆ  t ƒ } t| ƒ\}}}|jdkr*tj d¡ i }|jd k	rŠ|jD ]J}| d¡rPdnd}||krltd|› d�ƒ‚t	j
t	 t	 |¡¡d�||< q>t	j|p”d tƒ d	�}|t_|jr²|jt_|jrÀ|jt_|jrÎ|jt_|jd k	rà|jt_|jd k	rò|jt_|jd k	�r|jt_|jd k	�r|jt_zB|j�rR| t|jd
d„ t|ƒ ¡ D ƒd|i–ƒ¡ n| ¡  W 5 z| ¡  W n tk
�r€   Y nX X d S )Nr   z)Warning: --verbosity isn't supported yet
Úhttpszhttps://zhttp://z	Multiple z0 proxies given - only the last one would be used)r(   )ZmountsZhttp2c                 S  s   i | ]\}}|d k	r||“qS r@   r   )Ú.0ÚkeyÚvaluer   r   r    Ú
<dictcomp>Ô   s   þ z_main.<locals>.<dictcomp>r.   ) rM   r_   r#   rQ   rR   rS   r(   Ú
startswithr   ÚhttpxZHTTPTransportZProxyÚURLZClientr   r3   Úhttp_clientr'   r%   r&   Úbase_urlr)   r+   r*   r,   ÚcloseÚ	Exceptionr-   rD   r   rZ   Úitems)rC   r]   r^   ÚunknownÚproxiesr(   rb   rh   r   r   r    rO   ¢   s`    


þ


ü øþÿrO   Ú__main__)2Ú
__future__r   rQ   ÚloggingrF   Útypingr   r   r   r   Útyping_extensionsr   rf   r   r3   Ú r	   r   r   Z_apir   Ú_utilsr   Ú_errorsr   r   Ú_compatr   r   r   Z_modelsr   Ú_exceptionsr   Ú	getLoggerÚloggerÚ	FormatterÚ	formatterÚStreamHandlerrR   ÚhandlerÚsetFormatterÚ
addHandlerr   rM   rU   r_   rO   r   Úexitr   r   r   r    Ú<module>   s8   


 @F
