
    ՑiN              
       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4   S\\\\4      4S jjrS\SS4S jrS\	\\S4   S\	S   4S jr\ " S S5      5       r\ " S S5      5       rS\	\\S4   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       _/var/www/html/banglarbhumi/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>8   s     I4H&1I4H   c              3   8   #    U  H  n[        U5      v   M     g 7fN)tuple)r%   rows     r   r'   r(   9   s     C/Bs/Bs   )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##% ! "	 IH4H4HIIGCx/@/@/BCCD7;<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    
5zQ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   duckdbzDuckDB 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   L   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4   \S'   SS jr	S\SS	4S
 jr
SS jrSrg)rM   g   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__q   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.sqlt   s    !d.>.>QUQgQgotuur   c                     g r+   r   r^   s    r   r7   _DuckDBCliConnection.closew   s    r   )r]   )r!   N)r   r   r   r   r   r   r   r   boolr`   r2   r7   r   r   r   r   rM   rM   g   sB    
 dD!!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`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
 YYu

S(8'99:
 w'
 !"MM//1jV]]5H5H5JjNjM}-- zz&----/00r   r   N)r   r   r   r   r   r   r   listr:   r   r6   r   r   r   r   r5   r5   {   s7    
 3iJ1d38n- 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    }	MM#t,M ))11#t<
J=/Ycdtcuuwx
F}oUW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    	   ! , ,    $   NR S E#tT/4J VZ[_`ceh`h[iVj 0	YS 	YT 	YdD!
>?6   & "1 "1 "1J5dD+A d3i r   