
    Mh6                   3   S SK Jr  S SKrS SKJ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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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K.J/r/J0r0  S SK1J2r2  S SK3J4r4  S SK5J6r6J7r7J8r8J9r9J:r:J;r;J<r<  \(       a  S SK=r=\R|                  R                  S5      r@\R                  S 5       rBS rCGS1S jrDGS1S jrEGS1S jrFS rGGS2S jrHGS3S jrIGS3S jrJGS4S jrKS rLGS5S jrMGS6S 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S7S& jrV    GS8S' 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\R|                  R                  SG9\R                  " SH\R|                  R                  SG9/rx\R                  " SI\R|                  R                  SG9\R                  " SJ\R|                  R                  SG9/ry\R                  " SK\R|                  R                  SG9\R                  " SL\R|                  R                  SG9/rz\R                  " SM\R|                  R                  SG9\R                  " SN\R|                  R                  SG9/r{\R                  " SO\R|                  R                  SG9\R                  " SP\R|                  R                  SG9/r|\R                  " SQ\R|                  R                  SG9\R                  " SR\R|                  R                  SG9/r}/ SSQr~/ STQr/ SUQr\x\{-   \~-   r\y\|-   \-   r\z\}-   \-   rSV\R                  " SW\R|                  R                  SG9/r\R                  " SX\R|                  R                  SG9\R                  " SY\R|                  R                  SG9/r\R                  " SZ\R|                  R                  SG9\R                  " S[\R|                  R                  SG9/r\S\/-   \-   r\S]/-   \-   r\S^/-   \-   r\R|                  GR                  S%\5      S_ 5       r\R|                  GR                  S%\5      S` 5       r\R|                  GR                  S%\5      Sa 5       r\R|                  GR                  S%\5      Sb 5       r\R|                  GR                  S%\5      \R|                  GR                  ScSSd/5      Se 5       5       r\R|                  GR                  S%\5      \R|                  GR                  SfSgSh/5      Si 5       5       r\R|                  GR                  S%\5      Sj 5       r\R|                  GR                  S%\5      Sk 5       r\R|                  GR                  S%\5      Sl 5       r\R|                  GR                  S%\5      Sm 5       r\R|                  GR                  S%\5      Sn 5       r\R|                  GR                  S%\5      So 5       r\R|                  GR                  S%\5      Sp 5       r\R|                  GR                  S%\5      Sq 5       r\R|                  GR                  S%\5      Sr 5       r\R|                  GR                  S%\x5      Ss 5       r\R|                  GR                  S%\{5      \R|                  GR                  StSuSv/5      Sw 5       5       r\R|                  GR                  S%\{5      Sx 5       r\R|                  GR                  S%\5      Sy 5       r\R|                  GR                  S%\x5      Sz 5       r\R|                  GR                  S%\{5      S{ 5       rS| rS} rS~ rS r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      \R|                  GR                  S/ SQ5      \R|                  GR                  S\4GRf                  SS4\4GRf                  SS4\4Rv                  SS4\4Rx                  SS4/5      S 5       5       5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      \R|                  GR                  S/ SQ5      S 5       5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      \R|                  GR                  SS\\\\S./5      S 5       5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      S 5       rS r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      \R|                  GR                  SSSSSSSSSSSSSSS\\GR                  " \5      GR                  S:X  a  SOS4/5      S 5       5       r\R|                  GR                  S%\5      \R|                  GR                  SSS/5      S 5       5       r\R|                  GR                  S%\5      S 5       r\GR                  " S5      \R|                  GR                  S%\5      S 5       5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      S 5       rS r\GR                  " S5      S 5       r\GR                  " S5      S 5       rS rS rS r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\{5      \R|                  GR                  SSS//5      S 5       5       r\R|                  GR                  S%\{5      S 5       r\R|                  GR                  S%\{5      S 5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      S 5       r\R|                  GR                  S%\5      \R|                  GR                  SS\GR                  /0S\GR                  * /0\GR                  * /S/S./5      S 5       5       Gr \R|                  GR                  S%\5      S 5       Gr\R|                  GR                  S%\5      S 5       Gr\R|                  GR                  S%\5      S 5       Gr\R|                  GR                  S%\5      GS  5       Gr\R|                  GR                  S%\5      GS 5       GrGS GrGS Gr\R|                  GR                  S%\5      \R|                  GR                  GSGSGS/5      GS 5       5       Gr\R|                  GR                  S%\5      \R|                  GR                  GSGSGS/5      GS	 5       5       Gr	\R|                  GR                  S%\5      \R|                  GR                  GS/ GS
Q5      GS 5       5       Gr
\R                  GS9GS j5       Gr\R                  GS 5       Gr\R|                  GR                  S%\5      GS 5       Gr\R|                  GR                  S%\5      \R|                  GR                  GS\GR                  GS/5      \R|                  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GS Gr\R                  GS 5       GrGS Gr\R|                  R                  GS 5       Gr\R|                  R                  GS 5       GrGS GrGS Gr\R|                  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S:G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S0 Gr+g(;      )annotationsN)closing)datedatetimetime	timedelta)StringIOPath)TYPE_CHECKING)lib)pa_version_under13p0pa_version_under14p1)import_optional_dependency)
	DataFrameIndex
MultiIndexSeries	Timestampconcat
date_rangeisnato_datetimeto_timedelta)ArrowStringArrayStringArray)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-       J/var/www/html/env/lib/python3.13/site-packages/pandas/tests/io/test_sql.pysql_stringsr0   E   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   )	
sqlalchemyr2   r3   r4   r5   r6   r7   r   __version__)
r?   r2   r3   r4   r5   r6   r7   dtypemetadatar8   s
             r/   iris_table_metadatarC   b   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csvfilerQ   recordsrows           r/   create_and_load_iris_sqlite3r^   {   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
        )rE   rF   z+INSERT INTO iris VALUES($1, $2, $3, $4, $5)r   rI   rJ   rK   rL   )	rM   rN   rO   rP   rQ   rR   rS   rT   rV   )rW   rX   rY   rZ   r[   rQ   r]   r\   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   insertrE   rF   T
checkfirstbind)r?   rc   rC   rO   rP   rQ   rR   dictzipvaluesbegindropcreaterN   )rW   rX   rc   r8   r[   rQ   headerr]   paramsrY   cons              r/   create_and_load_irisrq      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
ConnectionrM   rN   r   rV   r?   rx   rk   )rW   rY   rZ   adbcrx   rp   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Booleanr2   DateTimer4   Integerr5   r7   r'   typesTextColDateCol
IntDateColIntDateOnlyColFloatColIntColBoolColIntColWithNullBoolColWithNull)	r?   r   r   r2   r   r4   r   r5   r7   )dialectr   r   r2   r   r4   r   r5   r7   	date_type	bool_typerB   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(?, ?, ?, ?, ?, ?, ?, ?, ?)
                )ry   rz   r{   rM   rN   rT   rV   )rW   
types_datarY   ins_stmtrZ   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)
                )rM   rN   rT   rV   )rW   r   rZ   rY   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   rb   EngineTrd   rf   )r?   rc   sqlalchemy.enginer   r   rj   ry   connectrk   rl   rm   rN   )rW   r   r   rc   r   r   rY   s          r/   create_and_load_typesr   5  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$ ! , (       d  f       N~= f! , (       d  f       N== f! , (       d  f       NN= f)Nr   )r2   r   r5   r7   rc   r   datetzDateColWithTzT)timezonez2000-01-01 00:00:00-08:00z2000-06-01 00:00:00-07:00rd   rf   z2000-01-01 08:00:00UTCtzz2000-06-01 07:00:00name)r?   r2   r   r5   r7   rc   r   r   rj   ry   r   rk   rl   rm   rN   r   r   )rW   r2   r   r5   r7   rc   r   rB   r   datetz_datarY   expected_datas               r/   create_and_load_postgres_datetzr   I  s?     )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6'  ^ \s0   /D: 1D)1D:1E)
D7	3D::
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   v  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 rs   rt   ru   r   )create_enginer   )r   ry   rz   r{   rM   rN   fetchoner?   r   r   r   strr   exec_driver_sql
scalar_onedispose)rW   
table_namerY   r|   rZ   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datarP   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$@rI   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   int64rS   r   )r   keysastype)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   rs   rt   ru   catalog_namecatalog_db_schemasdb_schema_namedb_schema_tables
table_typeviewr   inspect)ry   rz   r{   rN   fetchallr   adbc_get_objectsread_all	to_pylistappendr?   r   get_view_names)rW   cr   r|   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   rs   rt   ru   r   r   r   r   r   r   )ry   rz   r{   rN   r   r   r   r   r   r   r?   r   get_table_names)
rW   r   r   r|   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rW   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 rs   rt   ru   zDROP TABLE IF EXISTS "")ry   rz   r{   rN   r   _get_valid_sqlite_namerV   r   rM   rk   r    
drop_table)r   rW   r|   rZ   rp   dbs         r/   r  r  0  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 rs   rt   ru   zDROP VIEW IF EXISTS "r  )r?   ry   rz   r{   rN   r   r  rV   r   rM   r   r   identifier_preparerquote_identifierrx   rk   )r   rW   r?   r|   rZ   quoted_viewrY   rp   s           r/   	drop_viewr  C  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  Z  s     $$\2J!!),G%%4#W%6%6%=%=%N%NO//**F
 Lf%$ &f%3 &
NNs   CCc              #  @   #    [        X5        [        U 5        U v   g 7fNrq   r}   )r  r   s     r/   mysql_pymysql_engine_irisr  k  s     -923
   c              #  ,   #    [        XS5        U v   g 7f)Nr(   r   )r  r   s     r/   mysql_pymysql_engine_typesr"  r  s     .GD
   c              #  h   #    U R                  5        nUv   S S S 5        g ! , (       d  f       g = f7fr  r   )r  rW   s     r/   mysql_pymysql_connr&  x  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  rW   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"  rW   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_enginer1    s     $$\2J

#%%G//**F Lf%$ &f%3 &
NNs   B!B#c              #  @   #    [        X5        [        U 5        U v   g 7fr  r  )r1  r   s     r/   postgresql_psycopg2_engine_irisr3    s     3?89
$$r  c              #  ,   #    [        XS5        U v   g 7f)Npostgresr!  )r1  r   s     r/    postgresql_psycopg2_engine_typesr6    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%  )r1  rW   s     r/   postgresql_psycopg2_connr8    r,  r'  c               #  :  #    [         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adbc_driver_postgresqlr   dbapiz4postgresql://postgres:postgres@localhost:5432/pandas)
r  r  r:  r<  r   r   r  r  r  rV   )r<  urirW   r   r  s        r/   postgresql_adbc_connr>    sq     
01,
@C	s	t
!$'Dd! (!$'Cs! ( 
		s   0BAB
	B

BBc              #  ,  #    SS K nU n UR                  S5         UR                  S5        Uv   g ! UR                   a    UR                  5         [	        X15         NDf = f! UR                   a    UR                  5         [        U5         Ncf = f7fNr   r8   	iris_view)adbc_driver_manageradbc_get_table_schemaProgrammingErrorrollbackr`   r}   )r>  r   mgrrW   s       r/   postgresql_adbc_irisrG    s     %D9""6*("";/ J  9'89
  (!$'(B   B2 A# B+A BA  B#+BBBBc              #    #    SS K nU n UR                  S5        Uv   g ! UR                   aM    UR                  5         U Vs/ s H  n[	        UR                  5       5      PM     Os  snf nn[        X55         Naf = f7f)Nr   r   )rB  rC  rD  rE  tuplerj   r   )r>  r   rF  rW   entrynew_datas         r/   postgresql_adbc_typesrM    sp     %D9""7+ J  97ABzeE%,,.)zBB(8	9s1   B   B $A=#A('A=:B <A==B c              #  h   #    U R                  5        nUv   S S S 5        g ! , (       d  f       g = f7fr  r%  )r3  rW   s     r/   postgresql_psycopg2_conn_irisrO    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%  )r6  rW   s     r/   postgresql_psycopg2_conn_typesrQ    s#     	)	1	1	3t
 
4	3	3r'  c               #     #    [         R                  " S5        [        R                  " 5        n SU  3v   S S S 5        g ! , (       d  f       g = f7f)Nr?   
sqlite:///)r  r  r   ensure_cleanr   s    r/   
sqlite_strrU    s7     
%		d4&!! 
		s   ,A?	A
A	A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/  r0  )rU  r?   r   r   r  s        r/   sqlite_enginerW    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%  )rW  rW   s     r/   sqlite_connrY    s#     				 D
 
!	 	 r'  c                    [         R                  " S5      nUR                  " U 5      n[        X15        [	        U5        UR                  5         U $ )Nr?   )r  r  r   rq   r}   r   )rU  r   r?   r   s       r/   sqlite_str_irisr[    sB    $$\2J%%j1F+f%
NNr.   c              #  @   #    [        X5        [        U 5        U v   g 7fr  r  )rW  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]  rW   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   )rU  r   r?   r   s       r/   sqlite_str_typesra    s<    $$\2J%%j1F&h7
NNr.   c              #  ,   #    [        XS5        U v   g 7f)Nr'   r!  )rW  r   s     r/   sqlite_engine_typesrc  %  s     -X>
r#  c              #  h   #    U R                  5        nUv   S S S 5        g ! , (       d  f       g = f7fr  r%  )rc  rW   s     r/   sqlite_conn_typesre  +  s#     		$	$	&$
 
'	&	&r'  c               #    #    [         R                  " S5        SSKJn   [        R
                  " 5        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        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f7f)Nadbc_driver_sqliter   r;  zfile:)r  r  rg  r<  r   rT  r   r   r  r  r  rV   )r<  r   r=  rW   r   r  s         r/   sqlite_adbc_connrh  1  s     
,-(		ddVn]]34J%d+$% ,%d+3% ,KKM   
	 
	s5   2CB<AB+B<"	C+
B9	5B<<
C
Cc              #  ,  #    SS K nU n UR                  S5         UR                  S5        Uv   g ! UR                   a    UR                  5         [	        X15         NDf = f! UR                   a    UR                  5         [        U5         Ncf = f7fr@  )rB  rC  rD  rE  r^   r}   )rh  r   rF  rW   s       r/   sqlite_adbc_irisrj  A  s     %D6""6*("";/ J  6$T56
  (!$'(rH  c              #  |  #    SS K nU n UR                  S5        Uv   g ! 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          Nf = f7f)Nr   r   r   r   )
rB  rC  rD  rE  intr   rJ  rj   r   rV   )rh  r   rF  rW   rL  rK  s         r/   sqlite_adbc_typesrm  S  s     %D""7+ J  
E"5#34E)&'3+.u5F/G+H'(OOE%,,.12	   	&d5
s&   B<  B<BB96B<8B99B<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:)
contextlibr   rz   r   closing_connrW   s     r/   sqlite_buildinrs  i  sC     			GOOJ7	8LTJ  
9	8\ 
9	8s1   +A(AAA	A(
A	A
A%!A(c              #  @   #    [        X5        [        U 5        U v   g 7fr  )r^   r}   )rs  r   s     r/   sqlite_buildin_irisru  p  s      ;n-
r  c              #     #    U Vs/ s H  n[        UR                  5       5      PM     nn[        X5        U v   g s  snf 7fr  )rJ  rj   r   )rs  r   rK  s      r/   sqlite_buildin_typesrw  w  s8     5?@ZE%'ZJ@!.=
 As   A#<Ar  )marksr&  r  r)  r"  r+  r1  r8  r3  rO  r6  rQ  )rW  rY  rU  )r]  r_  r[  )rc  re  ra  rh  r>  rG  rj  rM  rm  rs  ru  rw  c                J    UR                  U 5      n UR                  SU SSS9  g )Ntestr   Fr   rp   	if_existsr   )getfixturevalueto_sql)rW   r   requests      r/   test_dataframe_to_sqlr    s+     ""4(DFNr.   c                    U S:X  a7  UR                   R                  [        R                  R	                  SSS95        UR                  U 5      n UR                  S S nUR                  SU SSS	9  g )
Nr>  z7postgres ADBC driver cannot insert index with null typeTreasonstrictr   rz  r   Fr{  )node
add_markerr  markxfailr}  r   r~  )rW   r   r  empty_dfs       r/   test_dataframe_to_sql_emptyr    sr    %%KKP  	
 ""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)NpyarrowrI   zint8[pyarrow]rA     timestamp[ns][pyarrow]zdate32[day][pyarrow]zduration[ns][pyarrow]azstring[pyarrow])rl  r   r   r   stringr|   rh  r   r   zis_sparse is deprecated zthe 'timedelta'F)matchcheck_stacklevel
test_arrowreplacer{  )r  r  r   pdarrayr   r   r   rl   r   DeprecationWarningUserWarningr}  r   assert_produces_warningr~  )rW   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        [        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 )Nr  r   r  rI   r  r  r  r  Fr{  )r  r  r   r  r  r   r}  r~  )rW   r  nulls_fixturer   s       r/   *test_dataframe_to_sql_arrow_dtypes_missingr    si     	"	$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  r|   z)'method' not implemented for ADBC driversTr  need_transaction
test_framer  )r  r  r  r  r  r}  r#   r~  	has_tabler   len)rW   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  rI   )r   rJ   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  )rW   modenum_row_coefr   r  r  s         r/   test_to_sql_existr  +  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)rW   r   r  r  r  s        r/   test_to_sql_exist_failr  6  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   r:   )r}  r$   r   r  read_sqlr   r   rW   r  
iris_frames      r/   test_read_iris_queryr  B  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 )Nr|   ,'chunksize' not implemented for ADBC driversTr  r     	chunksizer  r  r:   )r  r  r  r  r  r}  r   r$   r   r  r  r   r   r  s      r/   test_read_iris_query_chunksizer  N  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 )Nr|   r  Tr  r   )r5   r7   r   selectr8   )autoload_withr   r   r   lengthro   )r  r  r  r  r  r}  r?   r5   r7   r   r  ry   r   r$   r   r   )
rW   r  r5   r7   r   r  rB   autoload_conr8   r  s
             r/   .test_read_iris_query_expression_with_parameterr  a  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 )
Nr|   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   )rW   r  r0   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 )Nr8   )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 )Nr|   +chunksize argument NotImplemented with ADBCr  r8   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 )NrI   )r   rh   ri   rN   r   rc   )pd_tablerW   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  rI   r  )rW   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 )Nrw  ;sqlite_buildin connection does not implement read_sql_tabler  r   r)   )applymarkerr  r  r  r}  r   r%   r   r   rA   r   r   r   r   integerr   bool_r   r   objectrW   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   rw   r   rI   rJ   rK   皙?r   333333?r  br  Fr   rp   r   z}DROP PROCEDURE IF EXISTS get_testdb;

    CREATE PROCEDURE get_testdb ()

    BEGIN
        SELECT * FROM test_frame;
    ENDzCALL get_testdb();)r}  r?   rx   r   r   r   r~  ry   r   rk   rN   r   r$   r   assert_frame_equalr  )	rW   r  rx   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_countrJ   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)
connectionrM   r	   rP   writer	writerowsseekjoinr   r   copy_expert)r   rW   r   r  
dbapi_connrZ   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rI   rJ   r  r   r  ncol1col2col3r  F)r   rp   r   r  r}  r   r~  r   r%   r   r  )rW   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   rb   r   rw   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)rh   ri   r   rj   on_conflict_do_nothingrN   rowcount	r   rW   r   r  r]   r   rY   r  rc   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
    );
    rI    @r  abcr   test_insert_conflictr   Fr{  rI   g	@r  r   rp   r   r|  r  Tr  )r}  sqlalchemy.dialects.postgresqlrc   r   r   sqlalchemy.sqlrx   ry   r   rk   rN   r   listr~  r   r%   r   r  r    r  )rW   r  r   rx   r  
create_sqlrp   r  	df_insertinsertedr  r  rc   s               @r/   ,test_insertion_method_on_conflict_do_nothingr)  &  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  )rJ   g@r  r  r   test_public_schemar   Fpublic)r   rp   r|  r   r   r   )r  r  r  r  r}  r   r%  r~  r   r%   r   r  )rW   r  	test_datadf_outs       r/   test_to_sql_on_public_schemar1  `  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   rb   r   rw   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   )
rh   ri   r   rj   on_duplicate_key_updater(  r  r   rN   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   Fr{  r!  r"  rJ   Tr  )r}  sqlalchemy.dialects.mysqlrc   r   r   r$  rx   ry   r   rk   rN   r   r%  r~  r   r%   r   r  r    r  )rW   r  r   rx   r  r&  rp   r   r  r(  r  r  rc   s               @r/   (test_insertion_method_on_conflict_updater7  x  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   rw   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;
    rI   r   group_idr   )r}  r   r   r$  rx   uuiduuid4hexry   r   rk   rN   r%   r   r   r  )
rW   r  r   rx   r   r   sql_stmtrp   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_viewrI   r   r;  )rN   r  r  r   r   r  )rs  create_tableinsert_intocreate_viewr  r  s         r/   test_read_view_sqliterF    ss    LKK
 <(;';'[[3^DFqc6:;H&+r.   c                    [         R                  " [        SS9   [        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)Nz+pandas.io.sql.execute requires a connectionr  P`pandas.io.sql.execute` is deprecated and will be removed in the future version.select * from iris)r  r  	TypeErrorr   r  FutureWarningr   rN   )r]  s    r/   test_execute_typeerrorrL    s\    	y(U	V''5

 KK,.@A
 
W	V
 
 
W	Vs"   A.AA.
A+	'A..
A<c                    [         R                  " [        SS9   [        R                  " SU 5        S S S 5        g ! , (       d  f       g = f)NrH  r  rI  )r   r  rK  r   rN   )r_  s    r/   test_execute_deprecatedrN    s:    		#	#1

 	(*:;
 
 
s	   ;
A	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/   flavorrP    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)Nr|   )'params' not implemented for ADBC driversTr  r*   r  r  r  r  r  r  r  r}  rP  r#   run_transaction
read_queryr   rW   r  r0   r  r  ro   r  r  s           r/   test_read_sql_iris_parameterrW  	  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)
Nr|   rR  Tr  r+   r   r   r  r  rS  rV  s           r/   "test_read_sql_iris_named_parameterrY    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)   r|   zbroken testr  r,   r  )
r  r  r  r  r}  rP  r#   rT  rU  r   )rW   r  r0   r  r  r  r  s          r/   ,test_read_sql_iris_no_parameter_with_percentr[  0  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_viewr]  C  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 )Nr|   r  r  z1SELECT * FROM iris_view WHERE "SepalLength" < 0.0r   r  )r  r  r  r  r  r}  r   r$   r   r  r   )rW   r  r  
with_batchwithout_batchs        r/   *test_api_read_sql_with_chunksize_no_resultra  J  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~  )rW   r  r   r  s       r/   test_api_to_sqlrc  W  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  )rW   r  r   r  r  s        r/   test_api_to_sql_failrf  b  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   rW   r  r   r  num_entriesnum_rowss         r/   test_api_to_sql_replacerl  q  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  rL   r   rJ   rh  ri  s         r/   test_api_to_sql_appendro    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  )rW   r  r   r  r  s        r/   test_api_to_sql_type_mappingrs    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   Frr  zSELECT * FROM test_series)r}  r   r  r    r  r   r   aranger~  r$   r   r  to_frame)rW   r  r  ss2s        r/   test_api_to_sql_seriesr{    s    ""4(D
}}]D))__TD9Y  / : 	ryy'*:AJJq-U3			7	>B!**,+ :9s   C
Cc                4   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0S	9nUR                  Ul        UR                  SSS
9  UR                  R                  [        5        S UR                  l        [        R                  " XR5        g ! , (       d  f       N= f)Ntest_frame_roundtripTr  rp   "SELECT * FROM test_frame_roundtripr|   __index_level_0__level_0r   inplace)r}  r   r  r    r  r~  r$   renamer   	set_indexr   rl  r   r   r  rW   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 (;Y'GH$$FL
Y-
LLFLL&. :9s   D		
D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)Nr|   r  r  r}  Tr  FrJ   )rp   r   r  r  r~  )r  r  r  r  r  r}  r   r  r    r  r~  r$   r   r  )rW   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#   rN   r   rU   r%  )rW   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(   r5  r   parse_datesi  rI   rK   r   rL   %Y-%m-%d %H:%M:%Sr   i        i  ry  r   z%Y%m%dz
2010-10-10z
2010-12-12)r}  r   r$   r   r   rA   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)rt   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  a7  UR                  SSSS.5      n[        (       d  US   R                  S5      US'   [        R                  " X5        g )Nr   rw  z failing combination of argumentsr  r   datetime64[ns]rv   )rp   r  r5  r   r   rM  int32)r   r   r   zdatetime64[us])r}  r  r  r  r  r   rl  rS   r   r   r  )
rW   r  r  rx   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 !++??%")!
 $#"*9"5"<"<=M"NHY&+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   rA   r   r   r  r   rW   r  r   s      r/   test_api_date_and_indexr  U  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   rh  z.sqlite ADBC driver doesn't implement timedeltar  r|   F)r  r   rp   rJ   zSELECT * FROM test_timedeltar>  r   i@B )monthsdaysmicrosecondsnanosecondsi- r   )r}  r   r  r    r  r   r   rx  r  r  r  r  r  r   r  r  r   r  r~  r$   r  
DateOffsetr   r   )	rW   r  r  r  r   r  r  r  r  s	            r/   test_api_timedeltar  d  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               @r|   zdatatypes not supportedzComplex datatypes not supportedr  test_complexr~  )r}  r   r  r  r  r~  )rW   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)Nr|   -index_label argument NotImplemented with ADBCr  test_index_labelTr  r  rL   SELECT * FROM test_index_label)index_labelr   )r  r  r  r  r  r}  r   r  r    r  r   ranger   r   r~  r$   r   )	rW   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  r|   r  r  r  Tr  rL   r  )A0A1)B0B1rr  r  r   r  rI   level_1r  r   r   )r|  r  rJ   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  )	rW   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  rI   r  line1rJ         ?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  )rW   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rA   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  rJ   r5  z(SELECT "A", "B" FROM test_dtype_argumentz$SELECT A, B FROM test_dtype_argumentrp   rA   )r}  r   r  r    r  r   r~  r   r$   r   r  )	rW   r  rA   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 )
NrI   rJ   rK   rL   r   r   test_frame_integer_col_namesr  r  )r}  r   r   r~  r  s      r/   test_api_integer_col_namesr  C  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 )Nr|   -'get_schema' not implemented for ADBC driversTr  rz  r~  CREATEr  r  r  r  r  r}  r   
get_schemarW   r  r   r&  s       r/   test_api_get_schemar  J  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 )	Nr|   r  Tr  rz  pypi)rp   r   zCREATE TABLE pypi.r  r  s       r/   test_api_get_schema_with_schemar  X  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 )Nr|   r  Tr  皙?r  r  皙@r  rs  INTEGERr   )r   rz  r  r  r  )r  r  r  r  r  r}  r   r?   r   r   r  )rW   r  r  float_framerA   r   r&  s          r/   test_api_get_schema_dtypesr  g  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 )Nr|   r  Tr  r  r  r  r  )Col1Col2rz  r  )rp   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  )rW   r  r   r  r   r&  constraint_sentences          r/   test_api_get_schema_keysr    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)Nr|   r  r  test_chunksizeTr  rJ   )   r   abcder   Fr  zselect * from test_chunksizer   )r   r   r   r   rJ   r   r  ignore_indexrI   rs  r  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%   )rW   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
 $% $$]].b9/C :9 {''(8$!LE4-d;Du:)))FA M
 	d)K :92 :9s   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>  r:  rt   ru   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  )rW   r  r|   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  rI   rJ   rK   rL      ér  r   Fr  )r}  r   r  r    r  r   r~  )rW   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   rI   rJ   r   r  r  Fr  r5  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  )rW   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)Nr|   r  z16.0)rh  r>  z!pyarrow->pandas throws ValueErrorTr  
test_tabler  r  r  rI   r  r  r   Fr  z)SELECT a, b, a +1 as a, c FROM test_table)rI   r  rJ   rI   )rJ   r   rK   rI   )rK   r  rL   rI   )r  r  r  r   r   )r  r  r   r@   r  r  r  r  r}  r   r  r    r  r   r~  r  r  r   r  )rW   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 )Nrs  Not Implementedr  r  r   r   r   )
r  r  r  r  r}  r   r~  r%   r   r  )rW   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 )Nrs  r  r  r  r   r  r   r   r   r   )r  r   )r  r  r  r  r}  r   r~  r%   r   r  r   r  )rW   r  r   r  r  s        r/   test_read_table_index_colr  =	  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 )Nru  r  r  r  r8   )r  r  r  r  r}  r   r$   r  r   r  r%   )rW   r  iris_frame1iris_frame2s       r/   test_read_sql_delegater#  T	  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   rw   r   z,CREATE TABLE invalid (x INTEGER, y UNKNOWN);z0CREATE TABLE other_table (x INTEGER, y INTEGER);other_tablezSELECT * FROM other_table)r?   rx   r   r   ry   r   rk   rN   r   r  r   r%   r$   )rY  rW   rx   r   
query_listr  s         r/   test_not_reflect_all_tablesr'  g	  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)Nrs  r|   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~  )rW   r  r   r  r  s        r/   (test_warning_case_insensitive_table_namer,  	  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    SQLTablery   r   r   r   )rW   r  r.  r   r  r   s         r/   test_sqlalchemy_type_mappingr6  	  s    ""4(D$ 
	02DE4PQ
B 
	"["7%++--/44i@@@@ 
		s   A
B
B'zinteger, expected)int8SMALLINT)Int8r8  )uint8r8  )UInt8r8  )int16r8  )Int16r8  )uint16r  )UInt16r  )r  r  )Int32r  )uint32BIGINT)UInt32rB  )r   rB  )Int64rB  r   rB  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   rI   r  r   rA   r3  r4  )
r}  r   r   r    r5  r   r   r   r  r   )rW   r  r  r  r   r  r   r  s           r/   test_sqlalchemy_integer_mappingrG  	  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   rI   r  rF  z1Unsigned 64 bit integer datatype is not supportedr  r3  r4  )r}  r   r   r    r  r  r  r5  )rW   r  r  r   r  s        r/   (test_sqlalchemy_integer_overload_mappingrK  	  sy     ""4(D	Aq6C5	8B		"]]Q
 LLb3
 
	
 
 
	s#   BA7&B7
B	B
Bc                   [         R                  " S5        UR                  U 5      n [        R                  " 5        nSU-   nSnUR                  XTSSS9  [        R                  " XT5      n[        R                  " XT5      nSn[        R                  " X5      n	S S S 5        [        R                  " UW5        [        R                  " UW5        [        R                  " UW	5        g ! , (       d  f       NT= f)Nr?   rS  r8   r  Fr{  r  )r  r  r}  r   rT  r~  r   r  r%   r$   r  )
rW   r  r   r   db_urir   re  r   r  rn  s
             r/   test_database_uri_stringrN  	  s    
%""4(D
 
	d$YeTll51((7$((7 
 +{3+{3+{3 
	s   AC((
C6pg8000c                    [         R                  " S5        UR                  U 5      n 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/dbnamerO  r  zselect * from table)r  r  r}  r  ImportErrorr   r  )rW   r  rM  s      r/   (test_pg8000_sqlalchemy_passthrough_errorrR  	  sR     %""4(D 9F	{(	3*F3 
4	3	3s   A$$
A2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   rw   r5  z%select * from iris where "Name"=:namez#select * from iris where name=:namer   zIris-versicolorr  r=   )r}  r?   rx   r   r  set)rW   r  r  rx   	name_textiris_df	all_namess          r/   test_query_by_text_objrX  	  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?   rZ  r  rC   wherer   r=   r   r  rT  )rW   r  rZ  r  r8   name_selectrV  rW  s           r/   test_query_by_select_objr]  
  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 )
Nrs  r  r  r  rK   rL   r   )r   z%_variationtest_column_percentageFr  )r  r  r  r  r}  r   r~  r   r%   r   r  )rW   r  r  r   r  s        r/   test_column_with_percentagera  
  s     I$$FKK--5F-GH""4(D	9=	>BII+UIC


5t
<C#"r.   c           	        [         R                  " 5        n[        [        R                  " U5      5       n[
        R                  " U SUSS9S:X  d   e S S S 5        [        [        R                  " U5      5       n[
        R                  " SU5      nS S S 5        S S S 5        [         R                  " U W5        g ! , (       d  f       Nm= f! , (       d  f       N?= f! , (       d  f       NH= f)Ntest_frame3_legacyFrr  rL   z!SELECT * FROM test_frame3_legacy;)	r   rT  r   rz   r   r   r~  r$   r  )r   r   rW   r  s       r/   test_sql_open_closerd  %
  s     
	dW__T*+t::k+?USWXXXX , W__T*+t''(KTRF ,	 
 +v. ,+ ,+	 
	s:    CB<'C<CC<
C
	C
C	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  rQ  r   r  )rW   r  s     r/   test_con_string_import_errorrf  3
  s5    *D
9C	{#	.)40 
/	.	.s	   ?
Ac                     " S S5      n [         R                  " U " S5      5       n[        R                  " [        5         [
        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  )rz   r{   rW   )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  )getattrrW   )rk  r   s     r/   __getattr__ttest_con_unknown_dbapi2_class_does_not_error_without_sql_alchemy_installed.<locals>.MockSqliteConnection.__getattr__A
  s    499d++r.   c                8    U R                   R                  5         g r  )rW   rU   )rk  s    r/   rU   ntest_con_unknown_dbapi2_class_does_not_error_without_sql_alchemy_installed.<locals>.MockSqliteConnection.closeD
  s    IIOOr.   )rW   N)returnNone)__name__
__module____qualname____firstlineno__rn  rr  rU   __static_attributes__r-   r.   r/   MockSqliteConnectionri  =
  s    	<	,	r.   r}  ro  zSELECT 1)rp  r   r   r  r  r   r  )r}  rW   s     r/   Jtest_con_unknown_dbapi2_class_does_not_error_without_sql_alchemy_installedr~  ;
  s]      
		0<	=''4LLT* 5 
>	=44 
>	=s#   A<A+A<+
A9	5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  r8   )r   r$   r  r   r  r  r  DatabaseError)ru  rW   r!  r"  r  s        r/   test_sqlite_read_sql_delegater  L
  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 )Nrz  r  )r   r  )r   r&  s     r/   test_get_schema2r  W
  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/  r0  Tr1  r3  r4  
r   r  rI   r.  )r   r   r   r!   SQLiteTable
sql_schemasplitstrip)rs  rW   r   r  r   r   cols          r/   test_sqlite_type_mappingr  ]
  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)NrU  #sqlite_str has no inspection systemr   r         ?       @      @      @r  r  r  r  onetwoTr  r  rL   )r  skipr}  r?   r   r   r   r    r~  r  r  rW   r  r   r  r  insps         r/   test_create_tabler  o
  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)
NrU  r  r   r   r  r  r  r  rL   )r  r  r}  r?   r   r   r   r    rT  r~  r  r  clear_cacheAttributeErrorr  s         r/   test_drop_tabler  
  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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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       N]= f)NrU  r  r}  rL   r  r|   r  r  r   Tr  )r  r  r}  r#   rT  r~  rU  r  r  r   r   r   r  r  s         r/   test_roundtripr  
  s    |9:I""4(D!$'I		"	"	$-CDIII%%&JK 
% (;Y'GH
Y- FLL&. 
%	$s   *C
C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#   rT  rN   r   rU   r%  )rW   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 )Nr8   r~  )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 )Nr8   r9   )rp   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_existr~  )r}  r  r  r  r   r%   )rW   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 )NrU  .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   rA   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  rI   r  rW   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 )NrU  r  r'   z"sqlite does not read date properlyr  r   )r  r  r  r  r  r}  r   r%   r   r   rA   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   )rW   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  rI   r  Tr  )r}  r   r   r%  r$   r   r   r   )rW   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[        R
                  " X2R                  5       5        g )Nr   )r}  r   r   r%   r   r  rx  )rW   r  r  r  s       r/   !test_datetime_with_timezone_tabler  %  sE    ""4(D.t4H$/F&"3"3"56r.   c           	     @   U nUR                  U 5      n [        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;   a5  [        UR                  S   [        5      (       d   e[        US   5      US'   [        R                  " XC5        g )Nr   2013-01-01 09:00:00rK   
US/Pacificperiodsr   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$   ry   locr   r   )rW   r  r  r  r  s        r/   %test_datetime_with_timezone_roundtripr  -  s   I""4(D
 	j.lKLH ?? 2E?JaOOOy  ((33E: !((44T: 2D9F&+ @$GF9&**V,c2222!&+.s&+r.   c                   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	9n[        R                  " X45        g )
Nr   i'  rI   r   rr  test_datetime_obbFr  r   )
r}  r   r   r~  r   r%   r  NaTr   r  )rW   r  r   r  r  s        r/   test_out_of_bounds_datetimer  L  s     ""4(DfhtQ23A3?D;;/T;G1LLL 3T:F"&&F84H&+r.   c                   UR                  U 5      n [        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   6hr  freqnumsrr  	foo_table	info_date)r   rp   r  r  F)check_names)
r}  r   
_with_freqr   r  r~  r   r%   r   r  )rW   r  datesr  r  s        r/   "test_naive_datetimeindex_roundtripr  W  s     ""4(D|QT:EEdKE&%(+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   ry  unit)r}  r   r%   r  r   r  r   r   rA   r   r   )rW   r  r  r   expected_types        r/   test_date_parsingr  d  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                B   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[        R                  " XC5        [        R                  " SU 5      nUR                  SS	S
9nSU;   aL  [        UR                  S   [        5      (       d   e[        US   5      US'   [        R                  " XC5        g [        R                  " XC5        g )Nr  rK   r  r  r  test_datetimer  r   rI   )axisSELECT * FROM test_datetimer'   r  r   )r}  r   r   r   rw  r~  r   r%   rl   r   r  r$   ry   r  r   r   rW   r  r  r   r  s        r/   r  r    s   I""4(D	.:3P
B 99/t94999 6F[[q[)F&%  =tDF[[q[)F9&**V,c2222!&+.s
f)
f)r.   c                <   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[        R                  " XC5        [        R                  " S
U 5      nSU;   aK  [        UR                  S   [        5      (       d   e[        US   SS9US'   [        R                  " XC5        g [        R                  " XC5        g )Nr  rK   r  r  r  rI   r   r  Fr  r  r'   r  r   r  ru   )r}  r   r   r   rw  r  r  r~  r   r%   r   r  r$   ry   r   r   r  s        r/   test_datetime_NaTr    s    I""4(D	.:3P
B VVBFF6N99/t59AQFFF 6F&%  =tDF9&**V,c2222!&+h?s
f)
f)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  rI   rJ   r  r   	test_dateFr  )r}  r   r   r~  r%   r   r   r   )rW   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   rI      r  r   	test_timeFr  rJ   
test_time2rr  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)rW   r  rs  r  r   r  rY  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        )s1rz  test_read_writeFr  rI   T)check_dtypecheck_exact)r}  r   r   r  float32r   r~  r   r%   r   r  )rW   r  r  rz  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  rK   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  rK   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  rK   rJ   r   r  )r}  r   r   r  r~  r  r   r%   r   r  r$   r  s       r/   test_nan_stringr
    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 )Nr|   z)ADBC implementation does not create indexTr  r  r  r  r   r  test_to_sql_saves_indexrJ   >   rU  rs  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#   rT  r~  r   r$   r   r   r  r?   r   get_indexes)rW   r  r  r   tbl_namer  ixsix_colsix_nameix_infor   r  r  s                r/   test_to_sql_save_indexr  !  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)rs  r|   r   rw   )r}  r?   rx   r#   rT  rN   )rW   r  r  rY   rx   r  transs          r/   test_transactionsr  I  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  r|   r   rw   c                      \ rS rSrSrg)1test_transaction_rollback.<locals>.DummyExceptionih  r-   N)rx  ry  rz  r{  r|  r-   r.   r/   DummyExceptionr  h  s    r.   r  z/INSERT INTO test_trans (A,B) VALUES (1, 'blah')r  zSELECT * FROM test_transrI   )r}  r#   rT  ry   r!   rN   r?   rx   	Exceptionr    rU  r  )rW   r  r  r  r  rY   rx   r  ins_sqlr  r  s              r/   test_transaction_rollbackr!  Y  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)NrU  z(test does not support sqlite_str fixturer  r   rw   r   test_get_schema_create_tabler~  Fr  )r  r  r  r  r}  r?   rx   r   r   r   r  r   ry   r   rk   rN   r%   r   r  )
rW   r  r   rx   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)NrU  r  r   )r   r6   r5   r   r   g?Tg?Nr   
dtype_testr  rJ   dtype_test2r   rp   rA   rf   z&The type of B is not a SQLAlchemy typer  r  dtype_test3
   single_dtype_test)r  r  r}  r?   r   r6   sqlalchemy.schemar5   r   r~  reflecttablesr   r   ry   r  r  r   r  )rW   r  r   r6   r5   r  r   r   metasqltyper  sqltypeasqltypebs                r/   
test_dtyper8    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 )NrU  r  r   )r   r   r4   r   r(  T  r   rI   r  r  r  BoolDateIntr4   notna_dtype_testr  rJ   rf   r(   r<  r=  r>  r4   )r  r  r}  r?   r   r   r4   r   r1  r5   r   r   r   r~  r   r%   r2  r3  r   ry   r   )rW   r  r  r   r   r4   r   r5   r  r   r  r  r4  my_typecol_dicts                  r/   test_notna_dtyperB    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 )NrU  r  r   )
BigIntegerr4   r   r(  gYB?r   r  float64r   r  r   )f32f64
f64_as_f32i32r  test_dtypesFr  rH     )	precision)r   rp   r   r|  rA   rI   rG     rf   rF  rI  r  )r  r  r}  r?   rD  r4   r   r1  r5   r   r   r~  r   r%   r   roundr   r2  r3  r   r   r   ry   )rW   r  rD  r4   r   r5   Vr   r  r4  rA  s              r/   test_double_precisionrP    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_datar~  )r   r$   )r  r  s     r/   test_select3test_connectable_issue_example.<locals>.test_select,  s    9!!%88r.   c                &    UR                  SU SS9  g )Ntest_foo_datar   )r   rp   r|  )r~  )r  r   s     r/   test_append3test_connectable_issue_example.<locals>.test_append0  s    jHMr.   c                &   > T" U 5      nT" X5        g r  r-   )rW   foo_datarW  rS  s     r/   test_connectable8test_connectable_issue_example.<locals>.test_connectable3  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  )ry   r   rk   )connectablerW   r   r[  s     r/   main,test_connectable_issue_example.<locals>.main9  sW    k6**$$&$ZZ\$T* " '& [) "\ '&s!   A(	AA(
A%	!A((
A6rV  r  r  rK   )r}  r   r   r   r~  )rW   r  r_  r   rW  r[  rS  s      @@@@r/   test_connectable_issue_examplera  $  sh    ""4(D )9N$* 	?I./66OQU6V		 	Jr.   inputr  bar)r  infe0c                N   [        U5      nU nUR                  U 5      n SU;   a  [        R                  " S5      n[	        UR
                  5      [	        S5      :  a>  SUR                  ;   a.  [        R                  R                  SS9nUR                  U5        Sn[        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                   " X85        g ! , (       d  f       g = f)Nr(   r  z1.0.3rd  zGH 36465r  zinf cannot be used with MySQLr  foobarFr  rI   )r   r}  r  r  r   r@   r   r  r  r  r  r  r~  r   r%   r   assert_equal)	rW   r  rb  r   r  r  r  r  r  s	            r/   test_to_sql_with_negative_npinfrh  H  s     
5	BI""4(D)
 %%i07&&'''*::w"**?T;;$$J$7D%-]]:S1II8UI; 21 yyhDy>!CCC  40
  21s   6D
D$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)NrU  z&test does not work with str connectionr   )r2   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)	rx  ry  rz  r{  __tablename____table_args__idrm  r|  )r2   r   rj  s   r/   	Temporaryro  ~  s0    #${m4G.gbkE2r.   ry  )rm  )r   rp   )r  r  r}  r?   r2   r   rj  r  sqlalchemy.ormrk  rl  r   rk   r  	__table__rm   addflushr   r$   rm  r   r  )rW   r  r  rk  rl  r/  r  Basery  sessionr   r2   r   rj  s              @@@r/   test_temporary_tabler  h  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)
Nrs  r|   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~  )rW   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  rL   N)r}  r#   rT  r~  r  r  r   ri  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   rL   	r}  r  option_contextr#   rT  r~  r  r  r   ri  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   rL   r  ri  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  ry   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c                     g r  r-   r-   r.   r/   "test_get_engine_auto_error_messager    s     	r.   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
S S S 5        U" X$U5      n[
        R                  " W
U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)Nrz  Fr  r   rp   r   r|  mode.string_storageSelect * from dtype_backendr|   z(adbc does not support chunksize argumentr  rK   )rp   r  r  )r}  r~  r  r  rq  r   r  r  r  r  r  rW   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
 
B &nYOH&(+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
S S S 5        U" X$U5      n[        R                  " W
U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'   r|   zhSQLite actually returns proper boolean values via read_sql_table, but before pytest refactor was skippedr  rz  Fr  r  r  r  rK   )r  r  )r  r  r  r  r}  r~  r  r  rq  r   r  r  s                r/   !test_read_sql_dtype_backend_tabler  
  s3    4F$.KKM  	
 I""4(DE	BII5%9IE			0.	AT"5mL 
B%nYOH&(+			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)	Nrz  Fr  r  zPdtype_backend numpy is invalid, only 'numpy_nullable' and 'pyarrow' are allowed.r  numpyr  )r}  r~  r  r  r  rq  r  )rW   r  r  r  r   r   r  s          r/   )test_read_sql_invalid_dtype_backend_tabler  :  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      $ )NrI   rK   rD  r  r  r        @Float64r  r  r  )TFNTFTr  r  r  Nr  r  r   defgh)r   r   r   r  r-   r.   r/   r  r  J  s]    BFFAg6	1bffc*)<y9$$ !		
 r.   c                     SS jn U $ )Nc                h   U S:X  al  [        [        R                  " / SQ[        R                  S95      n[        [        R                  " SS[        R
                  /[        R                  S95      nOUS:X  aO  [        R                  " S5      nSSKJ	n  U" UR                  / SQ5      5      nU" UR                  / S	Q5      5      nON[        R                  " S5      n[        UR                  / SQ5      5      n[        UR                  / S	Q5      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UUS.5      nUS:X  aX  [        R                  " S5      nSSKJ	n  [        UR                   Vs0 s H  nX" UR                  Xx   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 )Npythonr  r  r  r  r  r   )ArrowExtensionArrayr  rI   rK   rD  r  r  r  r  r  TFbooleanr  r  )from_pandasr(   r'   numpy_nullable)r  r  zint64[pyarrow])r   r   r  object_r  NAr  r  pandas.arraysr  r   r   r   r  r   r   )	storager  r  string_arraystring_array_nar  r  r   r  s	            r/   r  $dtype_backend_expected.<locals>.func\  s    h&rxxrzz'RSL)"((Cbee3DBJJ*WXOi'$$Y/B9.rxx/HIL1"((;K2LMO $$Y/B+BHH_,EFL.rxx8H/IJOQN':IW5S"&&#.i@O9=T5"%%0	B/yA!$	
 I%$$Y/B9  "zz) ,RXXbg4X-PQQ)B i8y#8 00YYW7;< 	 YY%5<LMN	s   "H/rv  r   r-   )r  s    r/   r  r  Z  s    1f 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 )Nr|   r  r  r   r  r  r  r  r   rz  Fr  r  zSELECT * FROM testrI   )rA   r  )r  r  r  r  r  r}  r   r   r	  r~  r$   r   r  )rW   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 )Nrz  r  r   r  Fr  r  r  r  )rA   r  r  )r   r   r   r  r   rD  )
r}  r   r~  rq  r  r   rE  r   r   r  )rW   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n[        SSSS.SSSS./5      nUR                  SU5        [        R                  " [        US9   UR                  SUS SS	9  S S S 5        g ! , (       d  f       g = f)
NzxStarting with pandas version 3.0 all arguments of to_sql except for the arguments 'name' and 'con' will be keyword-only.rI   rJ   rK   r  exampler  r  r  )r   r~  r   r  rK  )rW  rW   r  r   s       r/   test_keyword_deprecationr    sn    D	;  
!!!,AAA.FG	HBIIi		#	#M	=
		)T49	= 
>	=	=s   A!!
A/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  rI   rJ   r   r  test_bigintwarningFr  )r   r~  r   r  r   r%   rW  rW   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)NrI   rJ   rK   rL   r  r  zEmpty table name specifiedr  r  r  Fr{  )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   r2   r   r6   )rl  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  Trs  2   r-   N)rx  ry  rz  r{  rv  rx  string_columnr|  r  s   r/   Testr    s"    $G.vbz*r.   r  rf   rI   helloworld)rx  r  r  Fr  r  rJ   rx  r  )r?   r2   r   r6   rz  rl  r  rk   rB   
create_allr   r~  rV   r  rx  r  r%  r   )rW  rW   rl  r  	BaseModelr  rk  r  r   
test_queryr2   r   r6   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           	     R   U n[         R                  " S5        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        Sn[        SSS/0U[        S/US9S9n[        R                  " WU5        g ! , (       d  f       N@= f)Nr  rz  r  xyFr  )rp   r   r|  zfuture.infer_stringTzstring[pyarrow_numpy]r  )rA   r   )
r  r  r   r~  r  r  r%   r   r   r  )rW  rW   r   r   r  rA   r  s          r/   test_read_sql_string_inferencer  
  s    D
	"E	C#s$	%BIIeUiI@			0$	7, 
8 $E	sCjse50IH &(+ 
8	7s   B
B&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     r  r  rz  r  F)r|  r   select * from testr   r   z2020-12-31 12:00:00.000000)r   r   r~  r  r  r   )rW  rW   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)Nro  )detect_types)rp  r   rz   r   PARSE_DECLTYPESrq  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  rW   r   r  s       r/   )test_roundtripping_datetimes_detect_typesr  /  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)NrI   rJ   r  r   r  r  r  z$DROP SCHEMA IF EXISTS other CASCADE;zCREATE SCHEMA other;test_schema_publicFr  test_schema_public_explicitr-  )r   rp   r   r   test_schema_otherotherr.  z!Table test_schema_other not foundr  )r   rp   r   r   r  )r   rp   r   r   r|  r   Tr  )r   r   rk   r   r~  r   r%   r   r  r  r  r  r   )
r1  rW   r   rp   r  r  r  res4r  r  s
             r/   test_psycopg2_schema_supportr  8  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                   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[        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   rw   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;rI   2021r   r   rJ   rx  
created_dtr   Tr  person)r$  rx   r   rk   rN   r  r  r   r   r   r  r   r    r  )	r1  rW   rx   rC  rp   r  r  r  r  s	            r/   test_self_join_date_columnsr    s     &D#		L 
3YY[KK%  

 	S  [[)F
Yv%(	)A	-.|8Lq8PH &+ 
	5X& 
6	5 [ 
 
6	5s.   C CC 4C1
C	C  
C.1
C?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_framerL   )r   r   r    rT  r~  r  r  )rW  rW   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  rI   rJ   r  r   r  Fr  zSELECT * FROM test_date)r   r   r~  r$   r   r  r   r   )rs  rW   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   rI   r  r  rJ   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  rs  rW   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)rN   r  )
rW   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  rJ   r,  STRINGr-  r  z!B \(<class 'bool'>\) not a stringr  r  r0  )r   r~  r  r  r  r  bool)rs  rW   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   rI   r  r  r  r;  r?  r  rJ   r<  r  r=  r.  r>  r4   REAL)r   r   r   r~  r  )rs  rW   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)NrI   rJ   rK   rL   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)rs  rW   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_bytesrS   rl  r   rE  r  ry   r   r   rJ  )r   rl  _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#   rN   r   r%  )r  rp   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      [        S9[        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 )NrJ   r/  rL   ABCDr  
2000-01-01r/  r   r  r  r  Fr  zselect * from test_tabler  txtIdxtest_table2zselect * from test_table2r  )r   r   r  r  r  r   r%  r  r   r   r~  r  r   r   r  r  r	  rw  r   r   )rs  r   r  r  frame2new_idxs         r/   test_xsqlite_basicr9  A  s@   
		a 009d6l&1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           
     N   [        [        R                  R                  S5      R	                  S5      [        [        S5      [        S9[        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 )NrJ   r1  r2  r  r3  r/  r   r  r  r  rz  z(INSERT INTO test VALUES (%s, %s, %s, %s)r~  r  gMbP?)rtol)r   r   r  r  r  r   r%  r  r   r  r   r   r  rM   rN   iterrowsr-  r/  rV   r  r   r   r  )	rs  r   r&  rZ   insr  r]   fmt_sqlr  s	            r/   test_xsqlite_write_row_by_rowr?  \  s    
		a 009d6l&1r<E
 vvEJJtv.J



!CKK

4C.."s)S)w+ # \\.NCF;;FL&d3r.   c           
     ~   [        [        R                  R                  S5      R	                  S5      [        [        S5      [        S9[        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)NrJ   r1  r2  r  r3  r/  r   r  r  rz  z$INSERT INTO test VALUES (?, ?, ?, ?)r   r  rI   )r   r   r  r  r  r   r%  r  r   r   r  rM   rN   r   r#   rJ  rV   r  r   r   r  )rs  r   r&  rZ   r=  r]   r  r  s           r/   test_xsqlite_executerA  s  s    
		a 009d6l&1r<E
 v.J



!CKK

0C
**Q-C			~	.*3c
+ 
/\\.?F;;r?FL&), 
/	.s   5D..
D<c           
         [        [        R                  R                  S5      R	                  S5      [        [        S5      [        S9[        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 )NrJ   r1  r2  r  r3  r/  r   r  r  rz   r   r   rI   DATETIME)r   zPRIMARY KEY ("A", "B"))r   r   r  r  r  r   r%  r  r   r   r  
splitlinesr  r  rM   rN   )rs  r   r&  lineslinetokensrZ   s          r/   test_xsqlite_schemarI    s    
		a 009d6l&1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)zExecution failed on sqlr  z(INSERT INTO test VALUES("foo", "bar", 7))rM   rN   r   r#   r  r  r  )rs  r&  rZ   r  s       r/   test_xsqlite_execute_failrM    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)NrK  ro  rL  z$Cannot operate on a closed database.r  r  r~  )rp  r   rz   r   rM   rN   r   r#   r  r  rD  r/  )r&  rW   rZ   r  r  s        r/   &test_xsqlite_execute_closed_connectionrO    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rp   r   r   )r   r   onesr   r~  )rs  r   s     r/   $test_xsqlite_keyword_as_column_namesrU    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 )NrI   rJ   c0r   mono_dfFrS  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_dfrK   )r   r   r~  sumrN   r  r   r  )rs  rX  con_xthe_sumr  s        r/   !test_xsqlite_onecolumn_of_integerra    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)NrI   rJ   r   r   r  r_  )r   r   Etable_if_existszSELECT * FROM z*'notvalidvalue' is not valid for if_existsr  notvalidvalue)r   rp   r   r|  r  z&Table 'table_if_exists' already existsr  F)r   rp   r   r|  r   r~  r  r	  rK   )rK   r   rL   r   r   rc  r   )r  r	  rf  rg  rh  )r   r  r  r  r   r~  r  r/  )rs  df_if_exists_1df_if_exists_2r   
sql_selectr  s         r/   test_xsqlite_if_existsrl    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)rX   r   )r   r   )r   
list[dict])r   rm  r   r   )r   r   )r   r   )r   r   rW   Lsqlite3.Connection | sqlalchemy.engine.Engine | sqlalchemy.engine.Connection)r   r   rW   rn  r  r  (,  
__future__r   rp  r   rP   r   r   r   r   r   r	   pathlibr   rz   typingr   r=  r  r   r  pandas._libsr   pandas.compatr   r   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.core.arraysr   r   pandas.util.versionr   	pandas.ior   pandas.io.sqlr   r    r!   r"   r#   r$   r%   r?   r  filterwarnings
pytestmarkfixturer0   rC   r^   r`   rq   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r"  r&  r)  r+  r1  r3  r6  r8  r>  rG  rM  rO  rQ  rU  rW  rY  r[  r]  r_  ra  rc  re  rh  rj  rm  rs  ru  rw  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  rL  rN  rP  rW  rY  r[  r]  ra  rc  rf  rl  ro  rs  r{  r  r  r  r  r  r  r  r  r  r  r  r  rl  rS   r  r  r  r  r  r  r  r  r  r  r  r  r  r#  r'  r,  r6  rA   r   rG  rK  rN  skip_if_installedrR  rX  r]  ra  rd  rf  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#  r8  rB  rP  ra  infrh  r  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-  r/  r9  r?  rA  rI  rM  rO  rU  ra  rl  r-   r.   r/   <module>r     s   "   
           ? ) )     (     [[''C

  82D> "&><2(*7Z-;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#6;;>>:  LL(?
LL$FKKNN;  ),<+==@PP  #8"99<QQ 
 !$:#;;>TT 
 1O 2O 1L 2L 1Q 2QB 1M 2M 1D'?3> 4 2> 1-/NOM P 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B<= !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"?@	,.HI	w/!&	

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