ó
    %ÑLjs  ã                   óÔ   • S r SSKrSSKrSSKrSSKrSSKrSSKrSSKJr  SSK	J
r
Jr  SSKJr  SSKJr  S rSS jrSS	 jrSS
 jrSS jrSS jrSS jrSS jr\S:X  a  \" 5         gg)z
CLI for the csvw package.
é    N)Úcolored)ÚCSVWÚ
TableGroup)ÚDatabase)Úmetadata2markdownc                 óŽ   • UcA  [         R                  " U S9nU H  u  pEUR                  " U0 UD6  M     UR                  5       $ U$ )z-Add custom arguments to the parser and parse.)Údescription)ÚargparseÚArgumentParserÚadd_argumentÚ
parse_args)ÚdescÚargsÚargspecsÚparserÚkwÚkwargss         Ú›C:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\csvw/__main__.pyÚparsed_argsr      sJ   € à�|Ü×(Ò(°TÑ:ˆÛ"‰JˆBØ×Ò Ð. vÔ.ñ #à× Ñ Ó"Ð"Ø€Kó    c                 óB   • U(       a  U $ [         R                  " U 5        g)z$We don't want to exit the test suiteN)ÚsysÚexit)ÚretÚtests     r   r   r      s   € æØˆ
Ü‡H‚HˆS…Mr   c           	      óà  • [         R                  " S5      nU(       d  [        S5      e[        [        R
                  U S/SS04S/SSS	.45      n S
S/nU R                  (       a   UR                  SSU R                  -  /5        Sn[        U R                  5      S:X  a)  SU R                  S   ;  a  SnUR                  SS/5        OUR                  SS/5        [        R                  " [        R                  " U/U-   U R                  -   5      5      nU(       a  U/SS.n[        R                  " U5      n[!        [        R"                  " UR%                  5       SS95        ['        SUS9$ )z9Describe a (set of) CSV file(s) with basic CSVW metadata.ÚfrictionlesszpThe frictionless command must be installed for this functionality!
Run `pip install frictionless` and try again.z--delimiterÚdefaultNÚ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   ÚcsvwdescribeÚ__doc__Ú	delimiterÚextendÚlenr   ÚjsonÚloadsÚ
subprocessÚcheck_outputr   Úfrom_frictionless_datapackageÚprintÚdumpsÚasdictr   )r   r   r   ÚfargsÚonefileÚdpÚtgs          r   r0   r0   #   sH  € ä—<’< Ó/€LÞÜð Ió Jð 	Jô Ü×ÑØØ
ˆ˜9 dÐ+Ð,Ø
ˆ˜CÐ)SÑTÐUó	€Dð ˜Ð"€EØ‡~‡~Ø�‰�kÐ#8¸4¿>¹>Ñ#IÐJÔKØ€GÜ
ˆ4�8‰8ƒ}˜Ó˜c¨¯©°!©Ó4Øˆð 	�‰�j %Ð(Õ)à�‰�h 	Ð*Ô+ä	�Š”J×+Ò+¨\¨N¸UÑ,BÀTÇXÁXÑ,MÓNÓ	O€BÞØ˜4¨NÑ;ˆä	×	1Ò	1°"Ó	5€BÜ	Œ$�*Š*�R—Y‘Y“[¨Ñ
+Ô,Ü�˜ÑÐr   c                 ó’  • [        [        R                  U S/SS04SS/SSS.4S	S
/SSSS.45      n Sn [        U R                  SU R
                  (       + S9nUR                  (       a  [        [        SSS/S95        OcSn[        [        SSS/S95        U R                  (       a;  UR                   H+  n[        [        [        UR                  5      S5      5        M-     [        X!S9$ ! [         aP  nSn[        [        SSS/S95        U R                  (       a  [        [        [        U5      S5      5         SnAN^SnAff = f)z;Validate a (set of) CSV file(s) described by CSVW metadata.Úurlr"   ú/URL or local path to CSV or JSON metadata file.z-vz	--verboseÚ
store_trueF)Úactionr   z-lz--laxzAllow null-valued foreign keys.)rE   r   r"   r   T)ÚvalidateÚstrictÚOKÚgreenÚbold)Úattrsr$   ÚFAILÚredÚblueé   Nr,   )r   Úcsvwvalidater1   r   rB   ÚlaxÚis_validr:   r   ÚverboseÚwarningsÚstrÚmessager/   r   )r   r   r   ÚcsvwÚwÚes         r   rP   rP   E   s(  € äÜ×ÑØØ
ˆ�6ÐLÐMÐNØ
�Ð	¨À%ÑHÐIØ
�ˆ \¸eØ#DñFð 	Gó€Dð €Cð+Ü�D—H‘H t¸¿¹´LÑAˆØ�=�=Ü”'˜$ °¨xÑ8Õ9àˆCÜ”'˜& %°¨xÑ8Ô9Ø�|�|ØŸœ�AÜœ'¤# a§i¡i£.°&Ó9Ö:ñ 'ô �ÑÐøô ó +ØˆÜŒg�f˜e¨F¨8Ñ4Ô5Ø�<�<Ü”'œ#˜a›& &Ó)Ô*ÿøð	+ús    µA
C, Â A#C, Ã,
EÃ6AEÅEc           
      ó’  • [        [        R                  U S/SS04SS/[        R                  [        R                  " S5      S.45      n Su  p#[        U R                  5      n[        UR                  U R                  U-  S	9nUR                  5         0 nS
 H,  nSU 3UR                  ;   d  M  UR                  SU 3   Xg'   M.     U R                  R                  U5      R                  [        R                  " USS95        SSU R                  U-   SU R                  U-   3SSS4 H  n[!        U5        M     [#        SUS9$ )z;Convert CSVW to data for datasette (https://datasette.io/).rB   r"   rC   z-oz--outdirÚ.)Útyper   )zdatasette.dbzdatasette-metadata.json)Úfname)Útitler	   Úlicensezdc:r)   r*   ÚRunz    datasette z --metadata zand open your browser atz    http://localhost:8001/zto browse the data.r   r,   )r   Úcsvw2datasetter1   ÚpathlibÚPathr   rB   r   Ú
tablegroupÚoutdirÚwrite_from_tgÚcommon_propsÚjoinpathÚ
write_textr5   r;   r:   r   )	r   r   ÚdbnameÚmdnamerW   ÚdbÚmdÚkÚlines	            r   ra   ra   b   s;  € äÜ×ÑØØ
ˆ�6ÐLÐMÐNØ
�
Ð	¤g§l¡l¼w¿|º|ÈCÓ?PÑQÐRó	€Dð ?�N€FÜ�—‘‹>€DÜ	�$—/‘/¨¯©°vÑ)=Ñ	>€BØ×ÑÔØ	€BÛ0ˆØ��ˆ9˜×)Ñ)Õ)Ø×%Ñ%¨¨A¨3 iÑ0ˆB‹Eñ 1ð 	‡K�K×Ñ˜Ó ×+Ñ+¬D¯JªJ°rÀ!Ñ,DÔEàØ
˜Ÿ™ vÑ-Ð.¨l¸4¿;¹;ÈÑ;OÐ:PÐQØ"Ø$Øóˆô 	ˆdŽñô �˜ÑÐr   c                 óØ   • [        [        R                  U S/SS045      n [        U R                  5      n[        [        R                  " UR                  5       SS95        [        SUS9$ )ú>Convert CSVW to JSON, see https://w3c.github.io/csvw/csv2json/rB   r"   rC   r)   r*   r   r,   )
r   Ú	csvw2jsonr1   r   rB   r:   r5   r;   Úto_jsonr   )r   r   rW   s      r   rr   rr   ~   s]   € äÜ×ÑØØ
ˆ�6ÐLÐMÐNó€Dô
 �—‘‹>€DÜ	Œ$�*Š*�T—\‘\“^¨AÑ
.Ô/Ü�˜ÑÐr   c                 óê   • [        [        R                  U S/SS04S/SS045      n [        R                  " U R
                  5      n[        X R                  5      nUR                  SS9  [        SUS	9$ )
zConvert CSVW to SQLiterB   r"   úã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.Úoutputz,Path for the generated SQLite database file.T)Ú_forcer   r,   )
r   Úcsvw2sqliter1   r   Ú	from_filerB   r   rv   rf   r   )r   r   r@   rl   s       r   rx   rx   Š   s‡   € äÜ×ÑØàˆGØð +ð ,ð	-ð ˆJØÐCÐDð	Fó€Dô 
×	Ò	˜dŸh™hÓ	'€BÜ	�"—k‘kÓ	"€BØ×Ñ˜DÐÑ!Ü�˜ÑÐr   c                 ó    • [        SU S/SS045      n [        R                  " U R                  5      n[	        [        USS95        [        SUS9$ )	zOCreate a Markdown document containing the CSVW metadata in human readable form.rq   rB   r"   ru   T)Ú
link_filesr   r,   )r   r   ry   rB   r:   r   r   )r   r   r@   s      r   Úcsvw2markdownr|   Ÿ   s\   € äØHØàˆGØð +ð ,ð	-ó	€Dô 
×	Ò	˜dŸh™hÓ	'€BÜ	Ô
˜B¨4Ñ
0Ô1Ü�˜ÑÐr   Ú__main__)F)NF)r1   r   r5   r-   rb   r
   r7   Ú	termcolorr   rW   r   r   Úcsvw.dbr   Úcsvw.metadata_utilsr   r   r   r0   rP   ra   rr   rx   r|   Ú__name__© r   r   Ú<module>rƒ      sg   ðñó Û Û Û Û Û å ç !Ý Ý 1òôôôD ô:ô8	ôô*ð" ˆzÓÙ…Kð r   