
    A>i6                   N3   S SK Jr  S SKrS SKrS SKJrJrJrJr  S SKJ	r	  S SK
Jr  S SKJr  S SKrS SKJr  S SKrS SKrS SKrS SKJr  S S	KJr  S S
KJr  S SKJr  S SKJs  Jr   S SK!r"S SK!J#r#J$r$J%r%J&r&J'r'J(r(J)r)J*r*J+r+J,r,  S SK-J.r/  S SK0J1r1  S SK2J3r3  S SK4J5r5J6r6J7r7J8r8J9r9J:r:J;r;  \(       a  S SK<r<\Rz                  R}                  S5      \Rz                  R~                  /r@\R                  S 5       rBS rCGS0S jrDGS0S jrEGS0S jrFS rGGS1S jrHGS2S jrIGS2S jrJGS3S jrKS rLGS4S jrMGS5S jrN\R                  S 5       rO\R                  S 5       rP\R                  S  5       rQ\R                  S! 5       rR\R                  S" 5       rSS# rTS$ rU    GS6S& jrV    GS7S' jrW\R                  S( 5       rX\R                  S) 5       rY\R                  S* 5       rZ\R                  S+ 5       r[\R                  S, 5       r\\R                  S- 5       r]\R                  S. 5       r^\R                  S/ 5       r_\R                  S0 5       r`\R                  S1 5       ra\R                  S2 5       rb\R                  S3 5       rc\R                  S4 5       rd\R                  S5 5       re\R                  S6 5       rf\R                  S7 5       rg\R                  S8 5       rh\R                  S9 5       ri\R                  S: 5       rj\R                  S; 5       rk\R                  S< 5       rl\R                  S= 5       rm\R                  S> 5       rn\R                  S? 5       ro\R                  S@ 5       rp\R                  SA 5       rq\R                  SB 5       rr\R                  SC 5       rs\R                  SD 5       rt\R                  SE 5       ru\R                  " SF\Rz                  R                  SG9\R                  " SH\Rz                  R                  SG9/rx\R                  " SI\Rz                  R                  SG9\R                  " SJ\Rz                  R                  SG9/ry\R                  " SK\Rz                  R                  SG9\R                  " SL\Rz                  R                  SG9/rz\R                  " SM\Rz                  R                  SG9\R                  " SN\Rz                  R                  SG9/r{\R                  " SO\Rz                  R                  SG9\R                  " SP\Rz                  R                  SG9/r|\R                  " SQ\Rz                  R                  SG9\R                  " SR\Rz                  R                  SG9/r}/ SSQr~/ STQr/ SUQr\x\{-   \~-   r\y\|-   \-   r\z\}-   \-   rSV\R                  " SW\Rz                  R                  SG9/r\R                  " SX\Rz                  R                  SG9SY/r\R                  " SZ\Rz                  R                  SG9S[/r/ \QS\P\Qr/ \QS]P\Qr/ \QS^P\Qr\Rz                  GR                  S%\5      S_ 5       r\Rz                  GR                  S%\5      S` 5       r\Rz                  GR                  S%\5      Sa 5       r\Rz                  GR                  S%\5      Sb 5       r\Rz                  GR                  S%\5      \Rz                  GR                  ScSSd/5      Se 5       5       r\Rz                  GR                  S%\5      \Rz                  GR                  Sf/ SgQ5      Sh 5       5       r\Rz                  GR                  S%\5      Si 5       r\Rz                  GR                  S%\5      Sj 5       r\Rz                  GR                  S%\5      Sk 5       r\Rz                  GR                  S%\5      Sl 5       r\Rz                  GR                  S%\5      Sm 5       r\Rz                  GR                  S%\5      Sn 5       r\Rz                  GR                  S%\5      So 5       r\Rz                  GR                  S%\5      Sp 5       r\Rz                  GR                  S%\5      Sq 5       r\Rz                  GR                  S%\x5      Sr 5       r\Rz                  GR                  S%\{5      \Rz                  GR                  SsStSu/5      Sv 5       5       r\Rz                  GR                  S%\{5      Sw 5       r\Rz                  GR                  S%\5      Sx 5       r\Rz                  GR                  S%\x5      Sy 5       r\Rz                  GR                  S%\{5      Sz 5       rS{ rS| r\Rz                  GR                  S%\5      S} 5       r\Rz                  GR                  S%\5      S~ 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      \Rz                  GR                  SSS/5      \Rz                  GR                  S\3GRb                  SS4\3GRb                  SS4\3Rt                  SS4\3Rv                  SS4/5      S 5       5       5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      \Rz                  GR                  S/ SQ5      S 5       5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      \Rz                  GR                  SS\\\\S./5      S 5       5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       rS r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      \Rz                  GR                  SSSSSSSSSSSSSSS\\GR                  " \5      GR                  S:X  a  SOS4/5      S 5       5       r\Rz                  GR                  S%\5      \Rz                  GR                  SSS/5      S 5       5       rS r\ GR                  " S5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       rS r\ GR                  " S5      S 5       r\ GR                  " S5      S 5       rS rS rS r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S\5      S 5       r\Rz                  GR                  S\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\{5      \Rz                  GR                  SSS//5      S 5       5       r\Rz                  GR                  S%\{5      S 5       r\Rz                  GR                  S%\{5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      \Rz                  GR                  SS\GR                  /0S\GR                  * /0\GR                  * /S/S./5      S 5       5       Gr \Rz                  GR                  S%\5      S 5       Gr\Rz                  GR                  S%\5      S 5       Gr\Rz                  GR                  S%\5      GS  5       Gr\Rz                  GR                  S%\5      GS 5       Gr\Rz                  GR                  S%\5      GS 5       GrGS Gr\Rz                  GR                  S%\5      \Rz                  GR                  GSGSGS/5      GS 5       5       Gr\Rz                  GR                  S%\5      \Rz                  GR                  GSGSGS/5      GS	 5       5       Gr\Rz                  GR                  S%\5      \Rz                  GR                  GS/ GS
Q5      GS 5       5       Gr	\R                  GS8GS j5       Gr
\R                  GS 5       Gr\Rz                  GR                  S%\5      GS 5       Gr\Rz                  GR                  S%\5      \Rz                  GR                  GS\GR                  GS/5      \Rz                  GR                  GSGSGS/5      GS 5       5       5       GrGS GrGS GrGS GrGS GrGS Gr\R                  GS 5       GrGS Gr\Rz                  R                  GS 5       Gr\Rz                  R                  GS 5       GrGS GrGS Gr\Rz                  GR                  GSGSGS/5      GS  5       GrGS! GrGS" GrGS# GrGS$ GrGS% GrGS9GS& jGr GS' Gr!GS( Gr"GS) Gr#GS* Gr$GS+ Gr%GS, Gr&GS- Gr'GS. Gr(GS/ Gr)g(:      )annotationsN)datedatetimetime	timedelta)Decimal)StringIOPath)TYPE_CHECKING)using_string_dtype)lib)pa_version_under14p1)import_optional_dependency)
	DataFrameIndex
MultiIndexSeries	Timestampconcat
date_rangeisnato_datetimeto_timedelta)Version)sql)SQLAlchemyEngineSQLDatabaseSQLiteDatabase
get_enginepandasSQL_builderread_sql_queryread_sql_tablez=ignore:Passing a BlockManager to DataFrame:DeprecationWarningc                 &    SSSS.SSSS.SS	S
S.S.$ )Nz1SELECT * FROM iris WHERE Name=? AND SepalLength=?z7SELECT * FROM iris WHERE `Name`=%s AND `SepalLength`=%sz7SELECT * FROM iris WHERE "Name"=%s AND "SepalLength"=%s)sqlitemysql
postgresqlz]
                SELECT * FROM iris WHERE Name=:name AND SepalLength=:length
                zw
                SELECT * FROM iris WHERE
                `Name`=%(name)s AND `SepalLength`=%(length)s
                zw
                SELECT * FROM iris WHERE
                "Name"=%(name)s AND "SepalLength"=%(length)s
                z&SELECT * FROM iris WHERE Name LIKE '%'z(SELECT * FROM iris WHERE `Name` LIKE '%'z(SELECT * FROM iris WHERE "Name" LIKE '%')read_parametersread_named_parametersread_no_parameters_with_percent r+       W/var/www/html/land-tabula/venv/lib/python3.13/site-packages/pandas/tests/io/test_sql.pysql_stringsr.   C   sA     JNS
"
 ??F,
' r,   c                     SS K n SSK JnJnJnJnJnJn  [        U R                  5      [        S5      :  a  UOUnU" 5       nU" SUU" SU5      U" SU5      U" SU5      U" SU5      U" S	U" S
5      5      5      n	U	$ )Nr   )ColumnDoubleFloatMetaDataStringTablez2.0.0irisSepalLength
SepalWidthPetalLength
PetalWidthName   )	
sqlalchemyr0   r1   r2   r3   r4   r5   r   __version__)
r=   r0   r1   r2   r3   r4   r5   dtypemetadatar6   s
             r-   iris_table_metadatarA   `   s      j4459IIFuEzH}e$|U#}e$|U#vvc{#D Kr,   c                   SnU R                  5       nUR                  U5        UR                  S SS9 n[        R                  " U5      n[        U5        Sn/ nU Vs/ s H=  n[        US   5      [        US   5      [        US   5      [        US   5      US	   4PM?     nnUR                  X&5        S S S 5        UR                  5         U R                  5         g s  snf ! , (       d  f       N4= f)
NzCREATE TABLE iris (
            "SepalLength" REAL,
            "SepalWidth" REAL,
            "PetalLength" REAL,
            "PetalWidth" REAL,
            "Name" TEXT
        )utf-8newlineencodingz&INSERT INTO iris VALUES(?, ?, ?, ?, ?)r               )
cursorexecuteopencsvreadernextfloatexecutemanyclosecommit)conn	iris_filestmtcurcsvfilerO   recordsrows           r-   create_and_load_iris_sqlite3r\   y   s    D ++-CKK	w	77G$V7 	
  c!fc!fc!fc!fA  	 	
 	&# 
8$ IIKKKM	
 
8	7s   *C#AC"C#C##
C1c                   SnU R                  5        nUR                  U5        UR                  S SS9 n[        R                  " U5      n[        U5        SnU Vs/ s H=  n[        US   5      [        US   5      [        US   5      [        US   5      US	   4PM?     nnUR                  X'5        S S S 5        S S S 5        U R                  5         g s  snf ! , (       d  f       N,= f! , (       d  f       N5= f)
NzCREATE TABLE iris (
            "SepalLength" DOUBLE PRECISION,
            "SepalWidth" DOUBLE PRECISION,
            "PetalLength" DOUBLE PRECISION,
            "PetalWidth" DOUBLE PRECISION,
            "Name" TEXT
        )rC   rD   z+INSERT INTO iris VALUES($1, $2, $3, $4, $5)r   rG   rH   rI   rJ   )	rK   rL   rM   rN   rO   rP   rQ   rR   rT   )rU   rV   rW   rX   rY   rO   r[   rZ   s           r-   create_and_load_iris_postgresqlr^      s    D 
#D^^D7^;wZZ(FL@D "	 "C #a&M#a&M#a&M#a&MF "  	 OOD*! < 
( 	KKM	 <; 
s5   "C+(CAC!C4C+C
C(	$C++
C9c           
        SSK Jn  [        5       nUR                  S SS9 n[        R
                  " U5      n[        U5      nU Vs/ s H  n[        [        Xg5      5      PM     nnU" U5      R                  U5      n	U R                  5        n
UR                  U
SS9  UR                  U
S9  U
R                  U	5        S S S 5        S S S 5        g s  snf ! , (       d  f       N= f! , (       d  f       g = f)Nr   insertrC   rD   T
checkfirstbind)r=   ra   rA   rM   rN   rO   rP   dictzipvaluesbegindropcreaterL   )rU   rV   ra   r6   rY   rO   headerr[   paramsrW   cons              r-   create_and_load_irisro      s    ! D	w	77G$f4:;FS$s6'(F;d|""6*ZZ\SIIcdI+KKSK!KK  
8	7 <\ 
8	7s5   &C&C%)C&1C?C&C&
C#	C&&
C4c                
   Sn[        U [        R                  5      (       a"  U R                  5       nUR	                  U5        g [        SSS9nU(       aU  [        XR                  5      (       a;  U R                  5        nUR	                  U5        S S S 5        U R                  5         g SSKJn  U" U5      nU R                  5        nUR	                  U5        S S S 5        g ! , (       d  f       NX= f! , (       d  f       g = f)Nz+CREATE VIEW iris_view AS SELECT * FROM irisadbc_driver_manager.dbapiignoreerrorsr   text)

isinstancesqlite3
ConnectionrK   rL   r   rT   r=   rv   ri   )rU   rW   rX   adbcrv   rn   s         r-   create_and_load_iris_viewr{      s    8D$**++kkmD)*EhWJt__55#D! KKM':DD!   s   ?C#C4#
C14
Dc                   SSK JnJnJnJnJnJnJnJn  U S:X  a  UOUn	U S:X  a  UOUn
U" 5       nU" SUU" SU5      U" SU	5      U" SU5      U" SU5      U" S	U5      U" S
U5      U" SU
5      U" SU5      U" SU
5      5      nU$ )Nr   )TEXTBooleanr0   DateTimer2   Integerr3   r5   r%   typesTextColDateCol
IntDateColIntDateOnlyColFloatColIntColBoolColIntColWithNullBoolColWithNull)	r=   r}   r~   r0   r   r2   r   r3   r5   )dialectr}   r~   r0   r   r2   r   r3   r5   	date_type	bool_typer@   r   s                r-   types_table_metadatar      s    	 	 	  8+I"h.GIzHy$y)$|W%)z5!x!y)$) ),E  Lr,   c                h   SnSn[        U [        R                  5      (       a3  U R                  5       nUR	                  U5        UR                  X15        g U R                  5        nUR	                  U5        UR                  X15        S S S 5        U R                  5         g ! , (       d  f       N= f)Na  CREATE TABLE types (
                    "TextCol" TEXT,
                    "DateCol" TEXT,
                    "IntDateCol" INTEGER,
                    "IntDateOnlyCol" INTEGER,
                    "FloatCol" REAL,
                    "IntCol" INTEGER,
                    "BoolCol" INTEGER,
                    "IntColWithNull" INTEGER,
                    "BoolColWithNull" INTEGER
                )ze
                INSERT INTO types
                VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)
                )rw   rx   ry   rK   rL   rR   rT   )rU   
types_datarW   ins_stmtrX   s        r-   create_and_load_types_sqlite3r      s    
DH
 $**++kkmD-[[]cKKOOH1  		 ]s   '#B##
B1c                    U R                  5        nSnUR                  U5        SnUR                  X15        S S S 5        U R                  5         g ! , (       d  f       N= f)Na  CREATE TABLE types (
                        "TextCol" TEXT,
                        "DateCol" TIMESTAMP,
                        "IntDateCol" INTEGER,
                        "IntDateOnlyCol" INTEGER,
                        "FloatCol" DOUBLE PRECISION,
                        "IntCol" INTEGER,
                        "BoolCol" BOOLEAN,
                        "IntColWithNull" INTEGER,
                        "BoolColWithNull" BOOLEAN
                    )zy
                INSERT INTO types
                VALUES($1, $2::timestamp, $3, $4, $5, $6, $7, $8, $9)
                )rK   rL   rR   rT   )rU   r   rX   rW   s       r-    create_and_load_types_postgresqlr     sO    	#
 	D
 	)' 
* 	KKM+ 
s   'A
Ac                >   SSK Jn  SSKJn  [	        U5      nU" U5      R                  U5      n[        X5      (       ac  U R                  5        n U R                  5          UR                  U SS9  UR                  U S9  U R                  U5        S S S 5        S S S 5        g U R                  5          UR                  U SS9  UR                  U S9  U R                  U5        S S S 5        g ! , (       d  f       Na= f! , (       d  f       g = f! , (       d  f       g = f)Nr   r`   EngineTrb   rd   )r=   ra   sqlalchemy.enginer   r   rh   rw   connectri   rj   rk   rL   )rU   r   r   ra   r   r   rW   s          r-   create_and_load_typesr   6  s    !( )E%=
+D$\\^t

4D
1$'T"  ^ ZZ\JJtJ-LLdL#LL \  ^ \s0   C= 1C,C=21D,
C:	6C==
D
Dc                   SSK JnJnJnJnJn  SSKJn  U" 5       nU" SXq" SU" SS95      5      nSS0SS	0/n	U" U5      R                  U	5      n
[        X5      (       ac  U R                  5        n U R                  5          UR                  U SS
9  UR                  U S9  U R                  U
5        S S S 5        S S S 5        OIU R                  5          UR                  U SS
9  UR                  U S9  U R                  U
5        S S S 5        [        SSS9[        SSS9/n[!        USS9R#                  S5      $ ! , (       d  f       N= f! , (       d  f       NL= f! , (       d  f       N]= f)Nr   )r0   r   r3   r5   ra   r   datetzDateColWithTzT)timezonez2000-01-01 00:00:00-08:00z2000-06-01 00:00:00-07:00rb   rd   z2000-01-01 08:00:00UTCtzz2000-06-01 07:00:00nameM8[us, UTC])r=   r0   r   r3   r5   ra   r   r   rh   rw   r   ri   rj   rk   rL   r   r   astype)rU   r0   r   r3   r5   ra   r   r@   r   datetz_datarW   expected_datas               r-   create_and_load_postgres_datetzr   J  sJ     )zH8XvoxQU?V'WXF 8	
 8	
	K &>  -D$\\^tDT24(T"  ^ ZZ\KKK.MMtM$LL  	'E2'E2M -o6==mLL'  ^ \s0   /E	 1D81E	1E8
E	E		
E
E(c           	     &   U R                   R                  S   R                  nU R                  S   n[        U[        R
                  5      (       d   e[        R                  " U[        / SQU R                  SS95        U R                  S;   d   eg )Nr   ffffff@g      @gffffff?皙?Iris-setosa)indexr   ))      )   r   )dtypesiloctype
issubclassnpfloatingtmassert_series_equalr   columnsshape)framepytyper[   s      r-   check_iris_framer   w  sw    \\q!&&F
**Q-Cfbkk****V7u}}STU ;;,,,,r,   c                   SU 3n[        SSS9n[        U [        R                  5      (       a2  U R	                  5       nUR                  U5      R                  5       S   $ U(       aX  [        XR                  5      (       a>  U R	                  5        nUR                  U5        UR                  5       S   sS S S 5        $ SSKJn  SSK	J
n  [        U [        5      (       aR   U" U 5      nUR                  5        n U R                  U5      R                  5       sS S S 5        UR                  5         $ [        X5      (       a9  U R                  5        n U R                  U5      R                  5       sS S S 5        $ U R                  U5      R                  5       $ ! , (       d  f       g = f! , (       d  f       O= f UR                  5         g ! WR                  5         f = f! , (       d  f       g = f)Nz SELECT count(*) AS count_1 FROM rq   rr   rs   r   )create_enginer   )r   rw   rx   ry   rK   rL   fetchoner=   r   r   r   strr   exec_driver_sql
scalar_onedispose)rU   
table_namerW   rz   rX   r   r   engines           r-   
count_rowsr     so   -j\:D%&A(SD$**++kkm{{4 ))+A..	*T??33[[]cKK<<>!$ ] 	-,dC  !&t,^^%//5@@B &%  %%4++D1<<>   ''-88::% ] &%%   s<   $F"G :F,	G G$
F),
F:6G G!$
G2c                .    U " SSSS5      n[        U5      $ )NiodatarN   ziris.csvr
   )datapath	iris_paths     r-   r   r     s    vuj9I	?r,   c                 2    SSSSSSSSSS.	SS	S
SSSSS S S.	/$ )Nfirst2000-01-03 00:00:00i wi2g333333$@rG   F	r   r   r   r   r   r   r   r   r   2000-01-04 00:00:00i 'Pi\2r+   r+   r,   r-   r   r     sP     ,#&$
	
 ,$&"#
	
 r,   c           
     r    SSSSSSSSSS.	n[        U 5      nX!R                  5          R                  U5      $ )Nr   int64rQ   r   )r   keysr   )r   r   dfs      r-   types_data_framer     sL     !!"
F 
:	Bkkm##F++r,   c                 $    / SQn / SQn[        XS9$ )N)r   ABCD))r   gN\^?g9\x`|@g% TO׿g(nI)r   g}C?c^Vg~q"BĿg4?)2000-01-05 00:00:00gGͿ?2r¹e?g>ݦ4gёR?)2000-01-06 00:00:00g?{mX?$?gnk3Am?g
S?r   r   r   r   s     r-   test_frame1r     s    +GD< T++r,   c                 $    / SQn / SQn[        XS9$ )N)r   r   r   ))r   igZ)r   ir   )r   i N  r   )r   i͏r   r   r   r   s     r-   test_frame3r     s    !GD T++r,   c                8   [        U [        R                  5      (       a4  U R                  S5      nUR	                  5        Vs/ s H  o"S   PM	     sn$ [        SSS9nU(       a  [        XR                  5      (       a|  / nU R                  5       R                  5       R                  5       nU HF  nUS     US    H5  nUS     US	    H$  nUS
   S:X  d  M  US   n	UR                  U	5        M&     M7     MH     U$ SSK
Jn
  U
" U 5      R                  5       $ s  snf )Nz0SELECT name FROM sqlite_master WHERE type='view'r   rq   rr   rs   catalog_namecatalog_db_schemasdb_schema_namedb_schema_tables
table_typeviewr   inspect)rw   rx   ry   rL   fetchallr   adbc_get_objectsread_all	to_pylistappendr=   r   get_view_names)rU   cr   rz   resultsinfocatalogschematable	view_namer   s              r-   get_all_viewsr      s   $**++LLKL$%JJL1LDQL11)*EhWJt__55G((*335??AD'%&:;F+,!'(:!; .&8(-l(;I#NN95 "< <   N*4=//11' 2s   Dc                $   [        U [        R                  5      (       a4  U R                  S5      nUR	                  5        Vs/ s H  o"S   PM	     sn$ [        SSS9nU(       a  [        XR                  5      (       ar  / nU R                  5       R                  5       R                  5       nU H<  nUS    H0  nUS    H$  nUS   S	:X  d  M  US
   nUR                  U5        M&     M2     M>     U$ SSK
Jn	  U	" U 5      R                  5       $ s  snf )Nz1SELECT name FROM sqlite_master WHERE type='table'r   rq   rr   rs   r   r   r   r   r   r   )rw   rx   ry   rL   r   r   r   r   r   r   r=   r   get_table_names)
rU   r   r   rz   r   r   r   r   r   r   s
             r-   get_all_tablesr    s    $**++LLLM&'jjl3lUal33)*EhWJt__55G((*335??AD%&:;F!'(:!; .'9).|)<J#NN:6 "< <   N*4=0022% 4s   DrU   c                `   [        U[        R                  5      (       a9  UR                  S[        R
                  " U 5       35        UR                  5         g [        SSS9nU(       aI  [        XR                  5      (       a/  UR                  5        nUR                  SU  S35        S S S 5        g UR                  5        n[        R                  " U5       nUR                  U 5        S S S 5        S S S 5        g ! , (       d  f       g = f! , (       d  f       N(= f! , (       d  f       g = f)NzDROP TABLE IF EXISTS rq   rr   rs   zDROP TABLE IF EXISTS "")rw   rx   ry   rL   r   _get_valid_sqlite_namerT   r   rK   ri   r   
drop_table)r   rU   rz   rX   rn   dbs         r-   r  r  1  s     $**++,S-G-G
-S,TUV **EhWJt__55#4ZLBC  __S)RMM*- *   *) s0   C=DD,D=
D
D	D
D-c                   SS K n[        U[        R                  5      (       a9  UR	                  S[
        R                  " U 5       35        UR                  5         g [        SSS9nU(       aI  [        XR                  5      (       a/  UR                  5        nUR	                  SU  S35        S S S 5        g UR                  R                  R                  R                  U 5      nUR                  " SU 35      nUR                  5        nUR	                  U5        S S S 5        g ! , (       d  f       g = f! , (       d  f       g = f)Nr   zDROP VIEW IF EXISTS rq   rr   rs   zDROP VIEW IF EXISTS "r  )r=   rw   rx   ry   rL   r   r  rT   r   rK   r   r   identifier_preparerquote_identifierrv   ri   )r   rU   r=   rz   rX   quoted_viewrW   rn   s           r-   	drop_viewr  D  s     $**+++C,F,Fy,Q+RST)*EhWJt__55#3I;a@A  ++--AARRK ??%9+#GHDD!   s   D&D7&
D47
Ec               #    #    [         R                  " S5      n [         R                  " S5      nU R                  " SSUR                  R                  R
                  0U R                  R                  S9nUv   [        U5       H  n[        X25        M     [        U5       H  n[        XB5        M     UR                  5         g 7f)Nr=   pymysqlz*mysql+pymysql://root@localhost:3306/pandasclient_flag)connect_args	poolclass)pytestimportorskipr   	constantsCLIENTMULTI_STATEMENTSpoolNullPoolr   r  r  r  r   )r=   r  r   r   tbls        r-   mysql_pymysql_enginer  [  s     $$\2J!!),G%%4#W%6%6%=%=%N%NO//**F
 Lf%$ &f%3 &
NNs   CCc                2    [        X5        [        U 5        U $ Nro   r{   )r  r   s     r-   mysql_pymysql_engine_irisr  l  s    -923r,   c                    [        XS5        U $ )Nr&   r   )r  r   s     r-   mysql_pymysql_engine_typesr   s  s    .GDr,   c              #  h   #    U R                  5        nUv   S S S 5        g ! , (       d  f       g = f7fr  r   )r  rU   s     r-   mysql_pymysql_connr#  y  s#     		%	%	'4
 
(	'	'   2!	2
/2c              #  h   #    U R                  5        nUv   S S S 5        g ! , (       d  f       g = f7fr  r"  )r  rU   s     r-   mysql_pymysql_conn_irisr&    s#     	"	*	*	,
 
-	,	,r$  c              #  h   #    U R                  5        nUv   S S S 5        g ! , (       d  f       g = f7fr  r"  )r   rU   s     r-   mysql_pymysql_conn_typesr(    #     	#	+	+	-
 
.	-	-r$  c               #  J  #    [         R                  " S5      n [         R                  " S5        U R                  " SU R                  R                  S9nUv   [        U5       H  n[        X!5        M     [        U5       H  n[        X15        M     UR                  5         g 7f)Nr=   psycopg2z=postgresql+psycopg2://postgres:postgres@localhost:5432/pandasr  
r  r  r   r  r  r   r  r  r  r   )r=   r   r   r  s       r-   postgresql_psycopg2_enginer.    s     $$\2J

#%%G//**F Lf%$ &f%3 &
NNs   B!B#c                2    [        X5        [        U 5        U $ r  r  )r.  r   s     r-   postgresql_psycopg2_engine_irisr0    s    3?89%%r,   c                    [        XS5        U $ )Npostgresr  )r.  r   s     r-    postgresql_psycopg2_engine_typesr3    s    4*M%%r,   c              #  h   #    U R                  5        nUv   S S S 5        g ! , (       d  f       g = f7fr  r"  )r.  rU   s     r-   postgresql_psycopg2_connr5    r)  r$  c               #  f  #    [         R                  " S5        [         R                  " S5        SSKJn   SnU R	                  U5       nUv   [        U5       H  n[        X25        M     [        U5       H  n[        XB5        M     UR                  5         S S S 5        g ! , (       d  f       g = f7f)Npyarrowadbc_driver_postgresqlr   dbapiz4postgresql://postgres:postgres@localhost:5432/pandas)
r  r  r8  r:  r   r   r  r  r  rT   )r:  urirU   r   r  s        r-   postgresql_adbc_connr<    s     
	"
01,
@C	s	t
!$'Dd! (!$'Cs! ( 
		s   AB1AB 	B1 
B.*B1c                    SS K nU n UR                  S5         UR                  S5        U$ ! UR                   a    UR                  5         [	        X15         NAf = f! UR                   a    UR                  5         [        U5         U$ f = fNr   r6   	iris_view)adbc_driver_manageradbc_get_table_schemaProgrammingErrorrollbackr^   r{   )r<  r   mgrrU   s       r-   postgresql_adbc_irisrE    s    %D9""6*("";/ K  9'89
  (!$'K(    - A +AA+BBc                    SS K nU n UR                  S5        U$ ! UR                   aN    UR                  5         U Vs/ s H  n[	        UR                  5       5      PM     Os  snf nn[        X55         U$ f = f)Nr   r   )r@  rA  rB  rC  tuplerh   r   )r<  r   rD  rU   entrynew_datas         r-   postgresql_adbc_typesrK    ss    %D9""7+ K  97ABzeE%,,.)zBB(8K9s    $A9#A#"A98A9c              #  h   #    U R                  5        nUv   S S S 5        g ! , (       d  f       g = f7fr  r"  )r0  rU   s     r-   postgresql_psycopg2_conn_irisrM    s#     	(	0	0	2d
 
3	2	2r$  c              #  h   #    U R                  5        nUv   S S S 5        g ! , (       d  f       g = f7fr  r"  )r3  rU   s     r-   postgresql_psycopg2_conn_typesrO    s#     	)	1	1	3t
 
4	3	3r$  c                8    [         R                  " S5        SU  3$ )Nr=   
sqlite:///)r  r  )	temp_files    r-   
sqlite_strrS    s    
%	{##r,   c              #    #    [         R                  " S5      nUR                  " XR                  R                  S9nUv   [        U5       H  n[        X25        M     [        U5       H  n[        XB5        M     UR                  5         g 7f)Nr=   r,  r-  )rS  r=   r   r   r  s        r-   sqlite_enginerU    sl     $$\2J%%jOO<T<TUF
Lf%$ &f%3 &
NNs   B
Bc              #  h   #    U R                  5        nUv   S S S 5        g ! , (       d  f       g = f7fr  r"  )rU  rU   s     r-   sqlite_connrW     s#     				 D
 
!	 	 r$  c                    [         R                  " S5      nUR                  " U 5      n[        X15        [	        U5        UR                  5         U $ )Nr=   )r  r  r   ro   r{   r   )rS  r   r=   r   s       r-   sqlite_str_irisrY    sB    $$\2J%%j1F+f%
NNr,   c                2    [        X5        [        U 5        U $ r  r  )rU  r   s     r-   sqlite_engine_irisr[    s    2m,r,   c              #  h   #    U R                  5        nUv   S S S 5        g ! , (       d  f       g = f7fr  r"  )r[  rU   s     r-   sqlite_conn_irisr]    s#     		#	#	%
 
&	%	%r$  c                    [         R                  " S5      nUR                  " U 5      n[        X1S5        UR	                  5         U $ )Nr=   r%   )r  r  r   r   r   )rS  r   r=   r   s       r-   sqlite_str_typesr_    s<    $$\2J%%j1F&h7
NNr,   c                    [        XS5        U $ )Nr%   r  )rU  r   s     r-   sqlite_engine_typesra  &  s    -X>r,   c              #  h   #    U R                  5        nUv   S S S 5        g ! , (       d  f       g = f7fr  r"  )ra  rU   s     r-   sqlite_conn_typesrc  ,  s#     		$	$	&$
 
'	&	&r$  c              #  l  #    [         R                  " S5        [         R                  " S5        SSKJn  SU  3nUR	                  U5       nUv   [        U5       H  n[        XC5        M     [        U5       H  n[        XS5        M     UR                  5         S S S 5        g ! , (       d  f       g = f7f)Nr7  adbc_driver_sqliter   r9  zfile:)
r  r  re  r:  r   r   r  r  r  rT   )rR  r:  r;  rU   r   r  s         r-   sqlite_adbc_connrf  2  s     
	"
,-()
C	s	t
!$'Dd! (!$'Cs! ( 
		s   A	B4AB#	B4#
B1-B4c                    SS K nU n UR                  S5         UR                  S5        U$ ! UR                   a    UR                  5         [	        X15         NAf = f! UR                   a    UR                  5         [        U5         U$ f = fr>  )r@  rA  rB  rC  r\   r{   )rf  r   rD  rU   s       r-   sqlite_adbc_irisrh  B  s    %D6""6*("";/ K  6$T56
  (!$'K(rF  c                p   SS K nU n UR                  S5        U$ ! UR                   a    UR                  5         / nU HS  n[	        US   5      US'   US   b  [	        US   5      US'   UR                  [        UR                  5       5      5        MU     [        X45        UR                  5          U$ f = f)Nr   r   r   r   )
r@  rA  rB  rC  intr   rH  rh   r   rT   )rf  r   rD  rU   rJ  rI  s         r-   sqlite_adbc_typesrk  T  s    %D""7+ K  
E"5#34E)&'3+.u5F/G+H'(OOE%,,.12	   	&d5K
s    BB54B5c               #     #    [         R                  " [        R                  " S5      5       n U  nUv   S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f7f)N:memory:)
contextlibclosingrx   r   closing_connrU   s     r-   sqlite_buildinrr  j  sC     			GOOJ7	8LTJ  
9	8\ 
9	8s1   +A(AAA	A(
A	A
A%!A(c                2    [        X5        [        U 5        U $ r  )r\   r{   )rr  r   s     r-   sqlite_buildin_irisrt  q  s     ;n-r,   c                x    U Vs/ s H  n[        UR                  5       5      PM     nn[        X5        U $ s  snf r  )rH  rh   r   )rr  r   rI  s      r-   sqlite_buildin_typesrv  x  s5    5?@ZE%'ZJ@!.= As   #7r  )marksr#  r  r&  r   r(  r.  r5  r0  rM  r3  rO  )rU  rW  rS  )r[  r]  rY  )ra  rc  r_  rf  r<  rE  rh  rK  rk  rr  rt  rv  c                J    UR                  U 5      n UR                  SU SSS9  g )Ntestr   Fr   rn   	if_existsr   )getfixturevalueto_sql)rU   r   requests      r-   test_dataframe_to_sqlr    s+     ""4(DFNr,   c                    U S:X  aE  [        5       (       d6  UR                  R                  [        R                  R                  SS95        UR                  U 5      n UR                  S S nUR                  SU SSS9  g )	Nr<  z=postgres ADBC driver < 1.2 cannot insert index with null typereasonr   ry  r   Frz  )	r   node
add_markerr  markxfailr|  r   r}  )rU   r   r~  empty_dfs       r-   test_dataframe_to_sql_emptyr    sx    %%.@.B.BKKV  	
 ""4(D#HOOTXUOKr,   c                v   [         R                  " S5        [        [        R                  " S/SS9[        R                  " [        SSS5      /SS9[        R                  " [        SSS5      /SS9[        R                  " [        S5      /SS9[        R                  " S	/S
S9S.5      nSU ;   a/  U S:X  a  UR                  S/S9n[        (       a	  [        nSnOS nSnO[        nSnUR                  U 5      n [        R                  " X4SS9   UR                  SU SSS9  S S S 5        g ! , (       d  f       g = f)Nr7  rG   zint8[pyarrow]r?     timestamp[ns][pyarrow]zdate32[day][pyarrow]zduration[ns][pyarrow]azstring[pyarrow])rj  r   r   r   stringrz   rf  r   r   zis_sparse is deprecated zthe 'timedelta'F)matchcheck_stacklevel
test_arrowreplacerz  )r  r  r   pdarrayr   r   r   rj   r   DeprecationWarningUserWarningr|  r   assert_produces_warningr}  )rU   r~  r   exp_warningmsgs        r-   "test_dataframe_to_sql_arrow_dtypesr    s    	"	88QC7$1%&.F HHd4A./7MN9Q<.8OPhhu,=>	


B ~%%+/B,K+CKC!""4(D		#	#KU	S
		|%	P 
T	S	Ss   D**
D8c           
     "   [         R                  " S5        [        U[        5      (       a  [         R                  " SS9  [        S[        R                  " [        SSS5      U/SS905      nUR                  U 5      n UR                  S	U S
SS9  g )Nr7  z?Decimal('NaN') not supported in constructor for timestamp dtyper  r   r  rG   r  r  r  r  Frz  )r  r  rw   r   skipr   r  r  r   r|  r}  )rU   r~  nulls_fixturer   s       r-   *test_dataframe_to_sql_arrow_dtypes_missingr    s     	"-))T	

 
$1%}5=U	

B ""4(DII<TYeILr,   methodmultic                ~   US:X  a=  SU ;   a7  UR                   R                  [        R                  R	                  SSS95        UR                  U 5      n [        U SS9 nUR                  USUS9  UR                  S5      (       d   e S S S 5        [        U S5      [        U5      :X  d   eg ! , (       d  f       N*= f)	Nr  rz   z)'method' not implemented for ADBC driversTr  strictneed_transaction
test_framer  )r  r  r  r  r  r|  r!   r}  	has_tabler   len)rU   r  r   r~  	pandasSQLs        r-   test_to_sqlr  %  s     Vt^KKB4  	
 ""4(D	4$	79l6B""<0000 
8 dL)S-==== 
8	7s   *B..
B<zmode, num_row_coef))r  rG   )r   rH   )delete_rowsrG   c                    UR                  U 5      n [        U SS9 nUR                  USSS9  UR                  USUS9  UR                  S5      (       d   e S S S 5        [	        U S5      U[        U5      -  :X  d   eg ! , (       d  f       N-= f)NTr  r  failr{  r|  r!   r}  r  r   r  )rU   modenum_row_coefr   r~  r  s         r-   test_to_sql_existr  6  s    
 ""4(D	4$	79lfEldC""<0000 
8 dL)\C<L-LLLL	 
8	7s   ;A??
Bc                L   UR                  U 5      n [        U SS9 nUR                  USSS9  UR                  S5      (       d   eSn[        R
                  " [        US9   UR                  USSS9  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)NTr  r  r  r  z!Table 'test_frame' already existsr  )r|  r!   r}  r  r  raises
ValueError)rU   r   r~  r  r  s        r-   test_to_sql_exist_failr  C  s    ""4(D	4$	79lfE""<00001]]:S1[,&I 2 
8	7
 21 
8	7s$   AB!B3B
B	B
B#c                   UR                  U 5      n [        SU 5      n[        U5        [        R                  " SU 5      n[        U5        [        R                  " SU 5      nUR
                  S:X  d   eSUR                  ;   d   eg )NSELECT * FROM irisSELECT * FROM iris where 0=1r   r   r8   )r|  r"   r   r  read_sqlr   r   rU   r~  
iris_frames      r-   test_read_iris_queryr  O  sy    ""4(D 4d;JZ 148JZ ;TBJv%%%:-----r,   c                   SU ;   a7  UR                   R                  [        R                  R	                  SSS95        UR                  U 5      n [        [        SU SS95      n[        U5        [        [        R                  " SU SS95      n[        U5        [        [        R                  " SU SS95      nUR                  S	:X  d   eS
UR                  ;   d   eg )Nrz   ,'chunksize' not implemented for ADBC driversTr  r     	chunksizer  r  r8   )r  r  r  r  r  r|  r   r"   r   r  r  r   r   r  s      r-   test_read_iris_query_chunksizer  [  s    ~KKE  	
 ""4(D';TQOPJZ $8$!LMJZ $BDTUVWJv%%%:-----r,   c                   SU ;   a7  UR                   R                  [        R                  R	                  SSS95        UR                  U 5      n SSKJnJnJ	nJ
n  U" 5       n[        U [        5      (       a  U" U 5      OU nU" SXgS9n[        U" U5      U S	S
S.S9n	[        U	5        [        U [        5      (       a  UR                  5         g g )Nrz   r  Tr  r   )r3   r5   r   selectr6   )autoload_withr   r   r   lengthrm   )r  r  r  r  r  r|  r=   r3   r5   r   r  rw   r   r"   r   r   )
rU   r~  r3   r5   r   r  r@   autoload_conr6   r  s
             r-   .test_read_iris_query_expression_with_parameterr  n  s    ~KKE  	
 ""4(D  zH*4T3*?*?=&TL>DtdMS#IJ Z $ r,   c                .   SU ;   a7  UR                   R                  [        R                  R	                  SSS95        US   R                  5        H  u  p4X0;   d  M    O   [        SU  S35      eUR                  U 5      n [        X@SS	9n[        U5        g )
Nrz   r  Tr  r(   zNo part of z( found in sql_strings['read_parameters']r   r   r  )
r  r  r  r  r  itemsKeyErrorr|  r"   r   )rU   r~  r.   r  queryr  s         r-   *test_read_iris_query_string_with_parameterr    s    ~KKE  	
 !!2399;	: < TF*RSTT""4(D4HIJZ r,   c                    UR                  U 5      n [        SU 5      n[        U5        [        R                  " SU 5      n[        U5        g )Nr6   )r|  r#   r   r  r  r  s      r-   test_read_iris_tabler    s@     ""4(D-JZ VT*JZ r,   c                0   SU ;   a6  UR                   R                  [        R                  R	                  SS95        UR                  U 5      n [        [        SU SS95      n[        U5        [        [        R                  " SU SS95      n[        U5        g )Nrz   +chunksize argument NotImplemented with ADBCr  r6   r  r  )r  r  r  r  r  r|  r   r#   r   r  r  r  s      r-   test_read_iris_table_chunksizer    s}    ~KK%RS	
 ""4(DvtqABJZ FDA>?JZ r,   c                  ^ UR                  U 5      n / mU4S jn[        U SS9 nUR                  USUS9  UR                  S5      (       d   e S S S 5        TS/:X  d   e[	        U S5      [        U5      :X  d   eg ! , (       d  f       N3= f)Nc           	        > TR                  S5        U Vs/ s H  n[        [        X$5      5      PM     nnUR                  U R                  R                  5       U5        g s  snf )NrG   )r   rf   rg   rL   r   ra   )pd_tablerU   r   	data_iterr[   r   checks         r-   sample$test_to_sql_callable.<locals>.sample  sK    Q09:	S^$	:X^^**,d3 ;s   A"Tr  r  r  rG   r  )rU   r   r~  r  r  r  s        @r-   test_to_sql_callabler    s    ""4(DE4
 
4$	79l6B""<0000 
8 QC<<dL)S-====	 
8	7s   *A==
Bc                6   U nUS:X  a,  UR                  [        R                  R                  SS95        UR	                  U 5      n [
        R                  " SU 5      n[        UR                  R                  R                  [        R                  5      (       d   e[        UR                  R                  R                  [        R                  5      (       d   eSU;   a@  [        UR                  R                  R                  [        R                   5      (       d   eO?[        UR                  R                  R                  [        R                  5      (       d   e[        UR"                  R                  R                  [        R                  5      (       d   eSU;   a6  [        UR$                  R                  R                  [&        5      (       d   eg [        UR$                  R                  R                  [        R                  5      (       d   eg )Nrv  ;sqlite_buildin connection does not implement read_sql_tabler  r   r'   )applymarkerr  r  r  r|  r   r#   r   r   r?   r   r   r   r   integerr   bool_r   r   objectrU   r~  	conn_namer   s       r-   test_default_type_conversionr    s   I**KKT  	
 ""4(D			GT	*Bbkk'',,bkk::::biioo**BJJ7777 y "****//::::"****//<<<< b''--22BKK@@@@ y ",,2277@@@@",,2277EEEEr,   c                   UR                  U 5      n SSKJn  SSKJn  [        / SQ/ SQS.5      nUR                  SU SS	9  S
nU" U5      n[        X5      (       aD  U R                  5        nUR                  5          UR                  U5        S S S 5        S S S 5        O*U R                  5          U R                  U5        S S S 5        [        R                  " SU 5      n[        R                  " XG5        [        R                  " SU 5      n[        R                  " XH5        g ! , (       d  f       N= f! , (       d  f       Nz= f! , (       d  f       N= f)Nr   ru   r   rG   rH   rI   皙?r   333333?r  br  Fr   rn   r   z}DROP PROCEDURE IF EXISTS get_testdb;

    CREATE PROCEDURE get_testdb ()

    BEGIN
        SELECT * FROM test_frame;
    ENDzCALL get_testdb();)r|  r=   rv   r   r   r   r}  rw   r   ri   rL   r   r"   r   assert_frame_equalr  )	rU   r~  rv   r   r   procengine_connres1res2s	            r-   test_read_procedurer    s   ""4(D
  (	9	:BII<TI7D :D$\\^{""$##D) % ^ ZZ\LL  2D9D"# <<,d3D"# %$ ^ \s0   +D5<D$D5/E$
D2	.D55
E
Eexpected_countrH   zSuccess!c                   ^ U4S jnUR                  U 5      n [        SS/SS/SS/S.5      nUR                  S	U S
US9nTc  Ub   eOUT:X  d   e[        R                  " S	U 5      n[
        R                  " Xd5        g )Nc           	       > UR                   nUR                  5        n[        5       n[        R                  " U5      nUR                  U5        UR                  S5        SR                  U Vs/ s H	  nSU S3PM     sn5      n	U R                  (       a  U R                   SU R                   3n
OU R                  n
SU
 SU	 S3nUR                  XS9  S S S 5        T$ s  snf ! , (       d  f       T$ = f)	Nr   z, r  .zCOPY z (z) FROM STDIN WITH CSV)r   file)
connectionrK   r	   rN   writer	writerowsseekjoinr   r   copy_expert)r   rU   r   r  
dbapi_connrX   s_bufr   kr   r   	sql_queryr  s               r-   psql_insert_copyBtest_copy_from_callable_insertion_method.<locals>.psql_insert_copy  s    __
 CJEZZ&FY'JJqMii4 84a1QCq4 89G|| %~Quzzl;
"ZZ

|2gY6KLIOO	O6 !  !9 !  s   AC'0C"
 AC'"C''
C6rG   rH   r  r   r  ncol1col2col3r  F)r   rn   r   r  r|  r   r}  r   r#   r   r  )rU   r  r~  r	  expectedresult_countresults    `     r-   (test_copy_from_callable_insertion_methodr    s    & ""4(D1a&3*sCjQRH??t59I # L ###~---d3F&+r,   c                V  ^ UR                  U 5      n SSKJm  SSKJn  SSKJn  U4S jnU" S5      n[        X5      (       aD  U R                  5        nUR                  5          UR                  U5        S S S 5        S S S 5        O*U R                  5          U R                  U5        S S S 5        [        / SQ/[        S5      S	9nUR                  S
U SSS9  [        / SQ/[        S5      S	9nUR                  S
U SSUS9n	[        R                  " S
U 5      n
[         R"                  " X5        U	S:X  d   e[        R$                  " U SS9 nUR'                  S
5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nr   r`   r   ru   c           	        > U Vs/ s H  n[        [        X$5      5      PM     nnT" U R                  5      R                  U5      R	                  S/S9nUR                  U5      nUR                  $ s  snf )Nr  )index_elements)rf   rg   r   rh   on_conflict_do_nothingrL   rowcount	r   rU   r   r  r[   r   rW   r  ra   s	           r-   insert_on_conflictHtest_insertion_method_on_conflict_do_nothing.<locals>.insert_on_conflict<  si    09:	S^$	:5;;VD\##C5#9 	
 d# ;s   A2zx
    CREATE TABLE test_insert_conflict (
        a  integer PRIMARY KEY,
        b  numeric,
        c  text
    );
    rG    @r  abcr   test_insert_conflictr   Frz  rG   g	@r  r   rn   r   r{  r  Tr  )r|  sqlalchemy.dialects.postgresqlra   r   r   sqlalchemy.sqlrv   rw   r   ri   rL   r   listr}  r   r#   r   r  r   r  )rU   r~  r   rv   r  
create_sqlrn   r  	df_insertinsertedr  r  ra   s               @r-   ,test_insertion_method_on_conflict_do_nothingr)  3  sh    ""4(D5(# 	J $\\^sJ'  ^ ZZ\LL$  -$u+>HOO#   =/4;?I#!   H  6=F&+q== 
	534 
6	51  ^ \* 
6	5<   E8$E'6E8F	F'
E5	1E88
F	
F
F(c                F   SU ;   d  SU ;   a,  UR                  [        R                  R                  SS95        UR	                  U 5      n [        / SQ/ SQ/[        S5      S9nUR                  S	U S
SSS9  [        R                  " S	U SS9n[        R                  " X#5        g )Nr%   r&   z2test for public schema only specific to postgresqlr  r  )rH   g@r  r  r   test_public_schemar   Fpublic)r   rn   r{  r   r   r   )r  r  r  r  r|  r   r%  r}  r   r#   r   r  )rU   r~  	test_datadf_outs       r-   test_to_sql_on_public_schemar1  m  s    47d?KKK  	
 ""4(D=-8$u+NI!    4d8LF),r,   c                V  ^ UR                  U 5      n SSKJm  SSKJn  SSKJn  U4S jnU" S5      n[        X5      (       aD  U R                  5        nUR                  5          UR                  U5        S S S 5        S S S 5        O*U R                  5          U R                  U5        S S S 5        [        / SQ/[        S5      S	9nUR                  S
U SSS9  [        / SQ/[        S5      S	9nUR                  S
U SSUS9n	[        R                  " S
U 5      n
[         R"                  " X5        U	S:X  d   e[        R$                  " U SS9 nUR'                  S
5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nr   r`   r   ru   c           	     B  > U Vs/ s H  n[        [        X$5      5      PM     nnT" U R                  5      R                  U5      nUR	                  UR
                  R                  UR
                  R                  S9nUR                  U5      nUR                  $ s  snf )N)r  r   )
rf   rg   r   rh   on_duplicate_key_updater(  r  r   rL   r  r  s	           r-   r  Dtest_insertion_method_on_conflict_update.<locals>.insert_on_conflict  s{    09:	S^$	:ekk"))$/++dmmoo+Qd#	 ;s   Bzv
    CREATE TABLE test_insert_conflict (
        a INT PRIMARY KEY,
        b FLOAT,
        c VARCHAR(10)
    );
    r  r  r   r   r   Frz  r!  r"  rH   Tr  )r|  sqlalchemy.dialects.mysqlra   r   r   r$  rv   rw   r   ri   rL   r   r%  r}  r   r#   r   r  r   r  )rU   r~  r   rv   r  r&  rn   r   r  r(  r  r  ra   s               @r-   (test_insertion_method_on_conflict_updater7    s_    ""4(D0(# 	J $\\^sJ'  ^ ZZ\LL$  
M?DK	8BII)txuIU-$u+>H#!  H  6=F&+q== 
	534 
6	5-  ^ \& 
6	5r*  c                   UR                  U 5      n SSKJn  SSKJn  S[
        R                  " 5       R                   3nS[
        R                  " 5       R                   3nU" SU SU SU S	U S
3	5      n[        X5      (       aD  U R                  5        nUR                  5          UR                  U5        S S S 5        S S S 5        O*U R                  5          U R                  U5        S S S 5        [        XP5      n[        S/SS.5      n	[        R                  " X5        g ! , (       d  f       Nr= f! , (       d  f       NP= f! , (       d  f       Na= f)Nr   r   ru   group_group_view_z
    CREATE TABLE zF (
        group_id INTEGER,
        name TEXT
    );
    INSERT INTO z- VALUES
        (1, 'name');
    CREATE VIEW z
    AS
    SELECT * FROM z;
    rG   r   group_idr   )r|  r   r   r$  rv   uuiduuid4hexrw   r   ri   rL   r#   r   r   r  )
rU   r~  r   rv   r   r   sql_stmtrn   r  r  s
             r-   test_read_view_postgresrA    s     ""4(D(#$**,**+,Jdjjl../0I    , 
	H $\\^sH%  ^ ZZ\LL" I,Fqc6:;H&+  ^ \s0   D7(D&:D7E&
D4	0D77
E
Ec                    SnSnSnU R                  U5        U R                  U5        U R                  U5        [        R                  " SU 5      n[        S/SS.5      n[        R
                  " XE5        g )Nz<
CREATE TABLE groups (
   group_id INTEGER,
   name TEXT
);
z,
INSERT INTO groups VALUES
    (1, 'name');
z1
CREATE VIEW group_view
AS
SELECT * FROM groups;
zSELECT * FROM group_viewrG   r   r;  )rL   r  r  r   r   r  )rr  create_tableinsert_intocreate_viewr  r  s         r-   test_read_view_sqliterF    ss    LKK
 <(;';'[[3^DFqc6:;H&+r,   c                H    SU ;   a  gSU ;   a  gSU ;   a  g[        SU  35      e)Nr'   r%   r&   zunsupported connection: )r  )r  s    r-   flavorrH    s6    y 	Y		I	
/	{;
<<r,   c                   SU ;   a7  UR                   R                  [        R                  R	                  SSS95        U nUR                  U 5      n US   [        U5         nSn[        U 5       nUR                  5          UR                  XES9nS S S 5        S S S 5        [        W5        g ! , (       d  f       N"= f! , (       d  f       N+= f)Nrz   )'params' not implemented for ADBC driversTr  r(   r  r  r  r  r  r  r  r|  rH  r!   run_transaction
read_queryr   rU   r~  r.   r  r  rm   r  r  s           r-   test_read_sql_iris_parameterrO    s    ~KKB  	
 I""4(D)*6)+<=E!F	4	 I&&("--e-CJ ) 
! Z  )( 
!	 s$   /B= B,B=,
B:	6B==
Cc                   SU ;   a7  UR                   R                  [        R                  R	                  SSS95        U nUR                  U 5      n US   [        U5         nSSS.n[        U 5       nUR                  5          UR                  XES	9nS S S 5        S S S 5        [        W5        g ! , (       d  f       N"= f! , (       d  f       N+= f)
Nrz   rJ  Tr  r)   r   r   r  r  rK  rN  s           r-   "test_read_sql_iris_named_parameterrQ    s    ~KKB  	
 I""4(D/0	1BCE#s3F	4	 I&&("--e-CJ ) 
! Z  )( 
!	 s$   2C B/C /
B=	9C  
Cc                   SU ;   d  SU ;   a2  SU ;  a,  UR                  [        R                  R                  SS95        U nUR	                  U 5      n US   [        U5         n[        U 5       nUR                  5          UR                  US S9nS S S 5        S S S 5        [        W5        g ! , (       d  f       N"= f! , (       d  f       N+= f)Nr&   r'   rz   zbroken testr  r*   r  )
r  r  r  r  r|  rH  r!   rL  rM  r   )rU   r~  r.   r  r  r  r  s          r-   ,test_read_sql_iris_no_parameter_with_percentrS  )  s    $<4/F$4FFKK--]-CDI""4(D9:6);LME	4	 I&&("--eD-AJ ) 
! Z  )( 
!	 s$   .B=?B,B=,
B:	6B==
Cc                j    UR                  U 5      n [        R                  " SU 5      n[        U5        g )NzSELECT * FROM iris_view)r|  r   r"   r   r  s      r-   test_api_read_sql_viewrU  <  s-    ""4(D##$=tDJZ r,   c                8   SU ;   a6  UR                   R                  [        R                  R	                  SS95        UR                  U 5      n Sn[        R                  " X SS9n[        R                  " X 5      n[        R                  " [        U5      U5        g )Nrz   r  r  z1SELECT * FROM iris_view WHERE "SepalLength" < 0.0r   r  )r  r  r  r  r  r|  r   r"   r   r  r   )rU   r~  r  
with_batchwithout_batchs        r-   *test_api_read_sql_with_chunksize_no_resultrY  C  s    ~KK%RS	
 ""4(D?E##E1=J&&u3M&,m<r,   c                J   UR                  U 5      n [        R                  " SU 5      (       a/  [        R                  " U SS9 nUR	                  S5        S S S 5        [        R
                  " USU 5        [        R                  " SU 5      (       d   eg ! , (       d  f       NE= f)Nr   Tr  )r|  r   r  r   r  r}  )rU   r~  r   r  s       r-   test_api_to_sqlr[  P  sx    ""4(D
}}]D))__TD9Y  / : JJ{M40==----	 :9s   B
B"c                   UR                  U 5      n [        R                  " SU 5      (       a/  [        R                  " U SS9 nUR	                  S5        S S S 5        [        R
                  " USU SS9  [        R                  " SU 5      (       d   eSn[        R                  " [        US9   [        R
                  " USU SS9  S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Ntest_frame2Tr  r  r  z"Table 'test_frame2' already existsr  )	r|  r   r  r   r  r}  r  r  r  )rU   r~  r   r  r  s        r-   test_api_to_sql_failr^  [  s    ""4(D
}}]D))__TD9Y  / : JJ{M46B==----
.C	z	-

;tvF 
.	- :9 
.	-s   C-C
C
C-c                   UR                  U 5      n [        R                  " SU 5      (       a/  [        R                  " U SS9 nUR	                  S5        S S S 5        [        R
                  " USU SS9  [        R
                  " USU SS9  [        R                  " SU 5      (       d   e[        U5      n[        U S5      nXT:X  d   eg ! , (       d  f       Ny= f)Nr   Tr  r  r  r  r|  r   r  r   r  r}  r  r   rU   r~  r   r  num_entriesnum_rowss         r-   test_api_to_sql_replacerd  j  s    ""4(D
}}]D))__TD9Y  / : JJ{M46BJJ{M49E==----k"K$.H""" :9s   C
Cc                   UR                  U 5      n [        R                  " SU 5      (       a/  [        R                  " U SS9 nUR	                  S5        S S S 5        [        R
                  " USU SS9S:X  d   e[        R
                  " USU SS9S:X  d   e[        R                  " SU 5      (       d   eS[        U5      -  n[        U S5      nXT:X  d   eg ! , (       d  f       N= f)	Ntest_frame4Tr  r  r  rJ   r   rH   r`  ra  s         r-   test_api_to_sql_appendrg  |  s    ""4(D
}}]D))__TD9Y  / : ::k=$&IQNNN ::k=$(KqPPP==----c+&&K$.H""" :9s   C
C%c                f   UR                  U 5      n [        R                  " SU 5      (       a/  [        R                  " U SS9 nUR	                  S5        S S S 5        [        R
                  " USU SS9  [        R                  " SU 5      n[        R                  " X$5        g ! , (       d  f       NS= f)Ntest_frame5Tr  Fr   zSELECT * FROM test_frame5)	r|  r   r  r   r  r}  r  r   r  )rU   r~  r   r  r  s        r-   test_api_to_sql_type_mappingrk    s    ""4(D
}}]D))__TD9Y  / : JJ{M4u=\\5t<F+. :9s   B""
B0c                   UR                  U 5      n [        R                  " SU 5      (       a/  [        R                  " U SS9 nUR	                  S5        S S S 5        [        [        R                  " SSS9SS9n[        R                  " USU S	S
9  [        R                  " SU 5      n[        R                  " UR                  5       U5        g ! , (       d  f       N= f)Ntest_seriesTr  r   r   r  seriesr   Frj  zSELECT * FROM test_series)r|  r   r  r   r  r   r   aranger}  r"   r   r  to_frame)rU   r~  r  ss2s        r-   test_api_to_sql_seriesrs    s    ""4(D
}}]D))__TD9Y  / : 	ryy'*:AJJq-U3			7	>B!**,+ :9s   C
Cc                   U nUR                  U 5      n [        R                  " SU 5      (       a/  [        R                  " U SS9 nUR	                  S5        S S S 5        [        R
                  " USU S9  [        R                  " SU S9nSU;   a  UR                  SS9nOUR                  S	S9n[        R                  " XR5        g ! , (       d  f       Nu= f)
Ntest_frame_roundtripTr  rn   "SELECT * FROM test_frame_roundtriprz   __index_level_0__r   level_0)
r|  r   r  r   r  r}  r"   rj   r   r  rU   r~  r   r  r  r  s         r-   test_api_roundtripr{    s    I""4(D
}}+T22__TD9Y  !78 : JJ{2= D$OF %89Y/&. :9s   C
Cc                   SU ;   a6  UR                   R                  [        R                  R	                  SS95        UR                  U 5      n [        R                  " SU 5      (       a/  [        R                  " U SS9 nUR                  S5        S S S 5        [        R                  " USU SSS	9  [        R                  " S
U S9n[        R                  " XB5        g ! , (       d  f       NR= f)Nrz   r  r  ru  Tr  FrH   )rn   r   r  rw  rv  )r  r  r  r  r  r|  r   r  r   r  r}  r"   r   r  )rU   r~  r   r  r  s        r-   test_api_roundtrip_chunksizer}    s    ~KK%RS	
 ""4(D
}}+T22__TD9Y  !78 : JJ  D$OF&. :9s   ?C
C+c                   UR                  U 5      n [        R                  " U 5       nUR                  S5      nUR	                  5       nUR                  5         S S S 5        [        W5      / SQ:X  d   eg ! , (       d  f       N"= fNr  r   )r|  r   r!   rL   r   rS   r%  )rU   r~  
pandas_sqliris_resultsr[   s        r-   test_api_execute_sqlr    sr     ""4(D			t	$
!))*>?##% 
% 9;;;;	 
%	$s   2A66
Bc           
        U nUR                  U 5      n [        R                  " SU 5      nSU;   dE  SU;   d?  [        UR                  R
                  R                  [        R                  5      (       a   e[        R                  " SU S/S9n[        UR                  R
                  R                  [        R                  5      (       d   eUR                  R                  5       [        SSSS	S	S	5      [        SSS
S	S	S	5      /:X  d   e[        R                  " SU SS0S9n[        UR                  R
                  R                  [        R                  5      (       d   eUR                  R                  5       [        SSSS	S	S	5      [        SSS
S	S	S	5      /:X  d   e[        R                  " SU S/S9n[        UR                  R
                  R                  [        R                  5      (       d   eUR                  R                  5       [        SSSS	S	S	5      [        SSSS	S	S	5      /:X  d   e[        R                  " SU SS0S9n[        UR                  R
                  R                  [        R                  5      (       d   eUR                  R                  5       [        SSSS	S	S	5      [        SSSS	S	S	5      /:X  d   e[        R                  " SU SS0S9n[        UR                  R
                  R                  [        R                  5      (       d   eUR                  R                  5       [        S5      [        S5      /:X  d   eg )NSELECT * FROM typesr&   r2  r   parse_datesi  rG   rI   r   rJ   %Y-%m-%d %H:%M:%Sr   i        i  rq  r   z%Y%m%dz
2010-10-10z
2010-12-12)r|  r   r"   r   r   r?   r   r   
datetime64tolistr   r   r   r  s       r-   test_api_date_parsingr    s   I""4(D 
		14	8By J)$;bjj..33R]]CCCC			14i[	QBbjj&&++R]];;;;::$1aA&$1aA&#   
 
		 34
B
 bjj&&++R]];;;;::$1aA&$1aA&#   
 
		14l^	TBbmm))..>>>>==!$B1a($1aA&&   
 
		t,1D
B bmm))..>>>>==!$B1a($1aA&&   
 
		%x0
B
 b''--22BMMBBBB##%,,*   r,   errorraisecoercezread_sql, text, moder  )r=   fallbackr   r=   c                   U nUR                  U 5      n US:X  a2  US:X  a,  UR                  [        R                  R	                  SS95        UR                  SS05      nU" UU SSU00S9n	S	U;   a6  U	S
   R                  [        5      U	S
'   U	S   R                  [        5      U	S'   US:X  a  UR                  SSSS.5      n[        R                  " X5        g )Nr   rv  z failing combination of argumentsr  r   zdatetime64[us]rt   )rn   r  r2  r   r   rK  int32)r   r   r   )
r|  r  r  r  r  r   rj  rQ   r   r  )
rU   r~  r  rv   r  r  r   r  r  r  s
             r-   !test_api_custom_dateparsing_errorr    s    $ I""4(Dw9(>>KK%GH	
  &&	3C'DEH%(
F Y"9-44S9y$*+<$=$D$DU$K !++??%")!
 &+r,   c                T   UR                  U 5      n [        R                  " SU SSS/S9n[        UR                  R
                  R                  [        R                  5      (       d   e[        UR                  R
                  R                  [        R                  5      (       d   eg )Nr  r   r   )	index_colr  )
r|  r   r"   r   r   r?   r   r   r  r   rU   r~  r   s      r-   test_api_date_and_indexr  H  s     ""4(D			-	
B bhhnn))2==9999bmm))..>>>>r,   c           
     v   U nUR                  U 5      n [        R                  " SU 5      (       a/  [        R                  " U SS9 nUR	                  S5        S S S 5        [        [        SS/SS95      R                  5       nUS:X  a6  UR                  R                  [        R                  R                  S	S
95        SU;   a  [        (       a  [        nO	S nO[        n[         R"                  " USS9   UR%                  SU S9nS S S 5        WS:X  d   e[        R&                  " SU 5      nUS:X  a7  [        [(        R*                  " SSSSS9[(        R*                  " SSSSS9/SS9nOUS   R-                  S5      n[         R.                  " US   U5        g ! , (       d  f       GNH= f! , (       d  f       N= f)Ntest_timedeltaTr  z00:00:01z00:00:03foor   rf  z.sqlite ADBC driver doesn't implement timedeltar  rz   F)r  r   rn   rH   zSELECT * FROM test_timedeltar<  r   i@B )monthsdaysmicrosecondsnanosecondsi- r   )r|  r   r  r   r  r   r   rp  r  r  r  r  r  r   r  r  r   r  r}  r"   r  
DateOffsetr   r   )	rU   r~  r  r  r   r  r  r  r  s	            r-   test_api_timedeltar  W  s    I""4(D
}}%t,,__TD9Y  !12 : 
fj*5EB	C	L	L	NB&&KKG  	
 ,KK!		#	#K%	Hyy&6DyA 
I1 >EF** QQWRSTQQWRST 
 e9##G,6%=(3M :9( 
I	Hs   F4F*
F'*
F8c                    U nUR                  U 5      n [        SSS/05      nSU;   a  SnOSn[        R                  " [        US9   UR                  SU S	9b   e S S S 5        g ! , (       d  f       g = f)
Nr  y      ?      ?y               @rz   zdatatypes not supportedzComplex datatypes not supportedr  test_complexrv  )r|  r   r  r  r  r}  )rU   r~  r  r   r  s        r-   test_api_complex_raisesr    so    I""4(D	C&"&	'B'/	z	-yyTy2::: 
.	-	-s   A%%
A3zindex_name,index_label,expected))NNr   )Nother_labelr  )
index_nameNr  )r  r  r  )r   N0)Nr   r  c                (   SU ;   a6  UR                   R                  [        R                  R	                  SS95        UR                  U 5      n [        R                  " SU 5      (       a/  [        R                  " U SS9 nUR                  S5        S S S 5        [        S[        S5      05      nX&R                  l        S	n[        R                  " USXS
9  [        R                  " Xp5      nUR                   S   U:X  d   eg ! , (       d  f       Nx= f)Nrz   -index_label argument NotImplemented with ADBCr  test_index_labelTr  r  rJ   SELECT * FROM test_index_label)index_labelr   )r  r  r  r  r  r|  r   r  r   r  r   ranger   r   r}  r"   r   )	rU   r~  r  r  r  r  
temp_framer  r   s	            r-   test_api_to_sql_index_labelr    s    & ~KK%TU	
 ""4(D
}}'..__TD9Y  !34 : FE!H-.J&,EJJz-tMu+E==x''' :9s   ?D
Dc           	        U nSU;   a.  UR                  [        R                  R                  SSS95        O<SU;   a6  UR                  R                  [        R                  R                  SS95        UR                  U 5      n [        R                  " SU 5      (       a/  [        R                  " U S	S
9 nUR                  S5        S S S 5        Sn[        S[        S5      0[        R                  " SS/5      S9n[        R                  " USU 5      nXd:X  d   e[        R                   " SU 5      nUR"                  S   S:X  d   eUR"                  S   S:X  d   e[        R                  " USU SSS/S9nXd:X  d   e[        R                   " SU 5      nUR"                  S S R%                  5       SS/:X  d   eSS/UR&                  l        [        R                  " USU SS9nXd:X  d   e[        R                   " SU 5      nUR"                  S S R%                  5       SS/:X  d   e[        R                  " USU SSS/S9nXd:X  d   e[        R                   " SU 5      nUR"                  S S R%                  5       SS/:X  d   eSn[        R*                  " [,        US9   [        R                  " USU SSS9  S S S 5        g ! , (       d  f       GN = f! , (       d  f       g = f)Nr&   z/MySQL can fail using TEXT without length as keyFr  rz   r  r  r  Tr  rJ   r  )A0A1)B0B1rj  r  r   ry  rG   level_1r  r   r   )r{  r  rH   r  r   r   zALength of 'index_label' should match number of levels, which is 2r  )r  r  r  r  r  r  r|  r   r  r   r  r   r  r   from_productr}  r"   r   r  r   namesr  r  )	rU   r~  r  r  expected_row_countr  r  r   r  s	            r-   &test_api_to_sql_index_label_multiindexr    s   I)KKHQV  	

 
9	KK%TU	
 ""4(D
}}'..__TD9Y  !34 : 	q%%|\&BCJ ZZ
$6=F'''?FE==y(((==y((( ZZ#JF '''?FE==!##%#s333 "3ZJZZ
$6	RF'''?FE==!##%#s333 ZZ#JF '''?FE==!##%#s333
MC	z	-

	
 
.	-a :9` 
.	-s   5K K 
K
K c                   UR                  U 5      n [        R                  " SU 5      (       a/  [        R                  " U SS9 nUR	                  S5        S S S 5        [
        R                  " SS// SQSS/S	9nUR                  SU S
9  [        R                  " SU SS/S9n[        R                  " X4SS9  g ! , (       d  f       Nh= f)Ntest_multiindex_roundtripTr  rG   r  line1rH         ?line2r   r   r   r   r   r   r   r  z'SELECT * FROM test_multiindex_roundtripr  check_index_type)r|  r   r  r   r  r   from_recordsr}  r"   r   r  )rU   r~  r  r   r  s        r-   test_api_multiindex_roundtripr    s    ""4(D
}}0$77__TD9Y  !<= : 
			-.Cj
B II.DI914C:F "t< :9s   B77
Cr?   r   r   c                   U nUR                  U 5      n [        R                  " SU 5      (       a/  [        R                  " U SS9 nUR	                  S5        S S S 5        [        SS/SS//SS	/S
9nUR                  SU S9S:X  d   eUR                  U5      nSU;   a  SnOSn[        R                  " XpUS9n[        R                  " X5        g ! , (       d  f       N~= f)Ntest_dtype_argumentTr  333333?g333333@ffffff@g333333@r   r   r   r  rH   r2  z(SELECT "A", "B" FROM test_dtype_argumentz$SELECT A, B FROM test_dtype_argumentrn   r?   )r|  r   r  r   r  r   r}  r   r"   r   r  )	rU   r~  r?   r  r  r   r  r  r  s	            r-   test_api_dtype_argumentr    s     I""4(D
}}*D11__TD9Y  !67 : 
S#Jc
+c3Z	@B99/T9:a???yyHY:6u=F&+ :9s   C
Cc                x    UR                  U 5      n [        SS/SS//SS/S9n[        R                  " USU SS	9  g )
NrG   rH   rI   rJ   r   r   test_frame_integer_col_namesr  r  )r|  r   r   r}  r  s      r-   test_api_integer_col_namesr  6  sB    ""4(D	QFQF#aV	4BJJr149Mr,   c                    SU ;   a7  UR                   R                  [        R                  R	                  SSS95        UR                  U 5      n [        R                  " USU S9nSU;   d   eg )Nrz   -'get_schema' not implemented for ADBC driversTr  ry  rv  CREATEr  r  r  r  r  r|  r   
get_schemarU   r~  r   r&  s       r-   test_api_get_schemar  =  sj    ~KKF  	
 ""4(DV>Jz!!!r,   c                    SU ;   a7  UR                   R                  [        R                  R	                  SSS95        UR                  U 5      n [        R                  " USU SS9nSU;   d   eg )	Nrz   r  Tr  ry  pypi)rn   r   zCREATE TABLE pypi.r  r  s       r-   test_api_get_schema_with_schemar  K  sn     ~KKF  	
 ""4(DVfMJ:---r,   c                <   SU ;   a7  UR                   R                  [        R                  R	                  SSS95        U nUR                  U 5      n [        SS/SS/S	.5      nUS
:X  a  SnOSSKJn  Un[        R                  " USU SU0S9nSU;   d   eSU;   d   eg )Nrz   r  Tr  皙?r  r  皙@r  rr  INTEGERr   )r   ry  r  r  r  )r  r  r  r  r  r|  r   r=   r   r   r  )rU   r~  r  float_framer?   r   r&  s          r-   test_api_get_schema_dtypesr  Z  s    ~KKF  	
 I""4(D3*C:>?K$$&Vc5\RJz!!!
"""r,   c                p   SU ;   a7  UR                   R                  [        R                  R	                  SSS95        U nUR                  U 5      n [        SS/SS/S	.5      n[        R                  " US
U SS9nSU;   a  SnOSnXe;   d   e[        R                  " US
U SS/S9nSU;   a  SnOSnXe;   d   eg )Nrz   r  Tr  r  r  r  r  )Col1Col2ry  r  )rn   r   r&   z'CONSTRAINT test_pk PRIMARY KEY (`Col1`)z'CONSTRAINT test_pk PRIMARY KEY ("Col1")r   r   z)CONSTRAINT test_pk PRIMARY KEY (`A`, `B`)z)CONSTRAINT test_pk PRIMARY KEY ("A", "B"))	r  r  r  r  r  r|  r   r   r  )rU   r~  r   r  r   r&  constraint_sentences          r-   test_api_get_schema_keysr  r  s    ~KKF  	
 I""4(DSzC:>?Ev4fEJ)GG,,, VS#JOJ)II,,,r,   c                b   SU ;   a6  UR                   R                  [        R                  R	                  SS95        U nUR                  U 5      n [        R                  " SU 5      (       a/  [        R                  " U SS9 nUR                  S5        S S S 5        [        [        R                  R                  S5      R                  S5      [        S	5      S
9nUR!                  SU SS9  [        R"                  " SU 5      n[        5       nSn/ SQn[        R"                  " SU SS9 H&  n	[%        Xi/SS9n['        U	5      X   :X  d   eUS-  nM(     [(        R*                  " XV5        US:X  a9  [        R,                  " [.        SS9   [        R0                  " SU SS9  S S S 5        g [        5       n
Sn/ SQn[        R0                  " SU SS9 H&  n	[%        X/SS9n
['        U	5      X   :X  d   eUS-  nM(     [(        R*                  " XZ5        g ! , (       d  f       GN= f! , (       d  f       g = f)Nrz   r  r  test_chunksizeTr  rH   )   r   abcder   Fr  zselect * from test_chunksizer   )r   r   r   r   rH   r   r  ignore_indexrG   rr  z^$r  )r  r  r  r  r  r|  r   r  r   r  r   r   randomdefault_rngstandard_normalr%  r}  r"   r   r  r   r  r  NotImplementedErrorr#   )rU   r~  r  r  r   r  r  isizeschunkres3s              r-   test_api_chunksize_readr    s   ~KK%RS	
 I""4(D
}}%t,,__TD9Y  !12 : 

		a 0094=
B II#UI; <dCD ;D	AE##$BDTUVtm$75zUX%%%	Q W
 $% $$]].d;/C <; {''(8$!LE4-d;Du:)))FA M
 	d)K :92 <;s   HH 
H 
H.c                   U S:X  af  [        SSS9nUbY  [        UR                  5      [        S5      :  a7  UR                  R	                  [
        R                  R                  SSS95        UR                  U 5      n [        R                  " S	U 5      (       a/  [        R                  " U SS
9 nUR                  S	5        S S S 5        [        / SQ/ SQS.5      nUR                  5       nUS   R                  S5      US'   UR!                  S	U SS9  [        R"                  " SU 5      n[$        R&                  " Xd5        g ! , (       d  f       N= f)Nr<  r8  rr   rs   z0.9.0z:categorical dtype not implemented for ADBC postgres driverTr  test_categoricalr  r  )John P. Doez	Jane Dover  )	person_idperson_namer  categoryFr  zSELECT * FROM test_categorical)r   r   r>   r  r  r  r  r  r|  r   r  r   r  r   copyr   r}  r"   r   r  )rU   r~  rz   r  r   df2ress          r-   test_api_categoricalr    s'   %%)*B8T(8(8 9GG<L LLL##!!W "  ""4(D
}}'..__TD9Y  !34 : 
"F	

B '')C]+22:>CJJ&DJ>


=t
DC#" :9s   /E
Ec                $   UR                  U 5      n [        R                  " SU 5      (       a/  [        R                  " U SS9 nUR	                  S5        S S S 5        [        SS/SS//SS	/S
9nUR                  SU SS9  g ! , (       d  f       N2= f)Ntest_unicodeTr  rG   rH   rI   rJ      ér  r   Fr  )r|  r   r  r   r  r   r}  )rU   r~  r  r   s       r-   test_api_unicode_column_namer    s     ""4(D
}}^T**__TD9Y  0 : 
QFQF#fc]	;BII>t5I9	 :9s   B
Bc                   U nUR                  U 5      n [        R                  " SU 5      (       a/  [        R                  " U SS9 nUR	                  S5        S S S 5        [        / SQS[        R                  S/S.5      nUR                  SU SS	9  S
U;   a  SnOSn[        R                  " XP5      n[        R                  " Xd5        g ! , (       d  f       Nx= f)Nzd1187b08-4943-4c8d-a7f6Tr  r   rG   rH   r   r  r  Fr  r2  z'SELECT * FROM "d1187b08-4943-4c8d-a7f6"z'SELECT * FROM `d1187b08-4943-4c8d-a7f6`)r|  r   r  r   r  r   r   nanr}  r"   r   r  )rU   r~  r  r  r   r  r  s          r-   test_api_escaped_table_namer    s     I""4(D
}}.55__TD9Y  !:; : 
#rvvs);<	=BII,$eIDY99


U
)C#" :9s   C		
Cc                   SU ;   au  [         R                  " S5      n[        UR                  5      [        S5      :  a  U S;   d7  UR                  R                  [         R                  R                  SSS95        UR                  U 5      n [        R                  " SU 5      (       a/  [        R                  " U SS	9 nUR                  S5        S S S 5        [        / S
Q/ SQSS.5      nUR                  SU SS9  [        R                   " SU 5      n[        / SQ/ SQ/ SQ// SQS9n["        R$                  " XV5        g ! , (       d  f       Nu= f)Nrz   r7  z16.0)rf  r<  z!pyarrow->pandas throws ValueErrorTr  
test_tabler  r  r  rG   r  r  r   Fr  z)SELECT a, b, a +1 as a, c FROM test_table)rG   r  rH   rG   )rH   r   rI   rG   )rI   r  rJ   rG   )r  r  r  r   r   )r  r  r   r>   r  r  r  r  r|  r   r  r   r  r   r}  r  r  r   r  )rU   r~  par  r   r  r  s          r-   #test_api_read_sql_duplicate_columnsr  	  s    ~  +BNN#wv6DDLL##!!>t " 
 ""4(D
}}\4((__TD9Y  . : 
qA	BBII<TI7[[DdKF	8$H &+ :9s   >D??
Ec                0   U nUS:X  a,  UR                  [        R                  R                  SS95        UR	                  U 5      n [
        R                  " USU 5        SS/n[
        R                  " SXS9nUR                  R                  5       U:X  d   eg )Nrr  Not Implementedr  r  r   r   r   )
r  r  r  r  r|  r   r}  r#   r   r  )rU   r~  r   r  colsr  s         r-   test_read_table_columnsr   	  s     I$$FKK--5F-GH""4(DJJ{L$/:DdAF>>  "d***r,   c                F   U nUS:X  a,  UR                  [        R                  R                  SS95        UR	                  U 5      n [
        R                  " USU 5        [
        R                  " SU SS9nUR                  R                  S/:X  d   e[
        R                  " SU SS/S9nUR                  R                  SS/:X  d   e[
        R                  " SU SS/S	S
/S9nUR                  R                  SS/:X  d   eUR                  R                  5       S	S
/:X  d   eg )Nrr  r  r  r  r   r  r   r   r   r   )r  r   )r  r  r  r  r|  r   r}  r#   r   r  r   r  )rU   r~  r   r  r  s        r-   test_read_table_index_colr  0	  s    I$$FKK--5F-GH""4(DJJ{L$/dgFF<<'***dsCjIF<<#s+++dsCj3*F <<#s+++>>  "sCj000r,   c                   U S:X  a,  UR                  [        R                  R                  SS95        UR	                  U 5      n [
        R                  " SU 5      n[
        R                  " SU 5      n[        R                  " X#5        [
        R                  " SU 5      n[
        R                  " SU 5      n[        R                  " X#5        g )Nrt  r  r  r  r6   )r  r  r  r  r|  r   r"   r  r   r  r#   )rU   r~  iris_frame1iris_frame2s       r-   test_read_sql_delegater  G	  s    $$KKT  	
 ""4(D$$%94@K,,3T:K+3$$VT2K,,vt,K+3r,   c                x   U nSSK Jn  SSKJn  U" S5      U" S5      /nU H  n[	        X5      (       aE  UR                  5        nUR                  5          UR                  U5        S S S 5        S S S 5        MX  UR                  5          UR                  U5        S S S 5        M     [        R                  " S 5         [        R                  " SU5        [        R                  " SU5        S S S 5        g ! , (       d  f       N= f! , (       d  f       M  = f! , (       d  f       GM  = f! , (       d  f       g = f)Nr   ru   r   z,CREATE TABLE invalid (x INTEGER, y UNKNOWN);z0CREATE TABLE other_table (x INTEGER, y INTEGER);other_tablezSELECT * FROM other_table)r=   rv   r   r   rw   r   ri   rL   r   r  r   r#   r"   )rW  rU   rv   r   
query_listr  s         r-   test_not_reflect_all_tablesr  Z	  s    D( 	;<?@J
 d##4ZZ\LL' "   U#   
	#	#D	)=$/6= 
*	) "\    
*	)s<   DC5'D	D=/D+5
D?D
D	
D(	+
D9c                   U nUS:X  d  SU;   a,  UR                  [        R                  R                  SS95        UR	                  U 5      n [
        R                  " [        SS9   [        R                  " U 5       nUR                  SS5        S S S 5        S S S 5        [
        R                  " S 5         UR                  S	U S
9  S S S 5        g ! , (       d  f       NF= f! , (       d  f       NO= f! , (       d  f       g = f)Nrr  rz   zDoes not raise warningr  zThe provided table name 'TABLE1' is not found exactly as such in the database after writing the table, possibly due to case sensitivity issues. Consider using lower case table names.r  TABLE1r  CaseSensitiver  )r  r  r  r  r|  r   r  r  r   r   check_case_sensitiver}  )rU   r~  r   r  r  s        r-   (test_warning_case_insensitive_table_namer  s	  s    I$$)(;FKK--5M-NO""4(D		#	#J
 __T"b##Hb1 #
 
	#	#D	)T: 
*	)	 #"
 
 
*	)s0   %C <CC 5C1
C	C  
C.1
C?c                T   UR                  U 5      n SSKJn  [        S[	        SS/SS905      n[
        R                  " U 5       n[
        R                  " SXCS	9n[        UR                  R                  S   R                  U5      (       d   e S S S 5        g ! , (       d  f       g = f)
Nr   )	TIMESTAMPr   2014-12-12 01:542014-12-11 02:54Tutc	test_typer   )r|  r=   r!  r   r   r   r   SQLTablerw   r   r   r   )rU   r~  r!  r   r  r   s         r-   test_sqlalchemy_type_mappingr)  	  s    ""4(D$ 
	02DE4PQ
B 
	"["7%++--/44i@@@@ 
		s   A
B
B'zinteger, expected)int8SMALLINT)Int8r+  )uint8r+  )UInt8r+  )int16r+  )Int16r+  )uint16r  )UInt16r  )r  r  )Int32r  )uint32BIGINT)UInt32r5  )r   r5  )Int64r5  r   r5  r  c                B   UR                  U 5      n [        SS/S/US9n[        R                  " U 5       n[        R                  " SXTS9n[        UR                  R                  R                  R                  5      nS S S 5        WU:X  d   eg ! , (       d  f       N= f)Nr   rG   r  r   r?   r&  r'  )
r|  r   r   r   r(  r   r   r   r  r   )rU   r~  r  r  r   r  r   r  s           r-   test_sqlalchemy_integer_mappingr:  	  s    . ""4(D	Aq6C5	8B		"["7U[[]]__))* 
 X	 
	s   A	B
Br  uint64UInt64c                2   UR                  U 5      n [        SS/S/US9n[        R                  " U 5       n[        R
                  " [        SS9   [        R                  " SXCS9  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)	Nr   rG   r  r9  z1Unsigned 64 bit integer datatype is not supportedr  r&  r'  )r|  r   r   r   r  r  r  r(  )rU   r~  r  r   r  s        r-   (test_sqlalchemy_integer_overload_mappingr>  	  sy     ""4(D	Aq6C5	8B		"]]Q
 LLb3
 
	
 
 
	s#   BA7&B7
B	B
Bc                   [         R                  " S5        [        U 5      nSU-   nSnUR                  XTSSS9  [        R
                  " XT5      n[        R                  " XT5      nSn[        R                  " X5      n	[        R                  " X&5        [        R                  " X'5        [        R                  " X)5        g )Nr=   rQ  r6   r  Frz  r  )
r  r  r   r}  r   r  r#   r"   r   r  )
rR  r~  r   r   db_urir   r]  r   r  rf  s
             r-   test_database_uri_stringrA  	  s    
%
 y>DD FEE%P,,u-K$$U3K E$$U3K+3+3+3r,   pg8000c                    [         R                  " S5        Sn[         R                  " [        SS9   [        R
                  " SU5        S S S 5        g ! , (       d  f       g = f)Nr=   z)postgresql+pg8000://user:pass@host/dbnamerB  r  zselect * from table)r  r  r  ImportErrorr   r  )r~  r@  s     r-   (test_pg8000_sqlalchemy_passthrough_errorrE  	  s@    
% 9F	{(	3*F3 
4	3	3s   A
A!c                    U nUR                  U 5      n SSKJn  SU;   a	  U" S5      nOU" S5      n[        R                  " X@SS0S9n[        US	   5      nUS1:X  d   eg )
Nr   ru   r2  z%select * from iris where "Name"=:namez#select * from iris where name=:namer   zIris-versicolorr  r;   )r|  r=   rv   r   r  set)rU   r~  r  rv   	name_textiris_df	all_namess          r-   test_query_by_text_objrK  	  sp     I""4(DY@A	>?	ll9F<M3NOGGFO$I*++++r,   c                   UR                  U 5      n SSKJnJn  [	        5       nU" U5      R                  UR                  R                  U" S5      :H  5      n[        R                  " XPSS0S9n[        US   5      nUS1:X  d   eg )Nr   )	bindparamr  r   r   r  r;   )r|  r=   rM  r  rA   wherer   r;   r   r  rG  )rU   r~  rM  r  r6   name_selectrI  rJ  s           r-   test_query_by_select_objrP  	  sz    ""4(D
  D,$$TVV[[If4E%EFKll;fm5LMGGFO$I'''r,   c                .   U nUS:X  a,  UR                  [        R                  R                  SS95        UR	                  U 5      n [        / SQ/ SQS.5      nUR                  SU SS	9  [        R                  " SU 5      n[        R                  " XC5        g )
Nrr  r  r  r  rI   rJ   r   )r   z%_variationtest_column_percentageFr  )r  r  r  r  r|  r   r}  r   r#   r   r  )rU   r~  r  r   r  s        r-   test_column_with_percentagerT  
  s     I$$FKK--5F-GH""4(D	9=	>BII+UIC


5t
<C#"r,   c                   [         R                  " [        R                  " U 5      5       n[        R
                  " USUSS9S:X  d   e S S S 5        [         R                  " [        R                  " U 5      5       n[        R                  " SU5      nS S S 5        [        R                  " UW5        g ! , (       d  f       Np= f! , (       d  f       N7= f)Ntest_frame3_legacyFrj  rJ   z!SELECT * FROM test_frame3_legacy;)	rn  ro  rx   r   r   r}  r"   r   r  )rR  r   rU   r  s       r-   test_sql_open_closerW  
  s     
		GOOI6	74zz+';TOSTTTT 
8 
		GOOI6	74##$GN 
8 +v. 
8	7 
8	7s   B4<C4
C
Cc                     Sn Sn[         R                  " [        US9   [        R                  " SU 5        S S S 5        g ! , (       d  f       g = f)Nzmysql://root@localhost/pandasz-Using URI string without sqlalchemy installedr  r  )r  r  rD  r   r  )rU   r  s     r-   test_con_string_import_errorrY  !
  s5    *D
9C	{#	.)40 
/	.	.s	   ?
Ac                     " S S5      n [         R                  " U " S5      5       n[        R                  " [        SS9   [
        R                  " SU5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nc                  *    \ rS rSrSS jrS rS rSrg)htest_con_unknown_dbapi2_class_does_not_error_without_sql_alchemy_installed.<locals>.MockSqliteConnectioni+
  c                :    [         R                  " U0 UD6U l        g r  )rx   ry   rU   )selfargskwargss      r-   __init__qtest_con_unknown_dbapi2_class_does_not_error_without_sql_alchemy_installed.<locals>.MockSqliteConnection.__init__,
  s    **D;F;DIr,   c                .    [        U R                  U5      $ r  )getattrrU   )r^  r   s     r-   __getattr__ttest_con_unknown_dbapi2_class_does_not_error_without_sql_alchemy_installed.<locals>.MockSqliteConnection.__getattr__/
  s    499d++r,   c                8    U R                   R                  5         g r  )rU   rS   )r^  s    r-   rS   ntest_con_unknown_dbapi2_class_does_not_error_without_sql_alchemy_installed.<locals>.MockSqliteConnection.close2
  s    IIOOr,   )rU   N)returnNone)__name__
__module____qualname____firstlineno__ra  re  rS   __static_attributes__r+   r,   r-   MockSqliteConnectionr\  +
  s    	<	,	r,   rp  rm  zonly supports SQLAlchemyr  zSELECT 1)rn  ro  r   r  r  r   r  )rp  rU   s     r-   Jtest_con_unknown_dbapi2_class_does_not_error_without_sql_alchemy_installedrq  )
  sa      
		0<	='';UVLLT* W 
>	=VV 
>	=s#   A;A*A;*
A8	4A;;
B	c                <   U n[         R                  " SU5      n[         R                  " SU5      n[        R                  " X#5        Sn[
        R                  " [         R                  US9   [         R                  " SU5        S S S 5        g ! , (       d  f       g = f)Nr  z9Execution failed on sql 'iris': near "iris": syntax errorr  r6   )r   r"   r  r   r  r  r  DatabaseError)rt  rU   r  r  r  s        r-   test_sqlite_read_sql_delegatert  :
  sl    D$$%94@K,,3T:K+3
GC	s((	4VT" 
5	4	4s   ,B
Bc                B    [         R                  " U S5      nSU;   d   eg )Nry  r  )r   r  )r   r&  s     r-   test_get_schema2rv  E
  s     V4Jz!!!r,   c                ^   U n[        S[        SS/SS905      n[        R                  " U5      n[        R                  " SX2S9nUR                  5       nUR                  S5       HD  nUR                  5       S	   R                  S
5      S:X  d  M+  UR                  5       S   S:X  a  MD   e   g )Nr   r"  r#  Tr$  r&  r'  
r   r  rG   r!  )r   r   r   r   SQLiteTable
sql_schemasplitstrip)rr  rU   r   r  r   r   cols          r-   test_sqlite_type_mappingr~  K
  s    D		02DE4PQ
B 
		D	!BOOK6EF||D!99;q>$.99;q>[000 "r,   c                   U S:X  a  [         R                  " S5        UR                  U 5      n SSKJn  [        / SQ/ SQS.5      n[        R                  " U SS	9 nUR                  US
5      S:X  d   e S S S 5        U" U 5      nUR                  S
5      (       d   e[        R                  " U SS	9 nUR                  S
5        S S S 5        g ! , (       d  f       N^= f! , (       d  f       g = f)NrS  #sqlite_str has no inspection systemr   r         ?       @      @      @r  r  r  r  onetwoTr  r  rJ   )r  r  r|  r=   r   r   r   r   r}  r  r  rU   r~  r   r  r  insps         r-   test_create_tabler  ]
  s    |9:""4(D"#7@TUVJ		5
L9Q>>> 
6 4=D>>,'''' 
	5\* 
6	5 
6	5 
6	5s   C2C
C
C,c                   U S:X  a  [         R                  " S5        UR                  U 5      n SSKJn  [        / SQ/ SQS.5      n[        R                  " U 5       nUR                  5          UR                  US5      S	:X  d   e S S S 5        U" U 5      nUR                  S5      (       d   eUR                  5          UR                  S5        S S S 5         UR                  5         UR                  S5      (       a   e S S S 5        g ! , (       d  f       N= f! , (       d  f       NR= f! [         a     NPf = f! , (       d  f       g = f)
NrS  r  r   r   r  r  r  r  rJ   )r  r  r|  r=   r   r   r   r   rL  r}  r  r  clear_cacheAttributeErrorr  s         r-   test_drop_tabler  r
  s   |9:""4(D"#7@TUVJ		)&&(##J=BBB ) t}~~l++++&&(  . )	 >>,///// 
	(( )(  		 
	s`   D>-D8D>?DD>D.*D>
D	D>
D+	'D>.
D;8D>:D;;D>>
Er  c                   SnUR                  U 5      n[        U5       nUR                  5          UR                  X5      UR                  S   :X  d   e S S S 5        UR                  5          UR                  U5      b   e S S S 5        [        XC5      S:X  d   eUR                  U5      (       d   e S S S 5        g ! , (       d  f       No= f! , (       d  f       NR= f! , (       d  f       g = f)Ntemp_delete_rows_framer   )r|  r!   rL  r}  r   r  r   r  )r  r   r~  r   rU   r  s         r-   test_delete_rows_successr  
  s    )J""9-D	4	 I&&(##K<@Q@QRS@TTTT ) &&(((4<<< ) $+q000"":.... 
!	 (( )(	 
!	 s:   C!%B?C!.C1C!?
C		C!
C	C!!
C/c           
        [         R                  " S5      nSnSU S3nU S:w  a  SU ;  a  UR                  " U5      n[        SS/S	S
/S.SS9n[        / SQ/ SQS.SS9nUR	                  U 5      n[        U5       nUR                  5        n	U	R                  U5        S S S 5        UR                  5          UR                  XSSSS9  S S S 5        [         R                  " [        R                  R                  5         UR                  5          UR                  XcSSS9  S S S 5        S S S 5        UR                  5          UR                  SU 3SS9n
[        R                  " X5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N[= f! , (       d  f       g = f)Nr=   temp_delete_rows_atomic_framezCREATE TABLE z' (a INTEGER, b INTEGER UNIQUE NOT NULL)rr  rz   rG   rH   rI   rJ   r  r  r  )r      r  )r   r   r   r   Fr{  r   r  SELECT * FROM )r  r  rv   r   r|  r!   rL  rL   r}  r  r  rt   rs  rM  r   r  )r  r~  r=   r   
table_stmtoriginal_dfreplacing_dfrU   r  rX   	result_dfs              r-   test_delete_rows_is_atomicr  
  s   $$\2J0J ,STJ$$y)@__Z0
 1a&1v6gFK99=WML""9-D	4	 I&&(CKK
# ) &&([PUV ) ]]299223**,   U !  - 4 &&(!,, -W - I !!)9	 ) 
!	 (( )(
 -, 43 )( 
!	 s   ;GE<G6F6G>F/F!F/)G*G +G<
F
	G
F	G
F,(F//
F=	9G 
G	
G
Gc                   U S:X  a  [         R                  " S5        U nUR                  U 5      n [        U 5       nUR	                  5          UR                  US5      S:X  d   eUR                  S5      nS S S 5        S S S 5        SU;   a  WR                  SS0S	9nWR                  SS
S9  S UR                  l
        [        R                  " XR5        g ! , (       d  f       Ne= f! , (       d  f       Nn= f)NrS  r  ru  rJ   rw  rz   rx  ry  r   T)inplace)r  r  r|  r!   rL  r}  rM  rename	set_indexr   r   r   r  rz  s         r-   test_roundtripr  
  s    |9:I""4(D	4	 I&&(##K1GHAMMM))*NOF ) 
!
 (;Y'GH
Y- FLL&. )( 
!	 s#   C&*C6C&
C#	C&&
C4c                L   UR                  U 5      n [        U 5       nUR                  5          UR                  S5      nUR	                  5       nUR                  5         S S S 5        S S S 5        [        W5      / SQ:X  d   eg ! , (       d  f       N*= f! , (       d  f       N3= fr  )r|  r!   rL  rL   r   rS   r%  )rU   r~  r  r  r[   s        r-   test_execute_sqlr  
  s    ""4(D	4	 I&&($,,-ABL'')C  ) 
!
 9;;;;	 )( 
!	 s"   B2B B
B	B
B#c                f    UR                  U 5      n [        R                  " SU S9n[        U5        g )Nr6   rv  )r|  r   r#   r   r  s      r-   test_sqlalchemy_read_tabler  
  s,    ""4(D##F5JZ r,   c                    UR                  U 5      n [        R                  " SU SS/S9n[        R                  " UR
                  [        SS/5      5        g )Nr6   r7   )rn   r   SepalLength__1)r|  r   r#   r   assert_index_equalr   r   r  s      r-   "test_sqlalchemy_read_table_columnsr  
  sQ    ""4(D##D=-"@J *,,e]DT4U.VWr,   c                    UR                  U 5      n Sn[        R                  " [        US9   [        R
                  " SU S9  S S S 5        g ! , (       d  f       g = f)Nz!Table this_doesnt_exist not foundr  this_doesnt_existrv  )r|  r  r  r  r   r#   )rU   r~  r  s      r-   test_read_table_absent_raisesr  
  sB    ""4(D
-C	z	-.D9 
.	-	-s   A
Ac                d   U nUS:X  a  [         R                  " S5        O8SU;   d  SU;   a,  UR                  [         R                  R	                  SS95        UR                  U 5      n [        R                  " SU 5      n[        UR                  R                  R                  [        R                  5      (       d   e[        UR                  R                  R                  [        R                  5      (       d   e[        UR                   R                  R                  [        R"                  5      (       d   e[        UR$                  R                  R                  [        R                  5      (       d   e[        UR&                  R                  R                  [(        5      (       d   eg )NrS  .types tables not created in sqlite_str fixturer&   r%   z#boolean dtype not inferred properlyr  r   )r  r  r  r  r  r|  r   r#   r   r   r?   r   r   r   r   r  r   r  r   r   r  r  s       r-   'test_sqlalchemy_default_type_conversionr  
  s6   IL DE	I	Y!6KK%JK	
 ""4(D			GT	*Bbkk'',,bkk::::biioo**BJJ7777bjj&&++RXX6666 b''--22BKK@@@@b((..33V<<<<r,   c                    UR                  U 5      n [        SS/0S9nUR                  SU SS9S:X  d   e[        R                  " SU 5      n[
        R                  " X#5        g )Ni64l            )r   test_bigintFr  rG   r  rU   r~  r   r  s       r-   r  r    sb     ""4(D	(	)B99-T9?1DDDt4F"%r,   c                t   U nUS:X  a  [         R                  " S5        O2SU;   a,  UR                  [         R                  R	                  SS95        UR                  U 5      n [        R                  " SU 5      n[        UR                  R                  R                  [        R                  5      (       d   eg )NrS  r  r%   z"sqlite does not read date properlyr  r   )r  r  r  r  r  r|  r   r#   r   r   r?   r   r   r  r  s       r-   test_default_date_loadr    s    IL DE	Y	KK%IJ	
 ""4(D			GT	*Bbjj&&++R]];;;;r,   r  r   c                    UR                  U 5      n [        U 5      n[        SXS9nUR                  n[        R
                  " XS5        g )Nselect * from datetzr  )r|  r   r"   r   r   r   )rU   r~  r  r  r   r}  s         r-   !test_datetime_with_timezone_queryr  ,  sF     ""4(D.t4H 
.	NB


C3)r,   c           
         UR                  U 5      n [        U 5      n[        [        [	        SU SS95      SS9nUR
                  n[        R                  " XB5        g )Nr  rG   r  Tr  )r|  r   r   r%  r"   r   r   r   )rU   r~  r  r   r}  s        r-   +test_datetime_with_timezone_query_chunksizer  ;  sV    ""4(D.t4H	^2DAFG
B 

C3)r,   c                    UR                  U 5      n [        U 5      n[        R                  " SU 5      nUR	                  5       n[
        R                  " X45        g )Nr   )r|  r   r   r#   rp  r   r  )rU   r~  r  r  	exp_frames        r-   !test_datetime_with_timezone_tabler  H  sJ    ""4(D.t4H$/F!!#I&,r,   c           
     t   U nUR                  U 5      n [        S[        SSSSS905      nUR                  SU SS	9S:X  d   eS
U;   a"  US   R                  R                  S5      US'   O!US   R                  R                  S 5      US'   [        R                  " SU 5      n[        R                  " XC5        [        R                  " SU 5      nSU;   aN  [        UR                  S   [        5      (       d   e[        US   5      R                  R!                  S5      US'   [        R                  " XC5        g )Nr   2013-01-01 09:00:00rI   
US/Pacificus)periodsr   unittest_datetime_tzFr  r'   r   zSELECT * FROM test_datetime_tzr%   r   r   )r|  r   r   r}  dt
tz_converttz_localizer   r#   r   r  r"   rw   locr   r   as_unit)rU   r~  r  r  r  s        r-   %test_datetime_with_timezone_roundtripr  R  s'   I""4(D
 	j.lQUVWH ?? 2E?JaOOOy  ((33E: !((44T: 2D9F&+ @$GF9&**V,c2222!&+.1199$?s&+r,   c           	     2   UR                  U 5      n [        S[        SSS5      0S/S9nUR                  SU SS9S:X  d   e[        R
                  " SU 5      n[        [        R                  " [        SSS5      /S	S
9S/S9n[        R                  " X45        g )Nr   i'  rG   r   rj  test_datetime_obbFr  M8[us]r  r   )
r|  r   r   r}  r   r#   r   r  r   r  )rU   r~  r   r  r  s        r-   test_out_of_bounds_datetimer  q  s     ""4(DfhtQ23A3?D;;/T;G1LLL 3T:F
(4A&'x86(H &+r,   c                
   UR                  U 5      n [        SSSSS9R                  S 5      n[        S[	        S5      0US9nUR                  SU S	S
9S:X  d   e[        R                  " SU S	S9n[        R                  " XCSS9  g )Nz
2018-01-01r   6hr  )r  freqr  numsrj  	foo_table	info_date)r   rn   r  r  F)check_names)
r|  r   
_with_freqr   r  r}  r   r#   r   r  )rU   r~  datesr  r  s        r-   "test_naive_datetimeindex_roundtripr  ~  s     ""4(D|QTEPPQUVE&%(+59H??;?OSTTTTT[IF&>r,   c                
   U nUR                  U 5      n [        R                  " SU 5      nSU;   a  [        O[        R
                  n[        UR                  R                  R                  U5      (       d   e[        R                  " SU S/S9n[        UR                  R                  R                  [        R
                  5      (       d   e[        R                  " SU SS0S9n[        UR                  R                  R                  [        R
                  5      (       d   e[        R                  " SU SSS00S9n[        UR                  R                  R                  [        R
                  5      (       d   e[        R                  " SU S/S9n[        UR                  R                  R                  [        R
                  5      (       d   e[        R                  " SU SS0S9n[        UR                  R                  R                  [        R
                  5      (       d   e[        R                  " SU SS	S00S9n[        UR                  R                  R                  [        R
                  5      (       d   eg )
Nr   r%   r   r  r  formatr   rq  r  )r|  r   r#   r  r   r  r   r   r?   r   r   )rU   r~  r  r   expected_types        r-   test_date_parsingr    s    I""4(D			GT	*B&)3FMbjj&&++];;;;			GT	{	CBbjj&&++R]];;;;			GT	CV7W	XBbjj&&++R]];;;;			+> ?@
B
 bjj&&++R]];;;;			GT~	FBbmm))..>>>>			GTc7J	KBbmm))..>>>>			GTvsm7T	UBbmm))..>>>>r,   c                L   U nUR                  U 5      n [        [        SSS9[        R                  " S5      S.5      nUR                  SU S9S:X  d   e[        R                  " SU 5      nUR                  SS	S
9nUS S  nUS   R                  S5      US'   [        R                  " XE5        [        R                  " SU 5      nUR                  SS	S
9nSU;   a5  [        UR                  S   [        5      (       d   e[!        US   5      US'   [        R                  " XE5        g )Nr  rI   r  r  r  test_datetimer  r   rG   )axisr   r  SELECT * FROM test_datetimer%   r  )r|  r   r   r   ro  r}  r   r#   rj   r   r   r  r"   rw   r  r   r   rU   r~  r  r   r  r  s         r-   r  r    s   I""4(D	.:3P
B 99/t94999 6F[[q[)F!uHSM((2HSM&+  =tDF[[q[)F9&**V,c2222!&+.s&+r,   c                F   U nUR                  U 5      n [        [        SSS9[        R                  " S5      S.5      n[        R
                  UR                  S'   UR                  SU SS	9S:X  d   e[        R                  " SU 5      nUS S  nUS
   R                  S5      US
'   [        R                  " XE5        [        R                  " SU 5      nSU;   a4  [        UR                  S   [        5      (       d   e[!        US
   SS9US
'   [        R                  " XE5        g )Nr  rI   r  r  r  rG   r   r  Fr  r   r  r  r%   r  r  rs   )r|  r   r   r   ro  r  r  r}  r   r#   r   r   r  r"   rw   r   r   r  s         r-   test_datetime_NaTr    s   I""4(D	.:3P
B VVBFF6N99/t59AQFFF 6F!uHSM((2HSM&+  =tDF9&**V,c2222!&+h?s&+r,   c                   UR                  U 5      n [        [        SSS5      [        SSS5      /S/S9nUR                  SU SS9S:X  d   e[	        SU 5      nUS   n[        US   5      n[        R                  " XE5        g )	N  rG   rH   r  r   	test_dateFr  )r|  r   r   r}  r#   r   r   r   )rU   r~  r   r  r  r  s         r-   test_datetime_dater    s     ""4(D	Dq!$d4A&67#	GB99+4u9=BBB
d
+CXF2c7#H6,r,   c                   U nUR                  U 5      n [        [        SSS5      [        SSS5      /S/S9nUR                  SU SS	9S
:X  d   e[	        SU 5      n[
        R                  " XT5        Un[        R                  " USUSS9S
:X  d   e[        R                  " SU5      nUR                  S 5      n[
        R                  " Xu5        [        R                  " USU SS9S
:X  d   eSU;   a?  [        R                  " SU 5      nUR                  S 5      n[
        R                  " Xu5        [        R                  " SU 5      n[
        R                  " XE5        g )N	   r   rG      r  r   	test_timeFr  rH   
test_time2rj  zSELECT * FROM test_time2c                $    U R                  S5      $ Nz%H:%M:%S.%fstrftime_s    r-   <lambda>$test_datetime_time.<locals>.<lambda>  s    1::m4r,   
test_time3r%   zSELECT * FROM test_time3c                $    U R                  S5      $ r  r  r  s    r-   r  r     s    qzz-8r,   )
r|  r   r   r}  r#   r   r  r   r"   map)rU   r~  rr  r  r   r  rW  refs           r-   test_datetime_timer    s<    I""4(D	DAqM41b>2SE	BB99+4u9=BBB
d
+C#" !K::b,5AQFFF


7
EC
&&4
5C##::b,E:a???9  !;TBff89
c'


\4
0C""r,   c                (   UR                  U 5      n [        S[        R                  S9n[        S[        R                  S9n[        X#S.5      nUR                  SU SS9S:X  d   e[        R                  " SU 5      n[        R                  " XESS	S
9  g )Ni  r  g        )s1rr  test_read_writeFr  rG   T)check_dtypecheck_exact)r|  r   r   r  float32r   r}  r   r#   r   r  )rU   r~  r  rr  r   r  s         r-   test_mixed_dtype_insertr    s     ""4(D			*B	2::	&B	"'	(B 99+U9CqHHH


.
5C"u$Gr,   c                J   UR                  U 5      n [        / SQS[        R                  S/S.5      nUR	                  SU SS9S:X  d   e[
        R                  " SU 5      n[        R                  " X25        [
        R                  " S	U 5      n[        R                  " X25        g )
Nr  r   r  r  test_nanFr  rI   SELECT * FROM test_nan)
r|  r   r   r  r}  r   r#   r   r  r"   r  s       r-   test_nan_numericr    s     ""4(D	#rvvs);<	=B99*$e9<AAA 
D1F&%  8$?F&%r,   c                   UR                  U 5      n [        / SQ[        R                  [        R                  [        R                  /S.5      nUR	                  SU SS9S:X  d   e[
        R                  " SU 5      n[        R                  " X25        US   R                  S5      US'   S US'   [
        R                  " S	U 5      n[        R                  " X25        g )
Nr  r  r  Fr  rI   r   r  r  )r|  r   r   r  r}  r   r#   r   r  r   r"   r  s       r-   test_nan_fullcolumnr
  %  s     ""4(D	"&&"&&"&&)AB	CB99*$e9<AAA 
D1F&% gnnX&BsGBsG 8$?F&%r,   c                h   UR                  U 5      n [        / SQSS[        R                  /S.5      nUR	                  SU SS9S:X  d   eS UR
                  S	'   [        R                  " SU 5      n[        R                  " X25        [        R                  " S
U 5      n[        R                  " X25        g )Nr  r  r  r  r  Fr  rI   rH   r   r  )r|  r   r   r  r}  r  r   r#   r   r  r"   r  s       r-   test_nan_stringr  7  s     ""4(D	#sBFF);<	=B99*$e9<AAA BFF6N 
D1F&%  8$?F&%r,   c                &   SU ;   a7  UR                   R                  [        R                  R	                  SSS95        U nUR                  U 5      n [        R                  " SS// SQS/S	9nS
n[        U 5       nUR                  5          UR                  X45      S:X  d   e S S S 5        S S S 5        US;   au  [        R                  " SU S3U 5      n/ nUR                   HG  n[        R                  " SU S3U 5      n	UR                  U	R                  R                  5       5        MI     O3SSKJn
  U
" U 5      nUR%                  U5      nU Vs/ s H  oS   PM	     nnUS//:X  d   eg ! , (       d  f       N= f! , (       d  f       N= fs  snf )Nrz   z)ADBC implementation does not create indexTr  r  r  r  r   r  test_to_sql_saves_indexrH   >   rS  rr  zASELECT * FROM sqlite_master WHERE type = 'index' AND tbl_name = ''zPRAGMA index_info()r   r   column_names)r  r  r  r  r  r|  r   r  r!   rL  r}  r   r"   r   r   r  r=   r   get_indexes)rU   r~  r  r   tbl_namer  ixsix_colsix_nameix_infor   r  r  s                r-   test_to_sql_save_indexr  J  s   ~KKB4  	

 I""4(D				-.PSu
B )H	4	 I&&(##B1Q666 ) 
! 44  'j+

 xxG((+=gYa)H$OGNN7<<..01   	't}x(.12c^$c2ug+ )( 
!	 ( 3s*   9E=
E,#E=F,
E:	6E==
Fc                "   U nUR                  U 5      n SnUS:w  a  SU;  a  SSKJn  U" U5      n[        U 5       nUR	                  5        nUR                  U5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)N'CREATE TABLE test_trans (A INT, B TEXT)rr  rz   r   ru   )r|  r=   rv   r!   rL  rL   )rU   r~  r  rW   rv   r  transs          r-   test_transactionsr  r  sy    I""4(D4D$$y)@#Dz	4	 I&&(EMM$ ) 
!	 (( 
!	 s#   B A/B /
A=	9B  
Bc                   U nUR                  U 5      n [        U 5       nUR                  5        nSnSU;   d  [        U[        5      (       a  UR                  U5        OSSKJn  U" U5      nUR                  U5        S S S 5         " S S[        5      nSn[        U[        5      (       a  SSKJn  U" U5      n UR                  5        nUR                  U5        U" S5      e! , (       d  f       Nm= f! , (       d  f       O= f! U a     Of = fUR                  5          UR                  S	5      n	S S S 5        O! , (       d  f       O= f[        W	5      S:X  d   eUR                  5        nUR                  U5        UR                  S	5      n
S S S 5        O! , (       d  f       O= f[        W
5      S
:X  d   e S S S 5        g ! , (       d  f       g = f)Nr  rz   r   ru   c                      \ rS rSrSrg)1test_transaction_rollback.<locals>.DummyExceptioni  r+   N)rk  rl  rm  rn  ro  r+   r,   r-   DummyExceptionr     s    r,   r!  z/INSERT INTO test_trans (A,B) VALUES (1, 'blah')r  zSELECT * FROM test_transrG   )r|  r!   rL  rw   r   rL   r=   rv   	Exceptionr   rM  r  )rU   r~  r  r  r  rW   rv   r!  ins_sqlr  r  s              r-   test_transaction_rollbackr$    s   I""4(D	4	 I&&(E<D"jN&K&Kd#+Dzd# )	Y 	 Di--'7mG	**,g&$W--- )(( -,  		 &&(&&'ABC )((3x1}} &&(EMM'"''(BCD )(( 4yA~~G 
!	 	 s   G	AC&?<G	<DC7&
C4	0G	7
D	DG	DDG	DG	$D?6	G	?
E		(G	1#F	G	
F+	'G		
Gc                b   U S:X  a,  UR                  [        R                  R                  SS95        UR	                  U 5      n SSKJn  SSKJn  Sn[        R                  " X%U S9nUR                  S S nU" U5      n[        X5      (       aD  U R                  5        nUR                  5          UR                  U5        S S S 5        S S S 5        OU R                  U5        [        R                   " XP5      n	["        R$                  " XS	S
9  g ! , (       d  f       NT= f! , (       d  f       NK= f)NrS  z(test does not support sqlite_str fixturer  r   ru   r   test_get_schema_create_tablerv  Fr  )r  r  r  r  r|  r=   rv   r   r   r   r  r   rw   r   ri   rL   r#   r   r  )
rU   r~  r   rv   r   r  r&  blank_test_dfnewconreturned_dfs
             r-   r&  r&    s    
 |KK%OP	
 ""4(D(
(Cd;J$$Ra(Mj!J$\\^vz*   ^ 	Z $$S/K+uM   ^s$   D /DD 
D	D  
D.c                J   U S:X  a  [         R                  " S5        UR                  U 5      n SSKJnJn  SSKJn  SS/nSS	/n[        XeS
9nUR                  SU S9S:X  d   eUR                  SU SU0S9S:X  d   eU" 5       nUR                  U S9  UR                  S   R                  S   R                  n	[        X5      (       d   eSn
[         R                  " [         U
S9   UR                  SU S["        0S9  S S S 5        UR                  SU SU" S5      0S9S:X  d   eUR                  U S9  UR                  S   R                  S   R                  n	[        X5      (       d   eU	R$                  S:X  d   eUR                  SXS9S:X  d   eUR                  U S9  UR                  S   R                  S   R                  nUR                  S   R                  S   R                  n[        X5      (       d   e[        X5      (       d   eg ! , (       d  f       GN= f)NrS  r  r   )r}   r4   r3   r   r   g?Tg?Nr   
dtype_testr  rH   dtype_test2r   rn   r?   rd   z&The type of B is not a SQLAlchemy typer  r  dtype_test3
   single_dtype_test)r  r  r|  r=   r}   r4   sqlalchemy.schemar3   r   r}  reflecttablesr   r   rw   r  r  r   r  )rU   r~  r}   r4   r3   r  r   r   metasqltyper  sqltypeasqltypebs                r-   
test_dtyper;    s   |9:""4(D +:D%D	4	&B99,D91Q66699-T#t9EJJJ:DLLdLkk-(005::Gg$$$$
2C	z	-
		wDc
	; 
. 99-T#vbz9J9KqPPPLLdLkk-(005::Gg&&&&>>R 99-49DIIILLdL{{./77<AAH{{./77<AAHh%%%%h%%%%! 
.	-s   %H
H"c                   U S:X  a  [         R                  " S5        U nUR                  U 5      n SSKJnJnJnJn  SSKJ	n  [        SS /5      [        [        SSS	5      S /5      [        S	S /S
S9[        SS /5      S.n[        U5      n	Sn
U	R                  XS9S:X  d   e[        R                  " X5      nU" 5       nUR!                  U S9  SU;   a  UOUnUR"                  U
   R$                  n['        US   R(                  U5      (       d   e['        US   R(                  U5      (       d   e['        US   R(                  U5      (       d   e['        US   R(                  U5      (       d   eg )NrS  r  r   )r~   r   r2   r   r+  T  r   rG   r  r  r  BoolDateIntr2   notna_dtype_testr  rH   rd   r&   r?  r@  rA  r2   )r  r  r|  r=   r~   r   r2   r   r4  r3   r   r   r   r}  r   r#   r5  r6  r   rw   r   )rU   r~  r  r~   r   r2   r   r3   r  r   r  r  r7  my_typecol_dicts                  r-   test_notna_dtyperE    sg   |9:I""4(D  + d|$q!,d34q$ix0d$	D 
4B
C99#9(A---3%A:DLLdL I-g7G{{3''Hhv&++W5555hv&++X6666huo**G4444hw',,e4444r,   c                   U S:X  a  [         R                  " S5        UR                  U 5      n SSKJnJnJn  SSKJn  Sn[        [        U/SS9[        U/S	S9[        U/S	S9[        S
/SS9[        S
/SS9S.5      nUR                  SU SSSU" SS90S9S:X  d   e[        R                  " SU 5      n[        R                  " US   R                   S   S5      [        R                  " US   R                   S   S5      :X  d   eU" 5       n	U	R#                  U S9  U	R$                  S   R&                  n
[)        U
S   R*                  5      [)        U
S   R*                  5      :X  d   e[-        U
S   R*                  U5      (       d   e[-        U
S   R*                  U5      (       d   e[-        U
S   R*                  U5      (       d   e[-        U
S   R*                  U5      (       d   eg )NrS  r  r   )
BigIntegerr2   r   r+  gYB?r  r  float64r   r  r   )f32f64
f64_as_f32i32r  test_dtypesFr  rK     )	precision)r   rn   r   r{  r?   rG   rJ     rd   rI  rL  r  )r  r  r|  r=   rG  r2   r   r4  r3   r   r   r}  r   r#   r   roundr   r5  r6  r   r   r   rw   )rU   r~  rG  r2   r   r3   Vr   r  r7  rD  s              r-   test_double_precisionrS    s   |9:""4(D 
 +A	1#Y/1#Y/ !I61#W-1#W-	

B 			!45 	 	
 			 

]D
1C 88BuINN1%r*bhhs5zq7I2.NNNN :DLLdL{{=)11Hx##$H\,B,G,G(HHHHhuo**E2222huo**E2222huo**G4444huo**J7777r,   c                   ^^^^ UR                  U 5      n SSKJm  S mS mUU4S jmUU4S jn[        S/ SQ05      R	                  SU S	9S
:X  d   eU" U 5        g )Nr   r   c                .    Sn[         R                  " XS9$ )Nz'SELECT test_foo_data FROM test_foo_datarv  )r   r"   )r  r  s     r-   test_select3test_connectable_issue_example.<locals>.test_selectU  s    9!!%88r,   c                &    UR                  SU SS9  g )Ntest_foo_datar   )r   rn   r{  )r}  )r  r   s     r-   test_append3test_connectable_issue_example.<locals>.test_appendY  s    jHMr,   c                &   > T" U 5      nT" X5        g r  r+   )rU   foo_datarZ  rV  s     r-   test_connectable8test_connectable_issue_example.<locals>.test_connectable\  s     t$D#r,   c                   > [        U T5      (       a;  U R                  5        nUR                  5          T" U5        S S S 5        S S S 5        g T" U 5        g ! , (       d  f       N = f! , (       d  f       g = fr  )rw   r   ri   )connectablerU   r   r^  s     r-   main,test_connectable_issue_example.<locals>.mainb  sW    k6**$$&$ZZ\$T* " '& [) "\ '&s!   A(	AA(
A%	!A((
A6rY  r  r  rI   )r|  r   r   r   r}  )rU   r~  rb  r   rZ  r^  rV  s      @@@@r-   test_connectable_issue_examplerd  M  sh    ""4(D )9N$* 	?I./66OQU6V		 	Jr,   inputr  bar)r  infe0c                   [        U5      nU nUR                  U 5      n SU;   aJ  Sn[        R                  " [        R
                  R                  US9   UR                  SU SS9  S S S 5        g UR                  SU SS9S:X  d   e[        R                  " SU 5      n[        R                  " X65        g ! , (       d  f       g = f)Nr&   Execution failed on sqlr  foobarFr  rG   )r   r|  r  r  r  rt   rs  r}  r   r#   r   assert_equal)rU   r~  re  r   r  r  r  s          r-   test_to_sql_with_negative_npinfrl  q  s     
5	BI""4(D) (]]29922#>II8UI; ?> yyhDy>!CCC  40
  ?>s   B44
Cc                  ^^^ U S:X  a  [         R                  " S5        UR                  U 5      n SSKJmJmJmJn  SSKJ	nJ
n  Sn[        SU/05      nU" 5       n " UUU4S jS	U5      nU" U 5       n	U	R                  5          U	R                  5       n UR                  R                  U 5        U	R!                  U" US
95        U	R#                  5         [$        R&                  " U" UR(                  5      U S9n
S S S 5        S S S 5        [*        R,                  " W
U5        g ! , (       d  f       N.= f! , (       d  f       N7= f)NrS  z&test does not work with str connectionr   )r0   r   Unicoder  )Sessiondeclarative_basezHello, World!spamc                  T   > \ rS rSrSrSS/0r Y "  YSS9r Y "  Y" S5      SS	9rS
rg)'test_temporary_table.<locals>.Temporaryi  	temp_testprefixes	TEMPORARYTprimary_keyr  F)nullabler+   N)	rk  rl  rm  rn  __tablename____table_args__idrq  ro  )r0   r   rn  s   r-   	Temporaryrs    s0    #${m4G.gbkE2r,   r}  )rq  )r   rn   )r  r  r|  r=   r0   r   rn  r  sqlalchemy.ormro  rp  r   ri   r  	__table__rk   addflushr   r"   rq  r   r  )rU   r~  r  ro  rp  r/  r  Baser}  sessionr   r0   r   rn  s              @@@r-   test_temporary_tabler    s    |<=""4(D 
  I&9+./HD3 3D 3 
']]_%%'D&&t,KK	y12MMO##y~~(>DIB  
 "h' _ 
s%   4D4A6D#;D4#
D1	-D44
Ec                l   U S:X  d  SU ;   a,  UR                  [        R                  R                  SS95        UR	                  U 5      n Sn[        U 5       n[        R                  " [        US9   UR                  USSS	9  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)
Nrr  rz   z9SQLiteDatabase/ADBCDatabase does not raise for bad enginer  z*engine must be one of 'auto', 'sqlalchemy'r  r   
bad_enginer   )	r  r  r  r  r|  r!   r  r  r}  )rU   r~  r   r  r  s        r-   test_invalid_enginer    s    6T>KKR  	
 ""4(D
6C	4	 I]]:S1[-M 2 
!	 11 
!	 s$   B%1BB%
B"	B%%
B3c                `   UR                  U 5      n [        U 5       nUR                  5          UR                  USSS9S:X  d   eUR	                  S5      (       d   e SSS5        SSS5        [        U5      n[        U S5      nXT:X  d   eg! , (       d  f       N5= f! , (       d  f       N>= f)z `to_sql` with the `engine` paramr   autor  rJ   N)r|  r!   rL  r}  r  r  r   ra  s         r-   test_to_sql_with_sql_enginer    s     ""4(D	4	 I&&(##Kv#NRSSSS&&}5555 ) 
!
 k"K$.H""" )( 
!	 s"   B0BB
B	B
B-c                   UR                  U 5      n [        R                  " SS5         [        U 5       nUR	                  5          UR                  US5      S:X  d   eUR                  S5      (       d   e S S S 5        S S S 5        [        U5      n[        U S5      nXT:X  d   e S S S 5        g ! , (       d  f       N>= f! , (       d  f       NG= f! , (       d  f       g = f)Nio.sql.enginer=   r   rJ   	r|  r  option_contextr!   rL  r}  r  r  r   ra  s         r-   test_options_sqlalchemyr    s     ""4(D			?L	9t$	**, '']CqHHH **=9999 - %
 +&dM2&&& 
:	9,, %$ 
:	9:   CC1B08C &C0
B>:C
C	C
C c                   UR                  U 5      n [        R                  " SS5         [        U 5       nUR	                  5          UR                  US5      S:X  d   eUR                  S5      (       d   e S S S 5        S S S 5        [        U5      n[        U S5      nXT:X  d   e S S S 5        g ! , (       d  f       N>= f! , (       d  f       NG= f! , (       d  f       g = f)Nr  r  r   rJ   r  ra  s         r-   test_options_autor    s     ""4(D			?F	3t$	**, '']CqHHH **=9999 - %
 +&dM2&&& 
4	3,, %$ 
4	3r  c                 8   [         R                  " S5        [        [        S5      [        5      (       d   e[
        R                  " SS5         [        [        S5      [        5      (       d   e[        [        S5      [        5      (       d   e S S S 5        [
        R                  " SS5         [        [        S5      [        5      (       d   e[        [        S5      [        5      (       d   e S S S 5        g ! , (       d  f       Np= f! , (       d  f       g = f)Nr=   r  r  )r  r  rw   r    r   r  r  r+   r,   r-   test_options_get_enginer    s    
%j.0@AAAA			?L	9*V,.>????*\24DEEEE 
: 
		?F	3*V,.>????*\24DEEEE 
4	3	 
:	9 
4	3s   AC:/AD:
D
Dfuncr  r"   c                p   U nUR                  U 5      n SnUn	U	R                  XSSS9  [        R                  " SU5         [	        [        U5      " SU 3XS9n
U" X$U5      nS S S 5        [
        R                  " W
W5        SU;   a,  UR                  [        R                  R                  S	S
95        [        R                  " SU5         [	        [        U5      " SU 3U USS9nU" X$U5      nU H  n
[
        R                  " X5        M     S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nry  Fr  r   rn   r   r{  mode.string_storageSelect * from dtype_backendrz   z(adbc does not support chunksize argumentr  rI   )rn   r  r  )r|  r}  r  r  rd  r   r  r  r  r  r  rU   r~  string_storager  r  dtype_backend_datadtype_backend_expectedr  r   r   r  r  iterators                r-   test_read_sql_dtype_backendr    s/    I""4(DE	BII5%9IE			0.	AT"UG$d
 *.S	 
B &(+KK%OP	
 
		0.	A2t$UG$'	
 *.SF!!&3  
B	A 
B	A 
B	As    "D
AD'
D$'
D5r#   c                ~   SU ;   a2  SU ;  a,  UR                  [        R                  R                  SS95        U nUR	                  U 5      n SnUn	U	R                  XSSS9  [        R                  " S	U5         [        [        U5      " XUS
9n
U" X$U5      nS S S 5        [        R                  " W
W5        SU;   a  g [        R                  " S	U5         [        [        U5      " UU USS9nU" X$U5      nU H  n
[        R                  " X5        M     S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr%   rz   zhSQLite actually returns proper boolean values via read_sql_table, but before pytest refactor was skippedr  ry  Fr  r  r  r  rI   )r  r  )r  r  r  r  r|  r}  r  r  rd  r   r  r  s                r-   !test_read_sql_dtype_backend_tabler  &  s5    4F$.KKM  	
 I""4(DE	BII5%9IE			0.	AT"5mL).S 
B &(+			0.	A2t$'	
 *.SF!!&3  
B	A 
B	A 
B	As   8DA D.
D+.
D<)r  r#   r"   c                    UR                  U 5      n SnUnUR                  X@SSS9  Sn[        R                  " [        US9   [        [        U5      " X@SS9  S S S 5        g ! , (       d  f       g = f)	Nry  Fr  r  zPdtype_backend numpy is invalid, only 'numpy_nullable' and 'pyarrow' are allowed.r  numpyr  )r|  r}  r  r  r  rd  r  )rU   r~  r  r  r   r   r  s          r-   )test_read_sql_invalid_dtype_backend_tabler  V  sg     ""4(DE	BII5%9IE	!  
z	-D%W= 
.	-	-s   A!!
A/c                     [        [        S[        R                  S/SS9[        / SQSS9[        S[        R                  S/SS9[        / S	QSS9/ S
Q/ SQ/ SQ/ SQS.5      $ )NrG   rI   r7  r  r  r        @Float64r  r  r  )TFNTFTr
  r  r  Nr  r  r   defgh)r   r   r  NAr+   r,   r-   r  r  f  s]    BEE1W5	1beeS);y9$$ !		
 r,   c                     SS jn U $ )Nc                   US:X  a;  [         R                  " S5      n[        R                  " UR	                  5       5      nO[        R
                  " U 5      n[        [        S[        R                  S/SS9[        / SQSS9[        S[        R                  S/S	S9[        / S
QS	S9[        SS[        R                  /SS9[        / SQSS9[        / SQUS9[        / SQUS9S.5      nUS:X  aX  [         R                  " S5      nSSK	J
n  [        UR                   Vs0 s H  nXv" UR                  XW   SS95      _M     sn5      nSU;   d  SU;   a0  US:X  a  UR                  SSS.5      nU$ UR                  SSS.5      nU$ s  snf )Nr7  rG   rI   r7  r  r  r  r  r  r  TFbooleanr  r
  r  r  r   )ArrowExtensionArray)from_pandasr&   r%   numpy_nullable)r  r  zint64[pyarrow])r  r  r  
ArrowDtyper  StringDtyper   r   r  pandas.arraysr  r   r  r   )r  r  r  r  string_dtyper   r  r}  s           r-   r  $dtype_backend_expected.<locals>.funcx  st   I%$$Y/B==5L>>.9LQqM9IW5S"%%-Y?O9=T5"%%0	B/yAO<@,LA	
 I%$$Y/B9  "zz) ,RXXbg4X-PQQ)B i8y#8 00YYW7;< 	 YY%5<LMN	s   "Fri  r   r+   )r  s    r-   r  r  v  s    &P Kr,   c                r   SU ;   a6  UR                   R                  [        R                  R	                  SS95        UR                  U 5      n SSS.n[        SS/S	9R                  U5      nUR                  5       nUR                  S
U SSS9  [        SU USS9 H  n[        R                  " XT5        M     g )Nrz   r  r  r   r  r  r  r  r   ry  Fr  r  zSELECT * FROM testrG   )r?   r  )r  r  r  r  r  r|  r   r   r  r}  r"   r   r  )rU   r~  r   r   r  r  s         r-   test_chunksize_empty_dtypesr    s     ~KK%RS	
 ""4(D*F	C:	&	-	-f	5BwwyHII6t5IIF 	 	f/r,   r  r  c                \   UR                  U 5      n Sn[        / SQSS.5      nUR                  X@SSS9  [        [        U5      " SU 3U S	[
        R                  0US
9n[        [        / SQ[
        R                  S9[        / SQUS:X  d  SOSS9S.5      n[        R                  " Xg5        g )Nry  r  r   r  Fr  r  r  r  )r?   r  r  )r   r   r   r  r   r7  )
r|  r   r}  rd  r  r   rH  r   r   r  )rU   r~  r  r  r   r   r  r  s           r-   test_read_sql_dtyper    s    
 ""4(DE	+	,BII5%9IER
 BJJ#	F 	4%26F%FgG	
H &+r,   c                    U n[        SSS/0SS9nUR                  SUSS9S:X  d   e[        R                  " S 5         [        R
                  " SU5        S S S 5        g ! , (       d  f       g = f)	Nr  rG   rH   r   r  test_bigintwarningFr  )r   r}  r   r  r   r#   rU  rU   r   s      r-   test_bigint_warningr    sd    D	C!Q=	0B99.D9F!KKK		#	#D	)/6 
*	)	)s   A
A-c                    U n[        SS/SS/S.5      n[        R                  " [        SS9   UR	                  SUS	S
S9  S S S 5        g ! , (       d  f       g = f)NrG   rH   rI   rJ   r  r  zEmpty table name specifiedr  r  r  Frz  )r   r  r  r  r}  r  s      r-   test_valueerror_exceptionr    sN    D	QFQF3	4B	z)E	F
		rty	F 
G	F	Fs   A


Ac                H  ^
^^ U nSSK Jm
JmJm  SSKJnJn  U" 5       n " U
UU4S jSU5      nUR                  5          UR                  R                  U5        S S S 5        U" US9nU" 5        n[        SS/SS	/S
.5      nUR                  SUSSS9S:X  d   eUR                  5         UR                  UR                  UR                  5      n	[        U	5      nS S S 5        [!        WR"                  5      SS/:X  d   eg ! , (       d  f       N= f! , (       d  f       N== f)Nr   r0   r   r4   )rp  sessionmakerc                  L   > \ rS rSrSr Y "  YSS9r Y "  Y" S5      5      rSrg),test_row_object_is_named_tuple.<locals>.Testi  r  Trw  2   r+   N)rk  rl  rm  rn  rz  r|  string_columnro  r  s   r-   Testr    s"    $G.vbz*r,   r  rd   rG   helloworld)r|  r  r  Fr  r  rH   r|  r  )r=   r0   r   r4   r~  rp  r  ri   r@   
create_allr   r}  rT   r  r|  r  r%  r   )rU  rU   rp  r  	BaseModelr  ro  r  r   
test_queryr0   r   r4   s             @@@r-   test_row_object_is_named_tupler    s   D
 

 !"I+ +y +
 
%%d+ 
%G	gq!f7IJKII<T)IT	
 	]]477D,>,>?
z" 
 

o6666 
 
s   D0A,D
D
D!c           	     f   U nSn[        SSS/05      nUR                  X!SSS9  [        R                  " SS	5         [	        X!5      nS S S 5        [        R
                  " [        R                  S
9n[        SSS/0U[        S/US9S9n[        R                  " WU5        g ! , (       d  f       N`= f)Nry  r  xyFr  )rn   r   r{  zfuture.infer_stringT)na_valuer  )r?   r   )r   r}  r  r  r#   r  r   r  r   r   r  )rU  rU   r   r   r  r?   r  s          r-   test_read_sql_string_inferencer    s    DE	C#s$	%BIIeUiI@			0$	7, 
8 NNBFF+E	sCjse50IH &(+ 
8	7s   B""
B0c           	         U n[        S[        SSSS5      /0SS9nUR                  SUSS	S
9  [        R                  " SU5      R
                  S   nUS:X  d   eg Nti  r     zdatetime64[ns]r  ry  r  Fr  select * from testr   r   z2020-12-31 12:00:00.000000)r   r   r}  r  r  r   )rU  rU   r   r  s       r-   test_roundtripping_datetimesr    sf    D	C(4R456>N	OBIIfdiuI=[[-t499$?F1111r,   c               #     #    [         R                  " [        R                  " S[        R                  S95       n U  nUv   S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f7f)Nrm  )detect_types)rn  ro  rx   r   PARSE_DECLTYPESrp  s     r-   sqlite_builtin_detect_typesr  (  sU     			
1H1HI
	TJ 
 
 \
 
s3   8A5A$AA$
	A5
A!	A$$
A2.A5c           	         U n[        S[        SSSS5      /0SS9nUR                  SUSS	S
9  [        R                  " SU5      R
                  S   nU[        S5      :X  d   eg r  )r   r   r}  r  r  r   r   )r  rU   r   r  s       r-   )test_roundtripping_datetimes_detect_typesr  1  sk    &D	C(4R456>N	OBIIfdiuI=[[-t499$?FY;<<<<r,   c                   U n[        SS/SS/SS/S.5      nUR                  5        nUR                  5          UR                  S5        UR                  S	5        S S S 5        S S S 5        UR	                  S
USS9S:X  d   eUR	                  SUSSS9S:X  d   eUR	                  SUSSS9S:X  d   e[
        R                  " S
U5      n[        R                  " X$5        [
        R                  " SU5      n[        R                  " X%5        [
        R                  " SUSS9n[        R                  " X&5        [
        R                  " SUSS9n[        R                  " X'5        Sn[        R                  " [        US9   [
        R                  " SUSS9  S S S 5        UR                  5        nUR                  5          UR                  S5        UR                  S	5        S S S 5        S S S 5        UR	                  SUSSS9S:X  d   eUR	                  SUSSSS9  UR	                  SUSSSS9S:X  d   e[
        R                  " SUSS9n	[        R                  " [        X"/SS9U	5        g ! , (       d  f       GN= f! , (       d  f       GN#= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f)NrG   rH   r  r   r  r  r  z$DROP SCHEMA IF EXISTS other CASCADE;zCREATE SCHEMA other;test_schema_publicFr  test_schema_public_explicitr-  )r   rn   r   r   test_schema_otherotherr.  z!Table test_schema_other not foundr  )r   rn   r   r   r  )r   rn   r   r   r{  r   Tr  )r   r   ri   r   r}  r   r#   r   r  r  r  r  r   )
r.  rU   r   rn   r  r  r  res4r  r  s
             r-   test_psycopg2_schema_supportr  :  s   %D 
QFS#Jc
K	LB 
3YY[ FG 67  
 99.D9F!KKK
		.	 	 	
 		 			*E'	RVWWW 2D9D"#;TBD"#;T(SD"#14HD"#
-C	z	-.XF 
. 
3YY[ FG 67  
 			*WE	RVWWWII    			$ 	 	
 			 

0$w
GC&"=sC} [ 
< 
.	- [ 
sR   J #I.J  J/J5 #J$#J5.
I=	8J  
J
J!$
J2	.J55
Kc                2   U nSSK Jn  U" S5      nUR                  5        nUR                  5          UR	                  U5        S S S 5        S S S 5        Sn[
        R                  " XQ5      n[        S[        SSS9/S	-  /S
S/S	-  S9nUS   R                  S5      US'   [        R                  " Xg5        [        R                  " USS9 nUR                  S5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nr   ru   z
    CREATE TABLE person
    (
        id serial constraint person_pkey primary key,
        created_dt timestamp with time zone
    );

    INSERT INTO person
        VALUES (1, '2021-01-01T00:00:00Z');
    zHSELECT * FROM "person" AS p1 INNER JOIN "person" AS p2 ON p1.id = p2.id;rG   2021r   r   rH   r|  
created_dtr   r   Tr  person)r$  rv   r   ri   rL   r  r  r   r   r   r   r  r   r   r  )	r.  rU   rv   rC  rn   r  r  r  r  s	            r-   test_self_join_date_columnsr    s     &D#		L 
3YY[KK%  

 	S  [[)F
Yv%(	)A	-.|8Lq8PH &l3::=IH\&+ 
	5X& 
6	5 [ 
 
6	5s.   C7C&C7D&
C4	0C77
D
Dc                   U n[        / SQ/ SQS.5      n[        R                  " U5       nUR                  5          UR	                  US5      S:X  d   e S S S 5        UR                  S5      (       d   eUR                  5          UR                  S5        S S S 5        UR                  S5      (       a   e S S S 5        g ! , (       d  f       Nr= f! , (       d  f       NA= f! , (       d  f       g = f)Nr  r  r  drop_test_framerJ   )r   r   r   rL  r}  r  r  )rU  rU   r  r  s       r-   test_create_and_drop_tabler    s    D#7@TUVJ		)&&(##J0ABaGGG ) ""#45555&&(  !23 ) &&'899999 
	((
 )( 
	s:   C$C0C$C C$
C	C$
C!	C$$
C2c                    U n[        [        SSS5      [        SSS5      /S/S9nUR                  SUSS9S:X  d   e[        S	U5      n[        R
                  " X2R                  [        5      5        g )
Nr  rG   rH   r  r   r  Fr  zSELECT * FROM test_date)r   r   r}  r"   r   r  r   r   )rr  rU   r   r  s       r-   test_sqlite_datetime_dater    sl    D	Dq!$d4A&67#	GB99+4u9=BBB
2D
9C#yy~.r,   tz_awareFTc                `   UnU (       d  [        SSS5      [        SSS5      /nO4[        SSSS9n[        UR                  5       5      R	                  S	 5      n[        US
/S9nUR                  SUSS9S:X  d   e[        SU5      nUR	                  S 5      n[        R                  " Xg5        g )Nr  r   rG   r  r  rH   r  )r  r   c                "    U R                  5       $ r  )timetz)r  s    r-   r  +test_sqlite_datetime_time.<locals>.<lambda>  s
    		r,   r  r   r  Fr  zSELECT * FROM test_timec                $    U R                  S5      $ r  r  r  s    r-   r  r    s    

= 9r,   )
r   r   r   to_pydatetimer  r   r}  r"   r   r  )r  rr  rU   tz_timestz_dtr   r  r  s           r-   test_sqlite_datetime_timer    s    DAqM41b>20!M%--/0445KL	8cU	+B99+4u9=BBB
2D
9Cvv9:H#(r,   c                |    U R                  SU S35      nU H  u  pEpgpXR:X  d  M  Us  $    [        SU SU S35      e)NzPRAGMA table_info(r  zTable z	, column z
 not found)rL   r  )
rU   r   columnrecscidr   ctypenot_nulldefaultpks
             r-   get_sqlite_column_typer    sQ    <<,UG156D37/5G>L 48 veWIfXZ@
AAr,   c                   U nSS/nSS/n[        X2S9nUR                  SUS9S:X  d   eUR                  S	USS
0S9S:X  d   e[        USS5      S:X  d   e[        US	S5      S
:X  d   eSn[        R                  " [
        US9   UR                  SUS[        0S9  S S S 5        UR                  SUS
S9S:X  d   e[        USS5      S
:X  d   e[        USS5      S
:X  d   eg ! , (       d  f       NL= f)Nr   r   r,  r-  r   r.  r  rH   r/  STRINGr0  r  z!B \(<class 'bool'>\) not a stringr  r  r3  )r   r}  r  r  r  r  bool)rr  rU   r  r   r   r  s         r-   test_sqlite_test_dtyper    s   D:D%D	4	&B99,D91Q66699-T#x9IQNNN "$c:iGGG!$s;xGGG
.C	z	-
		wDd	< 
. 99-4x9HAMMM!$(;SAXMMM!$(;SAXMMM 
.	-s   C""
C0c                V   U n[        SS /5      [        [        SSS5      S /5      [        SS /SS9[        SS /5      S.n[        U5      nS	nUR                  XAS
9S:X  d   e[	        XS5      S:X  d   e[	        XS5      S:X  d   e[	        XS5      S:X  d   e[	        XS5      S:X  d   eg )NTr=  r   rG   r  r  r  r>  rB  r  rH   r?  r  r@  r!  rA  r2   REAL)r   r   r   r}  r  )rr  rU   r  r   r  s        r-   test_sqlite_notna_dtyper    s    Dd|$q!,d34q$ix0d$	D 
4B
C99#9(A---!$V4	AAA!$V4CCC!$U3y@@@!$W5???r,   c                   U n[        SS/SS//SS/S9nSn[        R                  " [        US	9   UR	                  S
US9  S S S 5        [        / SQ5       Hs  u  pEUR	                  XQS9S:X  d   e[        R                  " XQ5        [        SS/SS//SU/S9nSUS 3nUR	                  XqS9S:X  d   e[        R                  " Xq5        Mu     g ! , (       d  f       N= f)NrG   rH   rI   rJ   r  r  r   z$Empty table or column name specifiedr  r  r  )
ztest_weird_name]ztest_weird_name[ztest_weird_name`ztest_weird_name"ztest_weird_name'z_b.test_weird_name_01-30z"_b.test_weird_name_01-30"99beginswithnumber12345r  test_weird_col_namer  )r   r  r  r  r}  	enumerater   table_exists)rr  rU   r   r  ndx
weird_namer  c_tbls           r-   test_sqlite_illegal_namesr     s    D	QFQF#c3Z	8B
0C	z	-
		rt	$ 
. %	
 yyjy3q888*!Q!Q(3
2CD%c!W-zzuz/1444%) 
.	-s   C
Cc                   [         SR                  [        SR                  [        R                  SR                  [
        SR                  [        SR                  [        SR                  [        S 5      S [        R                  SR                  [        SR                  0	n/ nU HO  n[        U[        5      (       a  [        U5      (       a  S nU[        U5         nUR                  U" U5      5        MQ     U [        U5      -  $ )Nz'{}'z{:.8f}z{:d}c                    g)NNULLr+   )r  s    r-   r  format_query.<locals>.<lambda>.  s    fr,   z{:.10f}z'{!s}')r   r  r   r   str_bytesrQ   rj  r   rH  r  rw   r   r   rH  )r   r_  _formattersprocessed_argsarg	formatters         r-   format_queryr+  &  s    &--V]]
v}}xV]]T
$


I$$hoo
K Nc5!!d3iiCS	*	in-  ~&&&r,   c                    [         R                  " U5       nUR                  U 5      R                  5       nSSS5        Wc  S$ [	        U5      $ ! , (       d  f       N= f)z#Replace removed sql.tquery functionN)r   r!   rL   r   r%  )r  rn   r  r  s       r-   tqueryr-  =  sL    			s	#z  '002 
$;4-DI- 
$	#s    A
Ac           
        [        [        R                  R                  S5      R	                  S5      [        [        S5      5      [        SSSS9S9n[        R                  " US	U S
S9S:X  d   e[        R                  " SU 5      nUR                  Ul        Un[        R                  " X!5        S/[        U5      -  US'   UR                  5       n[        [        R                   " [        U5      5      [        R"                  S9S-   nUR                  5       US'   [        R                  " USU S
S9S:X  d   e[        R                  " SU SS9nUR                  5       nXSl        SUR                  l        [        R                  " X25        g )NrH   r2  rJ   ABCD
2000-01-01r2  r   r  r  r  r	  Fr  zselect * from test_tabler  txtr  Idxtest_table2zselect * from test_table2r  )r   r   r  r  r  r   r%  r   r   r}  r  r   r   r  r  r  ro  r   r   )rr  r   r  r  frame2new_idxs         r-   test_xsqlite_basicr8  D  s>   
		a 009d6l#r<E
 ::e,N%PTVVVV\\4nEF ;;FLH&(53u:%E%LZZ\FBIIc&k*"((;b@GLLNF5M::f=nERVXXXX\\5~QVWFzz|HNHNN(+r,   c           
     H   [        [        R                  R                  S5      R	                  S5      [        [        S5      5      [        SSSS9S9n[        R                  UR                  S	'   [        R                  " US
5      nU R                  5       nUR                  U5        SnUR                  5        H  u  pV[        U/UQ76 n[!        XpS9  M     U R#                  5         [        R$                  " SU S9nUR&                  Ul        [(        R*                  " XSS9  g )NrH   r/  r0  r1  r2  r   r2  r  r  ry  z(INSERT INTO test VALUES (%s, %s, %s, %s)rv  r  gMbP?)rtol)r   r   r  r  r  r   r%  r   r  r   r   r  rK   rL   iterrowsr+  r-  rT   r  r   r   r  )	rr  r   r&  rX   insr  r[   fmt_sqlr  s	            r-   test_xsqlite_write_row_by_rowr>  _  s    
		a 009d6l#r<E
 vvEJJtv.J



!CKK

4C.."s)S)w+ # \\.NCF;;FL&d3r,   c           
     x   [        [        R                  R                  S5      R	                  S5      [        [        S5      5      [        SSSS9S9n[        R                  " US	5      nU R                  5       nUR                  U5        S
nUR                  S   n[        R                  " U 5       nUR                  U[        U5      5        S S S 5        U R                  5         [        R                   " SU 5      nUR"                  S S Ul        [$        R&                  " XqS S 5        g ! , (       d  f       Nc= f)NrH   r/  r0  r1  r2  r   r2  r  ry  z$INSERT INTO test VALUES (?, ?, ?, ?)r   r  rG   )r   r   r  r  r  r   r%  r   r   r  rK   rL   r   r!   rH  rT   r  r   r   r  )rr  r   r&  rX   r<  r[   r  r  s           r-   test_xsqlite_executer@  v  s    
		a 009d6l#r<E
 v.J



!CKK

0C
**Q-C			~	.*3c
+ 
/\\.?F;;r?FL&), 
/	.s   2D++
D9c           
        [        [        R                  R                  S5      R	                  S5      [        [        S5      5      [        SSSS9S9n[        R                  " US	5      nUR                  5       nU H;  nUR                  S
5      n[        U5      S:X  d  M%  US   S:X  d  M0  US   S:X  a  M;   e   [        R                  " US	SS/S9nUR                  5       nSU;   d   eU R                  5       nUR                  U5        g )NrH   r/  r0  r1  r2  r   r2  r  ry   r   r   rG   DATETIME)r   zPRIMARY KEY ("A", "B"))r   r   r  r  r  r   r%  r   r   r  
splitlinesr{  r  rK   rL   )rr  r   r&  lineslinetokensrX   s          r-   test_xsqlite_schemarH    s    
		a 009d6l#r<E
 v.J!!#ECv;!q	S 0!9
*** 
 vS#J?J!!#E#z111



!CKK
r,   c                   SnU R                  5       nUR                  U5        [        R                  " U 5       nUR                  S5        UR                  S5        [        R
                  " [        R                  SS9   UR                  S5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nc
    CREATE TABLE test
    (
    a TEXT,
    b TEXT,
    c REAL,
    PRIMARY KEY (a, b)
    );
    ,INSERT INTO test VALUES('foo', 'bar', 1.234)z,INSERT INTO test VALUES('foo', 'baz', 2.567)ri  r  z(INSERT INTO test VALUES('foo', 'bar', 7))rK   rL   r   r!   r  r  rs  )rr  r&  rX   r  s       r-   test_xsqlite_execute_failrL    s    J 


!CKK
			~	.*IJIJ]]3,,4MNIJ O	 
/	. ON	 
/	.s$   AB4 B#B4#
B1	-B44
Cc                    Sn [         R                  " [        R                  " S5      5       nUR	                  5       nUR                  U 5        [        R                  " U5       nUR                  S5        S S S 5        S S S 5        Sn[        R                  " [        R                  US9   [        SWS9  S S S 5        g ! , (       d  f       NO= f! , (       d  f       NX= f! , (       d  f       g = f)NrJ  rm  rK  z$Cannot operate on a closed database.r  r  rv  )rn  ro  rx   r   rK   rL   r   r!   r  r  rB  r-  )r&  rU   rX   r  r  s        r-   &test_xsqlite_execute_closed_connectionrN    s    J 
		GOOJ7	8DkkmJ""4(JMN )	 
9 1C	w//s	;#. 
<	;	 )(	 
9	8 
<	;s/   8C%C 7C,C" 
C	
C
C"
C0c                ~    [        S[        R                  " S5      05      n[        R                  " XSSS9S:X  d   eg )NFromr   testkeywordsFrn   r   r   )r   r   onesr   r}  )rr  r   s     r-   $test_xsqlite_keyword_as_column_namesrT    s5    	FBGGAJ'	(B::b>OSTTTTr,   c                   [        SS/S/S9n[        R                  " XSSS9S:X  d   eU n[        S UR	                  S	5       5       5      nUS
:X  d   e[        R
                  " S	U5      n[        R                  " XA5        g )NrG   rH   c0r   mono_dfFrR  c              3  *   #    U  H	  oS    v   M     g7f)r   Nr+   ).0my_c0s     r-   	<genexpr>4test_xsqlite_onecolumn_of_integer.<locals>.<genexpr>  s     O(Nu((Ns   zselect * from mono_dfrI   )r   r   r}  sumrL   r  r   r  )rr  rW  con_xthe_sumr  s        r-   !test_xsqlite_onecolumn_of_integerr`    s|     A/G::g	OSTTTTEO6M(NOOGa<<\\159F&*r,   c                f   [        SS/SS/S.5      n[        / SQ/ SQS.5      nSnS	U 3nS
n[        R                  " [        US9   [        R
                  " UU USS9  S S S 5        [        X05        [        R
                  " XUSS9  Sn[        R                  " [        US9   [        R
                  " UU USS9  S S S 5        [        R
                  " UU USSS9  [        X@S9SS/:X  d   e[        R
                  " UU USSS9S:X  d   e[        X@S9/ SQ:X  d   e[        X05        [        R
                  " UU USSS9S:X  d   e[        X@S9SS/:X  d   e[        R
                  " UU USSS9S:X  d   e[        X@S9/ SQ:X  d   e[        X05        g ! , (       d  f       GN8= f! , (       d  f       N= f)NrG   rH   r   r   r  rR  )r   r   Etable_if_existsr  z*'notvalidvalue' is not valid for if_existsr  notvalidvalue)r   rn   r   r{  r  z&Table 'table_if_exists' already existsr  F)r   rn   r   r{  r   rv  r  r  rI   )rI   r   rJ   r   r   rb  r   )r  r  re  rf  rg  )r   r  r  r  r   r}  r  r-  )rr  df_if_exists_1df_if_exists_2r   
sql_selectr  s         r-   test_xsqlite_if_existsrk    s   Ac
CDN	?KLN"J!*.J
6C	z	-

 %		
 
. z* JJzV 3C	z	-

 		
 
. JJ *1h5IIII

 	
 			 *15SSSSz* 	

 	
 			 *1h5IIII

 	
 			 *1 6    z*Q 
.	- 
.	-s   F#F"
F"
F0)rV   r   )r   r   )r   
list[dict])r   rl  r   r   )r   r   )r   r   )r   r   rU   Lsqlite3.Connection | sqlalchemy.engine.Engine | sqlalchemy.engine.Connection)r   r   rU   rm  r  r  (*  
__future__r   rn  rN   r   r   r   r   decimalr   r   r	   pathlibr   rx   typingr   r=  r  r   r  pandas._configr   pandas._libsr   pandas.compatr   pandas.compat._optionalr   pandas.util._test_decoratorsutil_test_decoratorstdpandasr  r   r   r   r   r   r   r   r   r   r   pandas._testing_testingr   pandas.util.versionr   	pandas.ior   pandas.io.sqlr   r   r   r    r!   r"   r#   r=   r  filterwarnings
single_cpu
pytestmarkfixturer.   rA   r\   r^   ro   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r   r#  r&  r(  r.  r0  r3  r5  r<  rE  rK  rM  rO  rS  rU  rW  rY  r[  r]  r_  ra  rc  rf  rh  rk  rr  rt  rv  paramr  mysql_connectablemysql_connectable_irismysql_connectable_typespostgresql_connectablepostgresql_connectable_irispostgresql_connectable_typessqlite_connectablesqlite_connectable_irissqlite_connectable_typessqlalchemy_connectablesqlalchemy_connectable_irissqlalchemy_connectable_typesadbc_connectableadbc_connectable_irisadbc_connectable_typesall_connectableall_connectable_irisall_connectable_typesparametrizer  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r)  r1  r7  rA  rF  rH  rO  rQ  rS  rU  rY  r[  r^  rd  rg  rk  rs  r{  r}  r  r  r  r  r  r  r  r  r  r  rj  rQ   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r)  r?   r   r:  r>  rA  skip_if_installedrE  rK  rP  rT  rW  rY  rq  rt  rv  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r  r  r$  r&  r;  rE  rS  rd  infrl  r  r  r  r  r  r  r  r  r  r  r  r  
no_defaultr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r+  r-  r8  r>  r@  rH  rL  rN  rT  r`  rk  r+   r,   r-   <module>r     s   "  
           -  . > ) )     '     KKG KK	
  82D> "&D<2(*MZ-;8  
  6 , ,   ,  ,F , ,2230..
V.&""
V".           
  
  
  
   & & & &
  
    $     
  
 $ $
    
      
    
  
    "  *       LL'v{{~~>
LL%V[[^^<  LL,FKKNNC
LL*&++..A  LL-V[[^^D
LL+6;;>>B  LL-V[[^^D
LL+6;;>>B  LL2&++..I
LL0G  LL36;;>>J
LL1H  
    +-CCFXX  88;RR 
 ::=UU 
 
LL'v{{~~>  LL'v{{~~>  LL(?  Q*P,<P?OP   !   1O 2O 1L 2L 1Q 2QB 1M 2M( 1D'?3> 4 2> 1MM 2M 1J 2J !56. 7. !56. 7.$ !<= >6 !56! 7!& !<=! >! !<=	! >	! !78> 9>" !67F 8F> !23!$ 4!$H !78)Az?;", < 9",J !7865 965r 1- 2-. !2315 415h !78 , 9 ,F,2= !56! 7!$ !56! 7!& !56! 7!$ !56! 7! !56	= 7	= 1. 2. 1G 2G 1# 2#" 1# 2#$ 1	/ 2	/ 1	, 2	, 1/ 2/$ 1/ 2/* !56< 7< !674 84n !677H"56	,.HI	w/!&	

 
		W|5	!, 7 8!,H !67? 8? 1+4 2+4\ 1
; 2
; 1%"(# 2$($ 1F
 2F
R 1= 2=& 1	, 2,, 1N 2N 1
" 2
" 1. 2. 1# 2#. 1- 2-8 1-* 2-*` 1# 2#@ 1: 2: 1# 2#( 1, 2,: 1+ 2+ 11 21, !564 74$>2 1; 2;. !78A 9A !78	"((3-,,7hYG() 9* !78Xx$894 : 944& h4  4 !<=, >, !<=( >( 1# 2#
/ l#1 $1 l#+ $+ #"1$ !78+ 9+( !780 902 o6/ 7/ o6!: 7!:H 1/ 2/* !56< 7< !<=! >! !<=X >X !<=: >: !=>= ?=, !78& 9& !=>< ?< !78/@(AB
* C 9
* !78	* 9	* !78- 9- !78, 9,< !78	, 9	, !78	? 9	? !=>? ??> !78, 9,2 !78, 9,0 !78	- 9	- !78# 9#4 !78H 9H !78& 9& !78& 9&" !78& 9&$ 1$ 2$N 1  2  1& 2&R !78N 9N: !78&& 9&&R !78!5 9!5H !7808 908f !78  9 F !78bffX"&&	*bffWI,PQ!	 9
!( !78"( 9"(J 1N 2N 1# 2# !78' 9' 1' 2'
F 1*.>!?@'4 A 2'4T 1*.>!?@+4 A 2+4\ 1!QR> S 2>   ) )X 10 20* 13>>;K*LM*.>!?@, A N 2,27G$7N,$2  = GD GDT !' !'H:/ eT]3) 4)$BN,@&&@'..,64.-*(K*/,U
+ O+r,   