o
    Th{                     @  sV  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Z,d"ddZ-d#ddZ.d$ddZ/e0d kre1e-  dS 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__pydanticExtrar   r   __annotations__ r    r    O/home/air/segue/gpt/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.   r/   r1   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)r5   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 )r9   r%   r3   Nonec                     s       d S N)
print_helpr    parserr    r!   r<   n   s   z_build_parser.<locals>.help)funcapizDirect API callstoolsz!Client side tools for conveniencer3   rB   )
argparseArgumentParseradd_argumentstrr   set_defaultsadd_subparsers
add_parserr   r	   )r<   
subparserssub_api	sub_toolsr    rE   r!   _build_parser>   sd   rU   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^   rF   /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   )
rZ   argvindexparse_known_argsextendr   r   varsr1   
parse_args)rF   idx
known_argsr/   parsedremaining_unknownargsr    r    r!   _parse_args   s   


rk   rB   c                  C  s  t  } t| \}}}|jdkrtjd i }|jd urE|jD ]%}|dr(dnd}||v r6td| dt	j
t	t	|d||< qt	j|pJd t d	}|t_|jrY|jt_|jr`|jt_|jrg|jt_|jd urp|jt_|jd ury|jt_|jd ur|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)r)   )mountshttp2c                 S  s   i | ]\}}|d ur||qS rC   r    ).0keyvaluer    r    r!   
<dictcomp>   s
    z_main.<locals>.<dictcomp>r/   ) rU   rk   r$   rZ   r[   r\   r)   
startswithr   httpxHTTPTransportProxyURLClientr   r5   http_clientr(   r&   r'   base_urlr*   r,   r+   r-   r.   rG   r   rd   itemsclose	Exception)rF   rh   rj   unknownproxiesr)   rp   ry   r    r    r!   rW      sp   







rW   __main__)r3   r4   )r3   r#   )rF   r4   r3   r_   rJ   )2
__future__r   rZ   loggingrK   typingr   r   r   r   typing_extensionsr   rt   r   r5    r	   r   r   _apir   _utilsr   _errorsr   r   _compatr   r   r   _modelsr   _exceptionsr   	getLoggerlogger	Formatter	formatterStreamHandlerr[   handlersetFormatter
addHandlerr   rU   r^   rk   rW   r   exitr    r    r    r!   <module>   s<    



 
@

F