
    {h              
       P   d dl Z d dlm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  e       Z ej                         Z e	       Zdeej"                  j$                     defd	Zdeej"                  j$                     fd
ZdedefdZej/                  d       ej0                  d       ej2                  dd       ej2                  dd      fdedededdfd       Zej/                  d       ej0                  d       ej0                  d      fdededdfd       Zej/                  d       ej0                  d      fdeddfd       Zej/                  d        ej0                  d!      fdeddfd"       Zej/                  d#      d%d$       Zy)&    N)datetime)Literalcast)OpenAI)Console)Tablefilesreturnc                 p   t        d      }|j                  dd       |j                  dd       |j                  d	       |j                  d
       |j                  d       | D ]K  }|j                  |d   t        |d         t        t	        j
                  |d               |d   |d          M |S )NzOpenAI Files)titlezFile IDdim)stylezSize (bytes)right)justifyzCreation TimeFilenamePurposeidbytes
created_atfilenamepurpose)r   
add_columnadd_rowstrr   fromtimestamp)r	   tablefiles      U/var/www/html/hubwallet-dev/venv/lib/python3.12/site-packages/instructor/cli/files.pygenerate_file_tabler      s    E 
Ye,	^W5	_%	Z 	Y 
JW&&tL'9:;O	

 L    c                  x    t         j                  j                         } | j                  } t	        | d d      } | S )Nc                     | j                   S N)r   )xs    r   <lambda>zget_files.<locals>.<lambda>,   s
     r    T)keyreverse)clientr	   listdatasortedr	   s    r   	get_filesr-   )   s1    LLEJJE54dCELr    file_idc                 X    t         j                  j                  |       }|j                  S r#   )r(   r	   retrievestatus)r.   responses     r   get_file_statusr3   0   s     ||$$W-H??r    zWUpload a file to OpenAI's servers, will monitor the upload status until it is processed)helpzPath to the file to upload	fine-tunezPurpose of the file   zPolling interval in secondsfilepathr   pollc                    t        t        d   |      }t        | d      5 }t        j                  j                  ||      }d d d        d   }t        j                  d| d      5 }d|_        	 t        |      }|dk(  rt        j                  d	| d
       nt        j                  |       @	 d d d        y # 1 sw Y   zxY w# 1 sw Y   y xY w)N)r5   
assistantsrb)r   r   r   zMonitoring upload: ...dots	processed[bold green]File z uploaded successfully!)r   r   openr(   r	   createconsoler1   spinner_styler3   logtimesleep)	r7   r   r8   file_purposer   r2   r.   r1   file_statuss	            r   uploadrI   5   s      9:GDL	h	 H<<&&D,&GHtnG	-gYc:	; v%)'2Kk)/y8OPQJJt   H H s   "B;(A	C;CCz%Download a file from OpenAI's serverszID of the file to downloadz#Output path for the downloaded fileoutputc                 8   t         j                  d|  dd      5  t        j                  j	                  |       }t        |d      5 }|j                  |       d d d        t         j                  d|  d       d d d        y # 1 sw Y   +xY w# 1 sw Y   y xY w)Nz[bold green]Downloading file r<   r=   spinnerwbr?   z downloaded successfully!)rB   r1   r(   r	   downloadr@   writerD   )r.   rJ   contentr   s       r   rO   rO   L   s     
7yDf	U L,,''0&$ 	 4JJw	 'y0IJK	L L	  	 L Ls#   ,BB!BB		BBz#Delete a file from OpenAI's serverszID of the file to deletec                 J   t         j                  d|  dd      5  	 t        j                  j	                  |        t         j                  d|  d       	 d d d        y # t        $ r-}t         j                  d|  d|        Y d }~d d d        y d }~ww xY w# 1 sw Y   y xY w)	Nz[bold red]Deleting file r<   r=   rL   z[bold red]File z deleted successfully!z[bold red]Error deleting file z: )rB   r1   r(   r	   deleterD   	Exception)r.   es     r   rS   rS   Z   s     
27)3?	P 	LL(KK/'2HIJ   	KK8	A3GH 		 s.   B8A  	B)BBBBB"z0Monitor the status of a file on OpenAI's serversz%ID of the file to check the status ofc                     t         j                  d|  d      5 }	 t        |       }|j                  d|        |dv rnt	        j
                  d       :	 d d d        y # 1 sw Y   y xY w)NzMonitoring status of file r<   zFile status: )pendingr>   r6   )rB   r1   r3   updaterE   rF   )r.   r1   rH   s      r   r1   r1   g   sr     
4WISA	B f)'2KMMM+7866JJqM    s   <A  A)z"List the files on OpenAI's serversc                  T    t               } t        j                  t        |              y r#   )r-   rB   rD   r   r,   s    r   r)   r)   v   s     KEKK#E*+r    )r
   N)rE   r   typingr   r   openaityperr   rich.consoler   
rich.tabler   r(   TyperapprB   r)   types
FileObjectr   r-   r   r3   commandArgumentOptionintrI   rO   rS   r1    r    r   <module>rh      s            	ekkm
)tFLL$;$;<  ,4//0 S S 
 	b   #ENN(DE5<<2GHQ%BC  
	( 	0   "5>>'CD %..&KLLLL 
LL 	.   )%...HI C d  	;   "5>>'NO					 	-  ,,r    