ó
    pyüi+  ã            
       óh  • 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J	r	  SSK
Jr  SSKJr  \(       a  S SKr\" SS9 " S	 S
5      5       rSS.S\S\\-  S-  S\\\\4      4S jjrS\SS4S jrS\\-  S-  S\	S   4S jr\ " S S5      5       r\ " S S5      5       rS\\-  S-  S\\   4S jrg)é    N)Ú	dataclass)ÚTYPE_CHECKINGÚAnyÚUnioné   )Ú	constants)Ú	get_tokenT)Úfrozenc                   óB   • \ rS rSr% Sr\\S'   \\S'   \\S'   \\S'   Srg)	ÚDatasetParquetEntryé   zDRepresents a single parquet file available for a dataset on the Hub.ÚconfigÚsplitÚurlÚsize© N)	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__ÚstrÚ__annotations__ÚintÚ__static_attributes__r   ó    Ú\/home/mande/repo/quber/.venv/lib/python3.13/site-packages/huggingface_hub/_dataset_viewer.pyr   r      s   ‡ áNàƒKØƒJØ	ƒHØ
†Ir   r   ©ÚtokenÚ	sql_queryr   Úreturnc          	      ó`  • U R                  5       R                  S5      R                  5       n[        U5        S n [        US9nUR	                  U5      nUc  [        S5      e[        U[        5      (       a$  UR                  5       Ub  UR                  5         $ $ [        S UR                   5       5      n[        S UR                  5        5       5      nU Vs/ s H  n[        [        XW5      5      PM     snUb  UR                  5         $ $ s  snf ! Ub  UR                  5         f f = f)NÚ;r   zSQL query must return rows.c              3   ó*   #   • U  H	  oS    v •  M     g7f)r   Nr   )Ú.0Úcolumns     r   Ú	<genexpr>Ú(execute_raw_sql_query.<locals>.<genexpr>7   s   é € ÐIÒ4H¨& 1žIÒ4Hùó   ‚c              3   ó8   #   • U  H  n[        U5      v •  M     g 7f©N)Útuple)r%   Úrows     r   r'   r(   8   s   é € ÐCÒ/B¨œ˜sŸ˜Ò/Bùs   ‚)ÚstripÚrstripÚ_raise_on_forbidden_queryÚ_get_duckdb_connectionÚsqlÚ
ValueErrorÚ
isinstanceÚ_DuckDBCliRelationÚexecuteÚcloser,   ÚdescriptionÚfetchallÚdictÚzip)r    r   Únormalized_queryÚ
connectionÚrelationÚcolumnsÚrowsr-   s           r   Úexecute_raw_sql_queryrA   '   s  € Ø —‘Ó(×/Ñ/°Ó4×:Ñ:Ó<ÐÜÐ.Ô/à€JðÜ+°%Ñ8ˆ
Ø—>‘>Ð"2Ó3ˆØÑÜÐ:Ó;Ð;ä�hÔ 2×3Ñ3à×#Ñ#Ó%ð Ñ!Ø×ÑÕð "ô	 ÑI°H×4HÒ4HÓIÓIˆGÜÑC¨x×/@Ñ/@Ô/BÓCÓCˆDÙ7;Ó<²t°”Dœ˜WÓ*Ö+±tÑ<àÑ!Ø×ÑÕð "ùò =øàÑ!Ø×ÑÕð "ús%   ¼AD ÂA D ÃDÃ;D ÄD ÄD-Úqueryc                 óü   • [        U 5      S:X  a  [        S5      eU R                  5        HN  nUR                  5       nUR	                  S5      (       d  M+  USS R                  5       (       d  ME  [        S5      e   g )Nr   zSQL query cannot be empty.Ú.r   é   z8DuckDB CLI meta-commands are not allowed in SQL queries.)Úlenr3   Ú
splitlinesÚlstripÚ
startswithÚisalpha)rB   ÚlineÚstrippeds      r   r0   r0   ?   sj   € Ü
ˆ5ƒz�QƒÜÐ5Ó6Ð6ð × Ñ Ö"ˆØ—;‘;“=ˆØ×Ñ˜s×#Ó#¨°°1¨×(=Ñ(=×(?Ó(?ÜÐWÓXÐXò #r   )zduckdb.DuckDBPyConnectionÚ_DuckDBCliConnectionc                 óB  •  SS K nUR
                  " 5       n [        U 5       H  nUR                  U5        M     U$ ! [         a8  n[        R                  " S5      nUc  [        S5      Ue[	        X0S9s S nA$ S nAff = f! [         a    UR                  5         e f = f)Nr   Úduckdbz¤DuckDB is required for `hf datasets sql`. Install the Python package with `pip install duckdb` or install the DuckDB CLI binary (for example `brew install duckdb`).)Úbinary_pathr   )
rO   ÚImportErrorÚshutilÚwhichrM   ÚconnectÚ_build_duckdb_secret_statementsr6   Ú	Exceptionr7   )r   rO   ÚerrorÚduckdb_binaryr=   Ú	statements         r   r1   r1   K   s®   € ðLãð —’Ó!€JðÜ8¸Ö?ˆIØ×Ñ˜yÖ)ñ @àÐøô ó LäŸš XÓ.ˆØÑ ÜðUóð ðô $°ÑKÕKûðLûô  ó Ø×ÑÔØðús&   ‚= ˜$B ½
A?Á-A:Á4A?Á:A?ÂBc                   ó`   • \ rS rSr% Sr\\S'   \\-  S-  \S'   SS jrS\SS	4S
 jr	SS jr
Srg)rM   éf   zbDuckDB connection.

Mimics the DuckDB Python API, but runs the queries via the DuckDB CLI binary.
rP   Nr   r!   c                 ó8   • [        U R                  5      U l        g r+   )rU   r   Ú_setup_statements©Úselfs    r   Ú__post_init__Ú"_DuckDBCliConnection.__post_init__p   s   € Ü!@ÀÇÁÓ!LˆÕr   rB   r5   c                 ó@   • [        U R                  U R                  US9$ )N)rP   Úsetup_statementsrB   )r5   rP   r]   )r_   rB   s     r   r2   Ú_DuckDBCliConnection.sqls   s   € Ü!¨d×.>Ñ.>ÐQU×QgÑQgÐotÑuÐur   c                 ó   • g r+   r   r^   s    r   r7   Ú_DuckDBCliConnection.closev   s   € Ør   )r]   )r!   N)r   r   r   r   r   r   r   Úboolr`   r2   r7   r   r   r   r   rM   rM   f   s@   ‡ ñð
 ÓØ�‰:˜ÑÓôMðv˜ð vÐ!5ô v÷r   rM   c                   ó\   • \ rS rSr% Sr\\S'   \\   \S'   \\S'   S\\\\	4      4S jr
Srg	)
r5   éz   z`DuckDB relation.

Mimics the DuckDB Python API, but runs the queries via the DuckDB CLI binary.
rP   rc   rB   r!   c                 ó  • / nU R                   (       a)  S[        R                   3/S U R                    5       QSPnSR                  XR                  S-   /-   5      n[
        R                  " U R                  S/USSSS	9nUR                  S
:w  aO  UR                  R                  5       =(       d#    UR                  R                  5       =(       d    Sn[        U5      e[        R                  " UR                  R                  5       5      $ )Nz.output c              3   ó*   #   • U  H	  o S 3v •  M     g7f)r#   Nr   )r%   Ústmts     r   r'   Ú-_DuckDBCliRelation.execute.<locals>.<genexpr>‹   s   é € Ð?Ò)> �F˜!•*Ò)>ùr)   z.outputÚ
r#   z-jsonTF)ÚinputÚcapture_outputÚtextÚcheckr   zDuckDB CLI command failed.)rc   ÚosÚdevnullÚjoinrB   Ú
subprocessÚrunrP   Ú
returncodeÚstderrr.   ÚstdoutÚRuntimeErrorÚjsonÚloads)r_   ÚsetupÚ
full_queryÚresultÚerror_messages        r   r6   Ú_DuckDBCliRelation.execute…   sî   € àˆØ× × àœ2Ÿ:™:˜,Ð'ðá?¨×)>Ò)>Ó?ðð ðˆEð
 —Y‘Y˜u¯
©
°SÑ(8Ð'9Ñ9Ó:ˆ
ô —’Ø×Ñ˜wÐ'ØØØØñ
ˆð ×Ñ Ó!Ø"ŸM™M×/Ñ/Ó1×j°V·]±]×5HÑ5HÓ5J×jÐNjˆMÜ˜}Ó-Ð-ô �zŠz˜&Ÿ-™-×-Ñ-Ó/Ó0Ð0r   r   N)r   r   r   r   r   r   r   Úlistr:   r   r6   r   r   r   r   r5   r5   z   s7   ‡ ñð
 ÓØ˜3‘iÓØƒJð1˜˜d 3¨ 8™nÑ-÷ 1r   r5   c                 óº   • U b  U SL a
  [        5       n U (       d  / $ U R                  SS5      n[        R                  R                  SS5      nSU SU S3SU S3/$ )NTÚ'z''z@CREATE OR REPLACE SECRET hf_hub_token (TYPE HTTP, BEARER_TOKEN 'z
', SCOPE 'z')z<CREATE OR REPLACE SECRET hf_token (TYPE HUGGINGFACE, TOKEN ')r	   Úreplacer   ÚENDPOINT)r   Úescaped_tokenÚescaped_endpoints      r   rU   rU       sr   € Ø�}˜ šÜ“ˆæØˆ	à—M‘M # tÓ,€MÜ ×)Ñ)×1Ñ1°#°tÓ<Ðà
JÈ=È/ÐYcÐdtÐcuÐuwÐxØ
FÀ}ÀoÐUWÐXðð r   )r|   rs   rR   rv   Údataclassesr   Útypingr   r   r   Ú r   Úutilsr	   rO   r   r   rg   rƒ   r:   rA   r0   r1   rM   r5   rU   r   r   r   Ú<module>rŽ      s  ðó Û 	Û Û Ý !ß ,Ñ ,å Ý ö Ûñ �$Ñ÷ð ó ðð IMò  Sð °C¸$±JÀÑ4Eð ÐQUÐVZÐ[^Ð`cÐ[cÑVdÑQeõ ð0	Y Sð 	Y¨Tô 	YðØ�‰:˜Ñðà
Ð>Ñ?ôð6 ÷ð ó ðð& ÷"1ð "1ó ð"1ðJ¨3°©:¸Ñ+<ð ÀÀcÁõ r   