o
    QDi,                     @  s  d dl mZ d dlZd dlmZmZmZmZ d dlZd dl	m
Z
 d dl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mZ ddlmZ ddlmZ ddlmZ ddlmZm Z  ddl!m!Z! erlddl"m#Z# ddd^ddZ$ddddddddddd
d_d&d'Z%ddddddddd(d`d4d5Z&ddddd6dad:d;Z'		dbdcd=d>Z(d?d?dd?d@dddMdNZ)dOdPdedTdUZ*dVdPdedWdXZ+d?dYdfd\d]Z,dS )g    )annotationsN)TYPE_CHECKINGAnyListOptional)Console)escape)Panel)ProgressSpinnerColumn
TextColumn   )helpers)Check	Checklist)Detector)Dialect)FrictionlessException)PipelineStep)platform)Resource)pathsourcer   r   Optional[str]returnc                C  sH   | d u r|d u rt j st jj S t| tr"t| dkr"| d S | S )N   r   )sysstdinisattybufferread
isinstancelistlen)r   r    r%   U/var/www/Datamplify/venv/lib/python3.10/site-packages/frictionless/console/helpers.pycreate_source   s   
r'   )

descriptorheader_rowsheader_joincomment_charcomment_rowssheettablekeyskeyedcsv_delimiterr(   r)   r*   r+   r,   r-   r.   r/   r0   Optional[bool]r1   Optional[Dialect]c        
         C  s  t j}
t| } | rt| nt }|d urtj|td|_|d ur%||_	|d ur,||_
|d ur8tj|td|_|d urH|j|
j|d |S |d urX|j|
j|d |S |d us`|d uru|j|
jj|rmt|nd |d |S |	d ur|j|
jj|	d |S )N)convert)r-   )r.   )r/   r0   )	delimiter)r   frictionless_formatsr   parse_json_stringr   from_descriptorparse_csv_string_typedintr)   r*   r+   r,   controlsappendExcelControl
SqlControlJsonControlfrom_options
CsvControl)r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   formatsdialectr%   r%   r&   create_dialect+   s@   
rD   )buffer_sizesample_size
field_typefield_namesfield_confidencefield_float_numbersfield_missing_valuesschema_syncrE   Optional[int]rF   rG   rH   rI   Optional[float]rJ   rK   rL   r   c           	      C  s   t  }| d ur
| |_|d ur||_|d ur||_|d ur"t||_|d ur)||_|d ur0||_|d ur:t||_	|d urA||_
|S N)r   rE   rF   rG   r   r9   rH   rI   rJ   rK   rL   )	rE   rF   rG   rH   rI   rJ   rK   rL   detectorr%   r%   r&   create_detectorg   s(   rQ   )r(   checkspick_errorsskip_errorsrR   rS   rT   c                 C  sn   t | } | rt| nt }t |pg D ]
}|t| q|d ur+t ||_|d ur5t ||_	|S rO   )
r   r7   r   r8   parse_descriptors_string	add_checkr   r9   rS   rT   )r(   rR   rS   rT   	checklistcheckr%   r%   r&   create_checklist   s   
rY   stepsc                 C  sF   t | } | rt| nt }t |pg D ]
}|t| q|S rO   )r   r7   r   r8   rU   add_stepr   )r(   rZ   pipelinestepr%   r%   r&   create_pipeline   s
   
r^   F)fastuse_fallbackqsv_pathdebugconsoler   resourcer   databasestrr_   boolr`   ra   rb   	List[str]c             
     s6  t |tjjsd|j d}t|z[t }d|vr d| }tt	 t
d| | dd%  jd|j d	d d
 fdd}	|j||	|||d}
W d    n1 sVw   Y  |  j j d|j d |
W S  ty } z!|rt| ||d tjdd| d|j d g W  Y d }~S d }~ww )NzResource with data type "z" is not indexablez://z
sqlite:///z([progress.description]{task.description}T)redirect_stdoutredirect_stderr	transient\[[bold]z[/]] Indexing...)descriptiontotalc                   s    j d|  d| dS )Nrl   z[/]] Indexed )rm   )update)namemessageprogressstatusr%   r&   <lambda>   s    z index_resource.<locals>.<lambda>)database_urlon_progressr_   r`   ra   z in z seconds)	exceptionrb   r   )codez\[z	] errored)r"   r   frictionless_resources	Indexabledatatyper   r   Timerr
   r   r   add_taskrp   indexprinttasksrm   time	Exceptionprint_exceptiontyperExit)rc   rd   re   r_   r`   ra   rb   notetimerrw   namesrx   r%   rr   r&   index_resource   sJ   
 r   Success)titler   r   Nonec                C     t ||ddd}| | d S )Ngreenleftr   border_styletitle_alignr	   r   rc   r   r   panelr%   r%   r&   print_success     r   Errorc                C  r   )Nredr   r   r   r   r%   r%   r&   print_error  r   r   )rb   rx   r   c                C  s:   |r|    d S tt|}t|dddd}| | d S )Nr   r   r   r   )r   r   rf   r	   r   )rc   rx   rb   textr   r%   r%   r&   r     s   r   )r   r   r   r   r   r   )r(   r   r)   r   r*   r   r+   r   r,   r   r-   r   r.   r   r/   r   r0   r2   r1   r   r   r3   )rE   rM   rF   rM   rG   r   rH   r   rI   rN   rJ   r2   rK   r   rL   r2   r   r   )r(   r   rR   r   rS   r   rT   r   )NN)r(   r   rZ   r   )rc   r   rd   r   re   rf   r_   rg   r`   rg   ra   r   rb   rg   r   rh   )rc   r   r   rf   r   rf   r   r   )rc   r   rx   r   rb   r2   r   r   )-
__future__r   r   typingr   r   r   r   r   rich.consoler   rich.markupr   
rich.panelr	   rich.progressr
   r   r    r   rW   r   r   rP   r   rC   r   rx   r   r\   r   r   r   rd   r   r'   rD   rQ   rY   r^   r   r   r   r   r%   r%   r%   r&   <module>   sn    >85	