
    Pi                         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 d dlm	Z	m
Z
 d dlmZ d dlmZ d ZddZdd	Zdd
ZddZddZddZddZedk    r e             dS dS )    N)colored)CSVW
TableGroup)Database)metadata2markdownc                     |>t          j        |           }|D ]\  }} |j        |i | |                                S |S )N)description)argparseArgumentParseradd_argument
parse_args)descargsargspecsparserkwkwargss         a/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/csvw/__main__.pyparsed_argsr      s_    |(T:::" 	/ 	/JBF.v....  """K    Fc                 6    |r| S t          j        |            d S )N)sysexit)rettests     r   r   r      s      
HSMMMMMr   c           
         t          j        d          }|st          d          t          d| dgt	          d           fdgt	          dd	          f          } d
dg}| j        r|                    dd| j        z  g           d}t          | j                  dk    r)d| j        d         vrd}|                    ddg           n|                    ddg           t          j
        t          j        |g|z   | j        z                       }|rt	          |gd          }t          j        |          }t          t          j        |                                d                     t%          d|          S )NfrictionlesszpThe frictionless command must be installed for this functionality!
Run `pip install frictionless` and try again.z9Describe a (set of) CSV file(s) with basic CSVW metadata.z--delimiter)defaultcsv+z(CSV files to describe as CSVW TableGroup)nargshelpdescribez--jsonz	--dialectz{"delimiter": "%s"}F   *r   Tz--formatz--typepackagezdata-package)	resourcesprofile   indentr   )shutilwhich
ValueErrorr   dict	delimiterextendlenr   jsonloads
subprocesscheck_outputr   from_frictionless_datapackageprintdumpsasdictr   )r   r   r   fargsonefiledptgs          r   csvwdescriber@      s   <//L J I J J 	J C
$t,,,-
$S'QRRRS	 D "E~ Lk#84>#IJKKKG
48}}c!44 	j%())))h	*+++	J+\NU,BTX,MNN	O	OB :RD.999		1"	5	5B	$*RYY[[
+
+
+,,,r   c           
         t          d| dgt          d          fddgt          dd	          f          } d
}	 t          | j        d          }|j        r!t          t          dddg                     nbd}t          t          dddg                     | j        r9|j        D ]1}t          t          t          |j
                  d                     2nj# t          $ r]}d}t          t          dddg                     | j        r*t          t          t          |          d                     Y d }~nd }~ww xY wt          ||          S )Nz;Validate a (set of) CSV file(s) described by CSVW metadata.url/URL or local path to CSV or JSON metadata file.r"   z-vz	--verbose
store_trueF)actionr   r   T)validateOKgreenbold)attrsr$   FAILredblue   r,   )r   r0   r   rB   is_validr9   r   verbosewarningsstrmessager/   r   )r   r   r   csvwwes         r   csvwvalidaterX   ?   s{   E
$MNNNO
	d,FFFG	 D C+DHt,,,= 	;'$x8889999C'&%x888999| ; ; ;A'#ai..&99:::: + + +gfeF8444555< 	+'#a&&&))***	+
 $s   B C 
E%AD==Ec                    t          d| dgt          d          fddgt          t          j        t          j        d                    f          } d	\  }}t	          | j                  }t          |j        | j        |z  
          }|	                                 i }dD ]A}d
                    |          |j        v r#|j        d
                    |                   ||<   B| j                            |                              t          j        |d                     t!          d
                    | j        |z  | j        |z                       t#          d|          S )Nz;Convert CSVW to data for datasette (https://datasette.io/).rB   rC   rD   z-oz--outdir.)typer   )zdatasette.dbzdatasette-metadata.json)fname)titler	   licensezdc:{}r)   r*   zkRun
    datasette {} --metadata {}
and open your browser at
    http://localhost:8001/
to browse the data.
r   r,   )r   r0   pathlibPathr   rB   r   
tablegroupoutdirwrite_from_tgformatcommon_propsjoinpath
write_textr4   r:   r9   r   )r   r   dbnamemdnamerU   dbmdks           r   csvw2datasetterm   Y   sb   E
$MNNNO

	Tw|W\#=N=NOOOP	 D ?NFF>>D	$/v)=	>	>	>B	B0 9 9>>! 111%gnnQ&7&78BqEK  ++DJr!,D,D,DEEE	 
 F4;v!5668 8 8 r   c                     t          d| dgt          d          f          } t          | j                  }t	          t          j        |                                d                     t          d|          S )	N>Convert CSVW to JSON, see https://w3c.github.io/csvw/csv2json/rB   rC   rD   r)   r*   r   r,   )	r   r0   r   rB   r9   r4   r:   to_jsonr   )r   r   rU   s      r   	csvw2jsonrq   s   st    H
$MNNNO D
 >>D	$*T\\^^A
.
.
.///r   c           	         t          d| dgt          d          fdgt          d          f          } t          j        | j                  }t          || j                  }|                    d           t          d	|
          S )Nro   rB   URL or local path to CSVW metadata file describing a TableGroup.

Note that not all valid CSVW datasets can be converted to SQLite. One limitation is that all tables which are referenced by foreign keys must have a primary key.rD   outputz,Path for the generated SQLite database file.T)_forcer   r,   )	r   r0   r   	from_filerB   r   rt   rc   r   )r   r   r?   rj   s       r   csvw2sqliterw   ~   s    HG , - - -	. JDEEE	G D 
	dh	'	'B	"dk	"	"BD!!!r   c                     t          d| dgt          d          f          } t          j        | j                  }t          t          |d                     t          d|          S )	Nro   rB   rs   rD   T)
link_filesr   r,   )r   r0   r   rv   rB   r9   r   r   )r   r   r?   s      r   csvw2markdownrz      s{    HG , - - -	.	 	D 
	dh	'	'B	
B4
0
0
0111r   __main__)F)NF)r   r4   r-   r_   r
   r6   	termcolorr   rU   r   r   csvw.dbr   
csvw.utilsr   r   r   r@   rX   rm   rq   rw   rz   __name__ r   r   <module>r      sL   



               ! ! ! ! ! ! ! !       ( ( ( ( ( (        B       4   4      (     zIKKKKK r   