a
    !f                     @  sD  d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	m
Z
mZ d dlmZ d dlmZ d dlZddlmZmZ ddlmZ e
rd d	lmZ d
ddddZG dd deZdddddZG dd deZdddddZdZddddZddddd Zddd!d"Zddd#d$Z dddd%d&d'Z!dS )(    )annotationsN)TYPE_CHECKINGList)Path)ArgumentParser   )CLIErrorSilentCLIError)	BaseModel)_SubParsersActionz!_SubParsersAction[ArgumentParser]None)	subparserreturnc                 C  s8   |  d}|jttdd |  d}|jttdd d S )NmigrateT)funcZ
args_modelZallow_unknown_argsgrit)
add_parserset_defaultsr   MigrateArgsr   GritArgs)r   sub r   Z/var/www/html/python-backend/venv/lib/python3.9/site-packages/openai/cli/_tools/migrate.pyregister   s    

r   c                   @  s   e Zd ZU g Zded< dS )r   	List[str]unknown_argsN__name__
__module____qualname__r   __annotations__r   r   r   r   r      s   
r   )argsr   c                 C  s<   t  }zt|g| j W n tjy6   t Y n0 d S )Ninstall
subprocess
check_callr   CalledProcessErrorr	   r!   Z	grit_pathr   r   r   r   $   s
    r   c                   @  s   e Zd ZU g Zded< dS )r   r   r   Nr   r   r   r   r   r   /   s   
r   c                 C  s@   t  }zt|ddg| j W n tjy:   t Y n0 d S )NapplyZopenair"   r'   r   r   r   r   4   s
    r   zcustodian-devr   )r   c                  C  s(   t jd} | d urt| S t d S )NXDG_CACHE_HOMEz.cache)osenvirongetr   home)Zxdgr   r   r   
_cache_dirD   s    r.   str)messager   c                 C  s(   t jdsd S tjd|  d d S )NDEBUGz	[DEBUG]: 
)r*   r+   r,   sysstdoutwrite)r0   r   r   r   _debugL   s    r6   c               	   C  s  t jdkrtdt jdkr dnd} t d }|d }|d }|d	 }|d
 }| rrt| d t j  |S td|  |jddd | r|	  t
 }td|  d|  d| }dt d| }t jd| d t }	|	|}
|
 }|d}|r8|D ]}t j| d qtdt||d d d d d  |d d d }td|  |	|}t|d*}| D ]}|| qW d    n1 s0    Y  W d    n1 s0    Y  |d! }|jddd t|d"}|| W d    n1 s(0    Y  | D ]}|||j  q:t| t| t|d# t j  |S )$z<Installs the Grit CLI and returns the location of the binarywin32z1Windows is not supported yet in the migration CLIdarwinZmacoslinuxzopenai-pythonz.installbinmarzanozmarzano.tmpz already existszUsing Grit CLI path: T)parentsexist_okzUsing architecture zmarzano--z"https://api.keygen.sh/v1/accounts/z/artifacts/z"Retrieving Grit CLI metadata from r2   errorsz3Could not locate Grit CLI binary - see above errorsdataZrelationshipsreleaseidlinksredirectzRedirect URL wbNzcli-binzr:gzi  )r3   platformr   r.   existsr6   r4   flushmkdirunlink	_get_archKEYGEN_ACCOUNTr5   httpxZClientr,   jsonwrite_manifestopenZ
iter_bytestarfile
extractalliterdirrenamenameshutilrmtreer*   removechmod)rF   dir_nameZinstall_dir
target_dirtarget_path	temp_filearch	file_nameZmeta_urlclientresponser@   r?   errorlinkZdownload_responsefilechunkZunpacked_dirarchiveitemr   r   r   r#   S   s^    






N*


r#   c                  C  s&   t   } ddddd}|| | S )Nx64armarm64)x86_64amd64armv7laarch64)rF   machinelowerr,   )architectureZarch_mapr   r   r   rK      s    rK   )install_pathrA   r   c                 C  sb   t | dd|did}t| d }t|d }tj||dd W d    n1 sT0    Y  d S )Nr;   )rU   rA   )ZinstallPathZbinarieszmanifests.jsonwr   )indent)r/   r   rP   rN   dump)rr   rA   manifestZmanifest_pathfr   r   r   rO      s    	rO   )"
__future__r   r*   r3   rN   rV   rQ   rF   r$   typingr   r   pathlibr   argparser   rM   _errorsr   r	   Z_modelsr
   r   r   r   r   r   r   rL   r.   r6   r#   rK   rO   r   r   r   r   <module>   s4   H