
    *#h                     ,   d dl Z d dlmZ d dlmZmZmZmZmZm	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 erd dlZd dlZej,                  j.                  j1                  e      Ze G d dej6                               Z G d d	ej:                        Zy)
    N)	dataclass)TYPE_CHECKINGDictListOptionalTupleUnionrequire_storage_cast)
table_castc                   `    e Zd ZU dZdZeedf   ed<   dZeedddf   ed<   dZ	e
eeee   f      ed	<   d
Zeed<   dZe
eeeef      ed<   dZe
eeef      ed<   dZe
ee      ed<   dZe
e   ed<   dZe
ej.                     ed<   d Z	 ddede
ej.                     def fdZed        Z xZS )	SqlConfigzBuilderConfig for SQL.Nzsqlalchemy.sql.Selectablesqlzsqlalchemy.engine.Connectionzsqlalchemy.engine.Enginezsqlite3.Connectioncon	index_colTcoerce_floatparamsparse_datescolumnsi'  	chunksizefeaturesc                 `    | j                   t        d      | j                  t        d      y )Nzsql must be specifiedzcon must be specified)r   
ValueErrorr   selfs    ^/var/www/html/sandstorm/venv/lib/python3.12/site-packages/datasets/packaged_modules/sql/sql.py__post_init__zSqlConfig.__post_init__%   s3    8845588455     config_kwargscustom_featuresreturnc                    |j                         }|d   }t        |t              st        j                  j
                  rdt        j                  v rdd l}t        ||j                  j                        rU |j                  |d   j                  d      d   dz         }t        |j                  |j                              }||d<   n4t        dt!        |       d|       t        dt!        |       d|       |d   }t        |t              s0t#        |      |d<   t$        j'                  d	t!        |       d
       t(        | U  ||      S )Nr   
sqlalchemyr   r   z://)dialectzKSupported types for 'sql' are string and sqlalchemy.sql.Selectable but got z: zSQL connection 'con' of type zU couldn't be hashed properly. To enable hashing, specify 'con' as URI string instead.)r    )copy
isinstancestrdatasetsconfigSQLALCHEMY_AVAILABLEsysmodulesr#   r   
Selectablecreate_enginesplitcompiler$   	TypeErrortypeidloggerinfosupercreate_config_id)	r   r   r    r   r#   enginesql_strr   	__class__s	           r   r7   zSqlConfig.create_config_id+   sZ   
 &**, E"#s#338S!c:>>#<#<=5Z55mE6J6P6PQV6WXY6Z]b6bcF!#++fnn+"EFG+2M%(#efjknfoepprsvrwx   abfgjbkallnornst  E"#s##%c7M% KK/S	{  ;P  Q w''WWr   c                 z    | j                   | j                  | j                  | j                  | j                  d}|S )Nr   r   r   r   r   r<   )r   pd_read_sql_kwargss     r   r=   zSqlConfig.pd_read_sql_kwargsN   s;     ||kk --++
 "!r   N)__name__
__module____qualname____doc__r   r	   r'   __annotations__r   r   r   r   r   boolr   r   r   r   r   r   intr   r(   Featuresr   dictr7   propertyr=   __classcell__)r:   s   @r   r   r      s    37Cs//	07hlCs24NPdd	el15Ixc49n-.5L$15FHU4,-.5/3K%d
+,3#'GXd3i '%Ix}%,0Hhx(()06 8<!X!X "("3"34!X 
	!XF " "r   r   c                   Z    e Zd ZeZd Zd Zdej                  dej                  fdZ	d Z
y)Sqlc                 V    t        j                  | j                  j                        S )N)r   )r(   DatasetInfor)   r   r   s    r   _infoz	Sql._info]   s    ##T[[-A-ABBr   c                 b    t        j                  t         j                  j                  i       gS )N)name
gen_kwargs)r(   SplitGeneratorSplitTRAIN)r   
dl_managers     r   _split_generatorszSql._split_generators`   s"    ''X^^-A-AbQRRr   pa_tabler!   c                 x   | j                   j                  | j                   j                  j                  }t        d | j                   j                  j	                         D              r>t
        j                  j                  |D cg c]  }||j                      c}|      }|S t        ||      }|S c c}w )Nc              3   4   K   | ]  }t        |         y wr>   r
   ).0features     r   	<genexpr>z"Sql._cast_table.<locals>.<genexpr>f   s     b+G44bs   )schema)
r)   r   arrow_schemaallvaluespaTablefrom_arraysrP   r   )r   rW   r]   fields       r   _cast_tablezSql._cast_tablec   s    ;;+[[))66FbDKKDXDXD_D_Dabb88//SY0Z%%**1E0Zci/j  &h7	 1[s   B7c              #   ~  K   | j                   j                  }t        j                  | j                   j                  | j                   j
                  fd|i| j                   j                  }||gn|}t        |      D ]9  \  }}t        j                  j                  |      }|| j                  |      f ; y w)Nr   )r)   r   pdread_sqlr   r   r=   	enumeratera   rb   from_pandasre   )r   r   
sql_reader	chunk_idxdfrW   s         r   _generate_tableszSql._generate_tablesn   s     KK))	[[KKOOT[[__
8A
EI[[EcEc

 &/%6j\J
&z2 	8MIrxx++B/HT--h777	8s   B;B=N)r?   r@   rA   r   BUILDER_CONFIG_CLASSrN   rV   ra   rb   re   rn    r   r   rK   rK   Z   s4    $CS	BHH 	 	8r   rK   )r+   dataclassesr   typingr   r   r   r   r   r	   pandasrg   pyarrowra   r(   datasets.configdatasets.features.featuresr   datasets.tabler   sqlite3r#   utilslogging
get_loggerr?   r4   BuilderConfigr   ArrowBasedBuilderrK   rp   r   r   <module>r~      s~    
 ! D D     ; %  
			*	*8	4 ?"&& ?" ?"D8(
$
$ 8r   