
    Xjg                     
   d dl mZmZ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 d dlmZmZmZ d dlmZ d dlmZ  ee          Z e            Ze                    d	e
           ee           ee          fdedede
fd            Ze                    d	           ee          fdefd            Ze                    d           ee          fdedefd            Ze                    d           ee          fdedefd            Ze                    d           ed           ee          fdede dz  defd            Z!e                    d           ee           ee          fdededede
fd            Z"e                    d          ddd ee          fdede#de#d e#def
d!            Z$e                    d"           ee          fdedefd#            Z%e&                    d           ee           ee          fdedede
fd$            Z'e                    d%           ed&           ed           ee           ee          fded'e de dz  dede
f
d(            Z(dS ))    )	APIRouterDependsHTTPExceptionQuery)StreamingResponse)Session)Userget_current_user)get_db)DatasetCreateDatasetResponseSampleCreate)get_training_dataset_manager)
get_logger/)response_modeldatasetdbcurrent_userc                    K   t          |          }|                    | j        | j        pd| j        |j        | j                  }t                              |d                   	                    d           |S )N )namedescriptiondataset_type
created_bymetadataid
dataset_idzDataset created)
r   create_datasetr   r   r   r   r   loggerbindinfo)r   r   r   managerresults        E/lsinfo/ai/hellotax_ai/training_center/backend/app/api/v1/datasets.pyr    r       s      *2..G##7CVC\Z\krk  MY  M\  gn  gw#  x  xF
KK6$<K((--.?@@@M    c                    K   ddl m} |                     |                                          }t	          |           fd|D             S )Nr   TrainingDatasetc                 :    g | ]}                     |          S  _dataset_to_dict).0dr$   s     r&   
<listcomp>z!list_datasets.<locals>.<listcomp>   '    :::AG$$Q'':::r'   )
app.modelsr*   queryallr   )r   r*   datasetsr$   s      @r&   list_datasetsr7      s]      ******xx((,,..H*2..G::::::::r'   z/{dataset_id}r   c                   K   ddl m} |                    |                              |j        | k                                              }|st          dd          t          |          }|                    |          S )Nr   r)     Dataset not foundstatus_codedetail)	r3   r*   r4   filterr   firstr   r   r.   )r   r   r*   r   r$   s        r&   get_datasetr@      s      ******hh''../AZ/OPPVVXXG I4GHHHH*2..G##G,,,r'   z/{dataset_id}/versionsc                    K   ddl m} |                    |                              |j        | k                                              }t          |          fd|D             S )Nr   r)   c                 :    g | ]}                     |          S r,   r-   )r/   vr$   s     r&   r1   z get_versions.<locals>.<listcomp>-   r2   r'   )r3   r*   r4   r>   parent_version_idr5   r   )r   r   r*   versionsr$   s       @r&   get_versionsrF   (   st      ******xx((//0QU_0_``ddffH*2..G::::::::r'   z/{dataset_id}/samplesNsplitc                   K   ddl m} |                    |                              |j        | k              }|r|                    |j        |k              }|                                }t          |          fd|D             S )Nr   )DatasetSamplec                 :    g | ]}                     |          S r,   )_sample_to_dict)r/   sr$   s     r&   r1   zget_samples.<locals>.<listcomp>7   s'    8881G##A&&888r'   )r3   rI   r4   r>   r   rG   r5   r   )r   rG   r   rI   r4   samplesr$   s         @r&   get_samplesrN   /   s      ((((((HH]##**=+Cz+QRRE ;]0E9::iikkG*2..G88888888r'   samplec                    K   t          |          }	 |                    | |j        |j        |j        |j        |j                  S # t          $ r$}t          dt          |                    d d }~ww xY w)N)r   contentlabelrG   source_task_idr   r9   r;   )
r   
add_samplerQ   rR   rG   rS   r   
ValueErrorr   str)r   rO   r   r   r$   es         r&   rT   rT   9   s      *2..GF!!ZW]Wckqkw  IO  I^  io  ix!  y  y  	y F F FCFF;;;EFs   3A 
A5A00A5z/{dataset_id}/splitgffffff?g333333?train_ratiovalidation_ratio
test_ratioc                    K   t          |          }	 |                    | |||          S # t          $ r$}t          dt	          |                    d d }~ww xY w)Ni  r;   )r   split_datasetrU   r   rV   )r   rX   rY   rZ   r   r$   rW   s          r&   r\   r\   A   ss      *2..GF$$Z>NPZ[[[ F F FCFF;;;EFs   + 
AAAz/{dataset_id}/qualityc                    K   t          |          }	 |                    |           S # t          $ r$}t          dt	          |                    d d }~ww xY w)Nr9   r;   )r   get_quality_metricsrU   r   rV   )r   r   r$   rW   s       r&   r^   r^   I   sk      *2..GF**:666 F F FCFF;;;EFs   ( 
AAAc                   K   ddl m}m} |                    |                              |j        | k                                              }|st          dd          |                    |                              |j        | k              	                                 |	                    |           |
                                 t                              |                               d           ddiS )	Nr   )rI   r*   r9   r:   r;   r   zDataset deletedmessage)r3   rI   r*   r4   r>   r   r?   r   r   deletecommitr!   r"   r#   )r   r   r   rI   r*   r   s         r&   delete_datasetrc   Q   s      99999999hh''../AZ/OPPVVXXG I4GHHHHHH]""=#;z#IJJQQSSSIIgIIKKK
KK:K&&++,=>>>())r'   z/{dataset_id}/exportjsonformatc           	         K   t          |          }|                    | ||          }dddd}t          t          |g          |                    |d          dd|  d| i	          S )
Nzapplication/jsonzapplication/x-ndjsonztext/csv)rd   jsonlcsvz
text/plainzContent-Dispositionzattachment; filename=dataset_.)
media_typeheaders)r   export_datasetr   iterget)r   re   rG   r   r   r$   rQ   media_typess           r&   rl   rl   ]   s      *2..G$$Z??G-8NWabbKT7)__Q]9^9^i~  Av  ak  Av  Av  nt  Av  Av  iw  x  x  x  xr'   ))fastapir   r   r   r   fastapi.responsesr   sqlalchemy.ormr   app.api.depsr	   r
   app.core.databaser   app.schemasr   r   r   %app.services.training_dataset_managerr   common_loggingr   __name__r!   routerpostr    rn   r7   intr@   rF   rV   rN   rT   floatr\   r^   ra   rc   rl   r,   r'   r&   <module>r}      s    < < < < < < < < < < < < / / / / / / " " " " " " / / / / / / / / $ $ $ $ $ $ D D D D D D D D D D N N N N N N % % % % % %	H			S11=DWV__ahahiyazaz  - W \`    21 C$+GFOO ; ;G ; ; ; ; O3:76?? - -# -7 - - - - $%%4;GFOO ; ;3 ;G ; ; ; &%; #$$9>tRYRYZ`RaRa 9 9# 9cDj 9' 9 9 9 %$9 $%%HOPVlsls  uE  mF  mF F F Fl F Fgk F F F &%F "##<?Y]qu  DK  DK  LR  DS  DS F FC Fe FSX Fkp F  |C F F F $#F #$$;B76?? F F# F7 F F F %$F 6=gfooZaZabrZsZs 	* 	*S 	*g 	*UY 	* 	* 	*  	* "##6;eFmmW\W\]aWbWbpwpwx~pp  U\  U\  ]m  Un  Un x xS x# xCRVJ xho x  PT x x x $#x x xr'   