§
    }Štj+  ã            
       óž  — 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m	Z	 ddl
mZ ddlmZ erd dlZ ed¬¦  «         G d	„ d
¦  «        ¦   «         Zddœdedeez  dz  deeeef                  fd„Zdeddfd„Zdeez  dz  de	d         fd„Ze G d„ d¦  «        ¦   «         Ze G d„ d¦  «        ¦   «         Zdeez  dz  dee         fd„ZdS )é    N)Ú	dataclass)ÚTYPE_CHECKINGÚAnyÚUnioné   )Ú	constants)Ú	get_tokenT)Úfrozenc                   ó<   — e Zd ZU dZeed<   eed<   eed<   eed<   dS )ÚDatasetParquetEntryzDRepresents a single parquet file available for a dataset on the Hub.ÚconfigÚsplitÚurlÚsizeN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚstrÚ__annotations__Úint© ó    ú]/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/huggingface_hub/_dataset_viewer.pyr   r      s:   € € € € € € àNÐNà€K€K�KØ€J€J�JØ	€H€H�HØ
€I€I�I€I€Ir   r   ©ÚtokenÚ	sql_queryr   Úreturnc                óš  ‡— |                       ¦   «                              d¦  «                              ¦   «         }t          |¦  «         d }	 t          |¬¦  «        }|                     |¦  «        }|€t          d¦  «        ‚t          |t          ¦  «        r+|                     ¦   «         |�| 	                    ¦   «          S S t          d„ |j        D ¦   «         ¦  «        Št          d„ |                     ¦   «         D ¦   «         ¦  «        }ˆfd„|D ¦   «         |�| 	                    ¦   «          S S # |�| 	                    ¦   «          w w xY w)Nú;r   zSQL query must return rows.c              3   ó&   K  — | ]}|d          V — ŒdS )r   Nr   )Ú.0Úcolumns     r   ú	<genexpr>z(execute_raw_sql_query.<locals>.<genexpr>7   s&   è è € ÐIÐI¨&˜F 1œIÐIÐIÐIÐIÐIÐIr   c              3   ó4   K  — | ]}t          |¦  «        V — Œd S ©N)Útuple)r"   Úrows     r   r$   z(execute_raw_sql_query.<locals>.<genexpr>8   s(   è è € ÐCÐC¨�˜s™œÐCÐCÐCÐCÐCÐCr   c                 óJ   •— g | ]}t          t          ‰|¦  «        ¦  «        ‘Œ S r   )ÚdictÚzip)r"   r(   Úcolumnss     €r   ú
<listcomp>z)execute_raw_sql_query.<locals>.<listcomp>9   s+   ø€ Ð<Ð<Ð<°•D�˜W cÑ*Ô*Ñ+Ô+Ð<Ð<Ð<r   )ÚstripÚrstripÚ_raise_on_forbidden_queryÚ_get_duckdb_connectionÚsqlÚ
ValueErrorÚ
isinstanceÚ_DuckDBCliRelationÚexecuteÚcloser'   ÚdescriptionÚfetchall)r   r   Únormalized_queryÚ
connectionÚrelationÚrowsr,   s         @r   Úexecute_raw_sql_queryr>   '   sd  ø€ Ø —’Ñ(Ô(×/Ò/°Ñ4Ô4×:Ò:Ñ<Ô<ÐÝÐ.Ñ/Ô/Ð/à€JðÝ+°%Ð8Ñ8Ô8ˆ
Ø—>’>Ð"2Ñ3Ô3ˆØÐÝÐ:Ñ;Ô;Ð;å�hÕ 2Ñ3Ô3ð 	=à×#Ò#Ñ%Ô%ð Ð!Ø×ÒÑÔÐÐð "õ	 ÐIÐI°HÔ4HÐIÑIÔIÑIÔIˆGÝÐCÐC¨x×/@Ò/@Ñ/BÔ/BÐCÑCÔCÑCÔCˆDØ<Ð<Ð<Ð<°tÐ<Ñ<Ô<àÐ!Ø×ÒÑÔÐÐð "øˆ:Ð!Ø×ÒÑÔÐÐð "øøøs   ÁAD1 ÃAD1 Ä1E
Úqueryc                 ó   — t          | ¦  «        dk    rt          d¦  «        ‚|                      ¦   «         D ]V}|                     ¦   «         }|                     d¦  «        r+|dd…                              ¦   «         rt          d¦  «        ‚ŒWd S )Nr   zSQL query cannot be empty.ú.r   é   z8DuckDB CLI meta-commands are not allowed in SQL queries.)Úlenr3   Ú
splitlinesÚlstripÚ
startswithÚisalpha)r?   ÚlineÚstrippeds      r   r0   r0   ?   s›   € Ý
ˆ5�z„z�Q‚€ÝÐ5Ñ6Ô6Ð6ð × Ò Ñ"Ô"ð Yð YˆØ—;’;‘=”=ˆØ×Ò˜sÑ#Ô#ð 	Y¨°°1°¬×(=Ò(=Ñ(?Ô(?ð 	YÝÐWÑXÔXÐXøðYð Yr   )zduckdb.DuckDBPyConnectionÚ_DuckDBCliConnectionc                 ób  — 	 dd l }nN# t          $ rA}t          j        d¦  «        }|€t          d¦  «        |‚t	          || ¬¦  «        cY d }~S d }~ww xY w |j        ¦   «         }	 t          | ¦  «        D ]}|                     |¦  «         Œ|S # t          $ r | 	                    ¦   «          ‚ w xY w)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   )
rL   ÚImportErrorÚshutilÚwhichrJ   ÚconnectÚ_build_duckdb_secret_statementsr6   Ú	Exceptionr7   )r   rL   ÚerrorÚduckdb_binaryr;   Ú	statements         r   r1   r1   K   s  € ðLàˆˆˆˆøÝð Lð Lð Låœ XÑ.Ô.ˆØÐ ÝðUñô ð ðõ $°ÀUÐKÑKÔKÐKÐKÐKÐKÐKÐKøøøøðLøøøð  �”Ñ!Ô!€JðÝ8¸Ñ?Ô?ð 	*ð 	*ˆIØ×Ò˜yÑ)Ô)Ð)Ð)ØÐøÝð ð ð Ø×ÒÑÔÐØðøøøs&   ‚ ‡
A‘6AÁAÁAÁ%(B Â B.c                   óT   — e Zd ZU dZeed<   eez  dz  ed<   dd„Zdeddfd	„Zdd
„Z	dS )rJ   zjDuckDB connection.

    Mimics the DuckDB Python API, but runs the queries via the DuckDB CLI binary.
    rM   Nr   r   c                 ó8   — t          | j        ¦  «        | _        d S r&   )rR   r   Ú_setup_statements©Úselfs    r   Ú__post_init__z"_DuckDBCliConnection.__post_init__p   s   € Ý!@ÀÄÑ!LÔ!LˆÔÐÐr   r?   r5   c                 ó:   — t          | j        | j        |¬¦  «        S )N)rM   Úsetup_statementsr?   )r5   rM   rY   )r[   r?   s     r   r2   z_DuckDBCliConnection.sqls   s   € Ý!¨dÔ.>ÐQUÔQgÐotÐuÑuÔuÐur   c                 ó   — d S r&   r   rZ   s    r   r7   z_DuckDBCliConnection.closev   s   € Øˆr   )r   N)
r   r   r   r   r   r   Úboolr\   r2   r7   r   r   r   rJ   rJ   f   s˜   € € € € € € ðð ð
 ÐÐÑØ�‰:˜ÑÐÐÑðMð Mð Mð Mðv˜ð vÐ!5ð vð vð vð vðð ð ð ð ð r   rJ   c                   óf   — e Zd ZU dZeed<   ee         ed<   eed<   deeeef                  fd„Z	dS )r5   zhDuckDB relation.

    Mimics the DuckDB Python API, but runs the queries via the DuckDB CLI binary.
    rM   r^   r?   r   c                 óÎ  — g }| j         r#dt          j        › �gd„ | j         D ¦   «         ¢d‘}d                     || j        dz   gz   ¦  «        }t          j        | j        dg|ddd¬	¦  «        }|j        d
k    rC|j	         
                    ¦   «         p|j         
                    ¦   «         pd}t          |¦  «        ‚t          j        |j         
                    ¦   «         ¦  «        S )Nz.output c              3   ó    K  — | ]	}|› d �V — Œ
dS )r    Nr   )r"   Ústmts     r   r$   z-_DuckDBCliRelation.execute.<locals>.<genexpr>‹   s(   è è € Ð?Ð? �T�*�*�*Ð?Ð?Ð?Ð?Ð?Ð?r   z.outputú
r    z-jsonTF)ÚinputÚcapture_outputÚtextÚcheckr   zDuckDB CLI command failed.)r^   ÚosÚdevnullÚjoinr?   Ú
subprocessÚrunrM   Ú
returncodeÚstderrr.   ÚstdoutÚRuntimeErrorÚjsonÚloads)r[   ÚsetupÚ
full_queryÚresultÚerror_messages        r   r6   z_DuckDBCliRelation.execute…   s  € àˆØÔ ð 	à'�2œ:Ð'Ð'ðà?Ð?¨Ô)>Ð?Ñ?Ô?ðð ðˆEð
 —Y’Y˜u¨¬
°SÑ(8Ð'9Ñ9Ñ:Ô:ˆ
õ ”ØÔ˜wÐ'ØØØØð
ñ 
ô 
ˆð Ô Ò!Ð!Ø"œM×/Ò/Ñ1Ô1Ðj°V´]×5HÒ5HÑ5JÔ5JÐjÐNjˆMÝ˜}Ñ-Ô-Ð-õ Œz˜&œ-×-Ò-Ñ/Ô/Ñ0Ô0Ð0r   N)
r   r   r   r   r   r   Úlistr*   r   r6   r   r   r   r5   r5   z   so   € € € € € € ðð ð
 ÐÐÑØ˜3”iÐÐÑØ€J€J�Jð1˜˜d 3¨ 8œnÔ-ð 1ð 1ð 1ð 1ð 1ð 1r   r5   c                 ó¼   — | �| du rt          ¦   «         } | sg S |                      dd¦  «        }t          j                             dd¦  «        }d|› d|› d�d|› d�gS )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   rR   rR       s€   € Ø€}˜ ˜˜Ý‘”ˆàð Øˆ	à—M’M # tÑ,Ô,€MÝ Ô)×1Ò1°#°tÑ<Ô<ÐàxÈ=ÐxÐxÐdtÐxÐxÐxØXÀ}ÐXÐXÐXðð r   )rs   rj   rO   rm   Údataclassesr   Útypingr   r   r   Ú r   Úutilsr	   rL   r   r   r`   ry   r*   r>   r0   r1   rJ   r5   rR   r   r   r   ú<module>r„      s*  ðð €€€Ø 	€	€	€	Ø €€€Ø Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ð ð Ø€M€M€Mð €�$ÐÑÔðð ð ð ð ñ ô ñ Ôðð IMð ð ð  Sð °C¸$±JÀÑ4Eð ÐQUÐVZÐ[^Ð`cÐ[cÔVdÔQeð ð ð ð ð0	Y Sð 	Y¨Tð 	Yð 	Yð 	Yð 	YðØ�‰:˜Ñðà
Ð>Ô?ðð ð ð ð6 ðð ð ð ð ñ ô ñ „ðð& ð"1ð "1ð "1ð "1ð "1ñ "1ô "1ñ „ð"1ðJ¨3°©:¸Ñ+<ð ÀÀcÄð ð ð ð ð ð r   