
    h                         S SK r S SKJrJrJr  SSKJrJrJr  SSK	J
r
  SSKJr  SSKJr  SS	KJr  \(       a  S SKrS SKr " S
 S\5      r " S S5      rg)    N)TYPE_CHECKINGOptionalUnion   )DatasetFeaturesconfig)query_table)Sql)tqdm   )AbstractDatasetInputStreamc                   n   ^  \ rS rSr   SS\\S4   S\\SSS4   S\\   S	\S
\4
U 4S jjjr	S r
SrU =r$ )SqlDatasetReader   sqlzsqlalchemy.sql.Selectableconsqlalchemy.engine.Connectionsqlalchemy.engine.Enginesqlite3.Connectionfeatures	cache_dirkeep_in_memoryc                 V   > [         TU ]  " SX4US.UD6  [        SUUUUS.UD6U l        g )N)r   r   r   )r   r   r   r    )super__init__r   builder)selfr   r   r   r   r   kwargs	__class__s          I/home/james-whalen/.local/lib/python3.13/site-packages/datasets/io/sql.pyr   SqlDatasetReader.__init__   sE     	i(P^ibhi 
	

 
    c                     S nS nS nS nU R                   R                  UUUUS9  U R                   R                  SX0R                  S9nU$ )N)download_configdownload_modeverification_mode	base_pathtrain)splitr(   	in_memory)r   download_and_prepare
as_datasetr   )r   r&   r'   r(   r)   datasets         r"   readSqlDatasetReader.read$   sh     	))+'/	 	* 	
 ,,))->J]J] * 
 r$   )r   )NNF)__name__
__module____qualname____firstlineno__r   strr   r   boolr   r0   __static_attributes____classcell__)r!   s   @r"   r   r      ss    
 (,$
3334
 368RThhi
 8$	

 
 
 
$ r$   r   c                   v    \ rS rSr  SS\S\S\\SSS4   S	\\   S
\\   4
S jjr	S\4S jr
S rS\4S jrSrg)SqlDatasetWriter8   Nr/   namer   r   r   r   
batch_sizenum_procc                     Ub  US::  a  [        SU S35      eXl        X l        X0l        U(       a  UO[        R
                  U l        XPl        X`l        g )Nr   z	num_proc z must be an integer > 0.)	
ValueErrorr/   r=   r   r	   DEFAULT_MAX_BATCH_SIZEr>   r?   to_sql_kwargs)r   r/   r=   r   r>   r?   rC   s          r"   r   SqlDatasetWriter.__init__9   sP     HMy
2JKLL	(2*8U8U *r$   returnc                     U R                   R                  SS 5      nU R                   R                  SS 5      nU R                   R                  SS5      nU R                  " SSU0U R                   D6nU$ )Nr   r   indexFr   )rC   pop_write)r   _rG   writtens       r"   writeSqlDatasetWriter.writeL   sk    ""5$/""5$/""&&w6++@E@T-?-?@r$   c                 Z   Uu  p#nUS:  a  0 UESS0EOUn[        U R                  R                  [        X"U R                  -   5      U R                  R
                  S9nUR                  5       nUR                  " U R                  U R                  4SU0UD6nU=(       d    [        U5      $ )Nr   	if_existsappend)tablekeyindicesrG   )r
   r/   dataslicer>   _indices	to_pandasto_sqlr=   r   len)r   argsoffsetrG   rC   batchdfnum_rowss           r"   
_batch_sqlSqlDatasetWriter._batch_sqlT   s    '+$}DJQJ@=@+x@Ta,,##ft67LL))

 __99TYYOOO"3r7"r$   c                 d   SnU R                   b  U R                   S:X  aQ  [        [        S[        U R                  5      U R
                  5      SSS9 H  nX0R                  XAU45      -  nM     U$ [        U R                  5      U R
                  pe[        R                  " U R                   5       n[        UR                  U R                  [        SXV5       Vs/ s H  oDX4PM     sn5      XV-  (       a  XV-  S-   OXV-  SSS9 H  nX5-  nM	     SSS5        U$ s  snf ! , (       d  f       U$ = f)zrWrites the pyarrow table as SQL to a database.

Caller is responsible for opening and closing the SQL connection.
r   Nr   bazCreating SQL from Arrow format)unitdesc)totalrc   rd   )
r?   hf_tqdmrangerY   r/   r>   r_   multiprocessingPoolimap)r   rG   rC   rK   r[   r^   r>   pools           r"   rI   SqlDatasetWriter._write`   s    
 == DMMQ$6!aT\\*DOO<5
 ??F=+IJJ(  $'t||#4dooj %%dmm4 'IIFKAxFdeFdF%7Fde ;C:O81Q6U]Uk9!H 'G! 5  f	 54 s   1*D D()D D  
D/)r>   r   r/   r=   r?   rC   )NN)r2   r3   r4   r5   r   r6   r   r   intr   rL   r_   rI   r8   r   r$   r"   r;   r;   8   su     %)"&++ + 368RThhi	+
 SM+ 3-+&s 
# r$   r;   )rh   typingr   r   r    r   r   r	   
formattingr
   packaged_modules.sql.sqlr   utilsr   rf   abcr   sqlite3
sqlalchemyr   r;   r   r$   r"   <module>rv      sE     1 1 ( ( $ * # + $1 $ND Dr$   