
    m*ic4                   j3   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  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K0J1r1  S SK2J3r3  S SK4J5r5J6r6J7r7J8r8J9r9J:r:J;r;  \(       a  S SK<r<\Rz                  R}                  S5      \Rz                  R~                  /r@\R                  S 5       rBS rCG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\Rz                  R                  SG9\R                  " SH\Rz                  R                  SG9/rx\R                  " SI\Rz                  R                  SG9\R                  " SJ\Rz                  R                  SG9/ry\R                  " SK\Rz                  R                  SG9\R                  " SL\Rz                  R                  SG9/rz\R                  " SM\Rz                  R                  SG9\R                  " SN\Rz                  R                  SG9/r{\R                  " SO\Rz                  R                  SG9\R                  " SP\Rz                  R                  SG9/r|\R                  " SQ\Rz                  R                  SG9\R                  " SR\Rz                  R                  SG9/r}/ SSQr~/ STQr/ SUQr\x\{-   \~-   r\y\|-   \-   r\z\}-   \-   rSV\R                  " SW\Rz                  R                  SG9/r\R                  " SX\Rz                  R                  SG9SY/r\R                  " SZ\Rz                  R                  SG9S[/r\S\/-   \-   r\S]/-   \-   r\S^/-   \-   r\Rz                  GR                  S%\5      S_ 5       r\Rz                  GR                  S%\5      S` 5       r\Rz                  GR                  S%\5      Sa 5       r\Rz                  GR                  S%\5      Sb 5       r\Rz                  GR                  S%\5      \Rz                  GR                  ScSSd/5      Se 5       5       r\Rz                  GR                  S%\5      \Rz                  GR                  SfSgSh/5      Si 5       5       r\Rz                  GR                  S%\5      Sj 5       r\Rz                  GR                  S%\5      Sk 5       r\Rz                  GR                  S%\5      Sl 5       r\Rz                  GR                  S%\5      Sm 5       r\Rz                  GR                  S%\5      Sn 5       r\Rz                  GR                  S%\5      So 5       r\Rz                  GR                  S%\5      Sp 5       r\Rz                  GR                  S%\5      Sq 5       r\Rz                  GR                  S%\5      Sr 5       r\Rz                  GR                  S%\x5      Ss 5       r\Rz                  GR                  S%\{5      \Rz                  GR                  StSuSv/5      Sw 5       5       r\Rz                  GR                  S%\{5      Sx 5       r\Rz                  GR                  S%\5      Sy 5       r\Rz                  GR                  S%\x5      Sz 5       r\Rz                  GR                  S%\{5      S{ 5       rS| rS} rS~ rS r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      \Rz                  GR                  S/ SQ5      \Rz                  GR                  S\3GRf                  SS4\3GRf                  SS4\3Rt                  SS4\3Rv                  SS4/5      S 5       5       5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      \Rz                  GR                  S/ SQ5      S 5       5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      \Rz                  GR                  SS\\\\S./5      S 5       5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       rS r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      \Rz                  GR                  SSSSSSSSSSSSSSS\\GR                  " \5      GR                  S:X  a  SOS4/5      S 5       5       r\Rz                  GR                  S%\5      \Rz                  GR                  SSS/5      S 5       5       r\Rz                  GR                  S%\5      S 5       r\ GR                  " S5      \Rz                  GR                  S%\5      S 5       5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       rS r\ GR                  " S5      S 5       r\ GR                  " S5      S 5       rS rS rS r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\{5      \Rz                  GR                  SSS//5      S 5       5       r\Rz                  GR                  S%\{5      S 5       r\Rz                  GR                  S%\{5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      S 5       r\Rz                  GR                  S%\5      \Rz                  GR                  SS\GR                  /0S\GR                  * /0\GR                  * /S/S./5      S 5       5       Gr \Rz                  GR                  S%\5      S 5       Gr\Rz                  GR                  S%\5      S 5       Gr\Rz                  GR                  S%\5      S 5       Gr\Rz                  GR                  S%\5      GS  5       Gr\Rz                  GR                  S%\5      GS 5       GrGS GrGS Gr\Rz                  GR                  S%\5      \Rz                  GR                  GSGSGS/5      GS 5       5       Gr\Rz                  GR                  S%\5      \Rz                  GR                  GSGSGS/5      GS	 5       5       Gr	\Rz                  GR                  S%\5      \Rz                  GR                  GS/ GS
Q5      GS 5       5       Gr
\R                  GS9GS j5       Gr\R                  GS 5       Gr\Rz                  GR                  S%\5      GS 5       Gr\Rz                  GR                  S%\5      \Rz                  GR                  GS\GR                  GS/5      \Rz                  GR                  GSGSGS/5      GS 5       5       5       GrGS GrGS GrGS GrGS GrGS GrGS Gr\R                  GS 5       GrGS Gr\Rz                  R                  GS 5       Gr\Rz                  R                  GS 5       GrGS GrGS Gr\Rz                  GR                  GSGSGS /5      GS! 5       GrGS" GrGS# GrGS$ GrGS% Gr GS& Gr!G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)using_string_dtype)lib)pa_version_under13p0pa_version_under14p1)import_optional_dependency)
	DataFrameIndex
MultiIndexSeries	Timestampconcat
date_rangeisnato_datetimeto_timedelta)Version)sql)SQLAlchemyEngineSQLDatabaseSQLiteDatabase
get_enginepandasSQL_builderread_sql_queryread_sql_tablez=ignore:Passing a BlockManager to DataFrame:DeprecationWarningc                 &    SSSS.SSSS.SS	S
S.S.$ )Nz1SELECT * FROM iris WHERE Name=? AND SepalLength=?z7SELECT * FROM iris WHERE `Name`=%s AND `SepalLength`=%sz7SELECT * FROM iris WHERE "Name"=%s AND "SepalLength"=%s)sqlitemysql
postgresqlz]
                SELECT * FROM iris WHERE Name=:name AND SepalLength=:length
                zw
                SELECT * FROM iris WHERE
                `Name`=%(name)s AND `SepalLength`=%(length)s
                zw
                SELECT * FROM iris WHERE
                "Name"=%(name)s AND "SepalLength"=%(length)s
                z&SELECT * FROM iris WHERE Name LIKE '%'z(SELECT * FROM iris WHERE `Name` LIKE '%'z(SELECT * FROM iris WHERE "Name" LIKE '%')read_parametersread_named_parametersread_no_parameters_with_percent r,       X/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/pandas/tests/io/test_sql.pysql_stringsr/   F   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   )	
sqlalchemyr1   r2   r3   r4   r5   r6   r   __version__)
r>   r1   r2   r3   r4   r5   r6   dtypemetadatar7   s
             r.   iris_table_metadatarB   c   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csvfilerP   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
        )rD   rE   z+INSERT INTO iris VALUES($1, $2, $3, $4, $5)r   rH   rI   rJ   rK   )	rL   rM   rN   rO   rP   rQ   rR   rS   rU   )rV   rW   rX   rY   rZ   rP   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   insertrD   rE   T
checkfirstbind)r>   rb   rB   rN   rO   rP   rQ   dictzipvaluesbegindropcreaterM   )rV   rW   rb   r7   rZ   rP   headerr\   paramsrX   cons              r.   create_and_load_irisrp      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
ConnectionrL   rM   r   rU   r>   rw   rj   )rV   rX   rY   adbcrw   ro   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Booleanr1   DateTimer3   Integerr4   r6   r&   typesTextColDateCol
IntDateColIntDateOnlyColFloatColIntColBoolColIntColWithNullBoolColWithNull)	r>   r~   r   r1   r   r3   r   r4   r6   )dialectr~   r   r1   r   r3   r   r4   r6   	date_type	bool_typerA   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(?, ?, ?, ?, ?, ?, ?, ?, ?)
                )rx   ry   rz   rL   rM   rS   rU   )rV   
types_datarX   ins_stmtrY   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)
                )rL   rM   rS   rU   )rV   r   rY   rX   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   ra   EngineTrc   re   )r>   rb   sqlalchemy.enginer   r   ri   rx   connectrj   rk   rl   rM   )rV   r   r   rb   r   r   rX   s          r.   create_and_load_typesr   6  s    !( )E%=
+D$\\^t

4D
1$'T"  ^ ZZ\JJtJ-LLdL#LL \  ^ \s0   C= 1C,C=21D,
C:	6C==
D
Dc                   SSK JnJnJnJnJn  SSKJn  U" 5       nU" SXq" SU" SS95      5      nSS0SS	0/n	U" U5      R                  U	5      n
[        X5      (       ac  U R                  5        n U R                  5          UR                  U SS
9  UR                  U S9  U R                  U
5        S S S 5        S S S 5        OIU R                  5          UR                  U SS
9  UR                  U S9  U R                  U
5        S S S 5        [        SSS9[        SSS9/n[!        USS9$ ! , (       d  f       N~= f! , (       d  f       N== f! , (       d  f       NN= f)Nr   )r1   r   r4   r6   rb   r   datetzDateColWithTzT)timezonez2000-01-01 00:00:00-08:00z2000-06-01 00:00:00-07:00rc   re   z2000-01-01 08:00:00UTCtzz2000-06-01 07:00:00name)r>   r1   r   r4   r6   rb   r   r   ri   rx   r   rj   rk   rl   rM   r   r   )rV   r1   r   r4   r6   rb   r   rA   r   datetz_datarX   expected_datas               r.   create_and_load_postgres_datetzr   J  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   w  sw    \\q!&&F
**Q-Cfbkk****V7u}}STU ;;,,,,r-   c                   SU 3n[        SSS9n[        U [        R                  5      (       a2  U R	                  5       nUR                  U5      R                  5       S   $ U(       aX  [        XR                  5      (       a>  U R	                  5        nUR                  U5        UR                  5       S   sS S S 5        $ SSKJn  SSK	J
n  [        U [        5      (       aR   U" U 5      nUR                  5        n U R                  U5      R                  5       sS S S 5        UR                  5         $ [        X5      (       a9  U R                  5        n U R                  U5      R                  5       sS S S 5        $ U R                  U5      R                  5       $ ! , (       d  f       g = f! , (       d  f       O= f UR                  5         g ! WR                  5         f = f! , (       d  f       g = f)Nz SELECT count(*) AS count_1 FROM rr   rs   rt   r   )create_enginer   )r   rx   ry   rz   rL   rM   fetchoner>   r   r   r   strr   exec_driver_sql
scalar_onedispose)rV   
table_namerX   r{   rY   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datarO   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$@rH   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   int64rR   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   rr   rs   rt   catalog_namecatalog_db_schemasdb_schema_namedb_schema_tables
table_typeviewr   inspect)rx   ry   rz   rM   fetchallr   adbc_get_objectsread_all	to_pylistappendr>   r   get_view_names)rV   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   rr   rs   rt   r   r   r   r   r   r   )rx   ry   rz   rM   r   r   r   r   r   r   r>   r   get_table_names)
rV   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rV   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 rr   rs   rt   zDROP TABLE IF EXISTS "")rx   ry   rz   rM   r   _get_valid_sqlite_namerU   r   rL   rj   r   
drop_table)r   rV   r{   rY   ro   dbs         r.   r  r  1  s     $**++,S-G-G
-S,TUV **EhWJt__55#4ZLBC  __S)RMM*- *   *) s0   C=DD,D=
D
D	D
D-c                   SS K n[        U[        R                  5      (       a9  UR	                  S[
        R                  " U 5       35        UR                  5         g [        SSS9nU(       aI  [        XR                  5      (       a/  UR                  5        nUR	                  SU  S35        S S S 5        g UR                  R                  R                  R                  U 5      nUR                  " SU 35      nUR                  5        nUR	                  U5        S S S 5        g ! , (       d  f       g = f! , (       d  f       g = f)Nr   zDROP VIEW IF EXISTS rr   rs   rt   zDROP VIEW IF EXISTS "r  )r>   rx   ry   rz   rM   r   r  rU   r   rL   r   r   identifier_preparerquote_identifierrw   rj   )r   rV   r>   r{   rY   quoted_viewrX   ro   s           r.   	drop_viewr  D  s     $**+++C,F,Fy,Q+RST)*EhWJt__55#3I;a@A  ++--AARRK ??%9+#GHDD!   s   D&D7&
D47
Ec               #    #    [         R                  " S5      n [         R                  " S5      nU R                  " SSUR                  R                  R
                  0U R                  R                  S9nUv   [        U5       H  n[        X25        M     [        U5       H  n[        XB5        M     UR                  5         g 7f)Nr>   pymysqlz*mysql+pymysql://root@localhost:3306/pandasclient_flag)connect_args	poolclass)pytestimportorskipr   	constantsCLIENTMULTI_STATEMENTSpoolNullPoolr   r  r  r  r   )r>   r  r   r   tbls        r.   mysql_pymysql_enginer  [  s     $$\2J!!),G%%4#W%6%6%=%=%N%NO//**F
 Lf%$ &f%3 &
NNs   CCc              #  @   #    [        X5        [        U 5        U v   g 7fNrp   r|   )r  r   s     r.   mysql_pymysql_engine_irisr  l  s     -923
   c              #  ,   #    [        XS5        U v   g 7f)Nr'   r   )r  r   s     r.   mysql_pymysql_engine_typesr!  s  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  rV   s     r.   mysql_pymysql_connr%  y  s#     		%	%	'4
 
(	'	'   2!	2
/2c              #  h   #    U R                  5        nUv   S S S 5        g ! , (       d  f       g = f7fr  r$  )r  rV   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!  rV   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_enginer0    s     $$\2J

#%%G//**F Lf%$ &f%3 &
NNs   B!B#c              #  @   #    [        X5        [        U 5        U v   g 7fr  r  )r0  r   s     r.   postgresql_psycopg2_engine_irisr2    s     3?89
$$r  c              #  ,   #    [        XS5        U v   g 7f)Npostgresr   )r0  r   s     r.    postgresql_psycopg2_engine_typesr5    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$  )r0  rV   s     r.   postgresql_psycopg2_connr7    r+  r&  c               #  f  #    [         R                  " S5        [         R                  " S5        SSKJn   SnU R	                  U5       nUv   [        U5       H  n[        X25        M     [        U5       H  n[        XB5        M     UR                  5         S S S 5        g ! , (       d  f       g = f7f)Npyarrowadbc_driver_postgresqlr   dbapiz4postgresql://postgres:postgres@localhost:5432/pandas)
r  r  r:  r<  r   r   r  r  r  rU   )r<  urirV   r   r  s        r.   postgresql_adbc_connr>    s     
	"
01,
@C	s	t
!$'Dd! (!$'Cs! ( 
		s   AB1AB 	B1 
B.*B1c              #  ,  #    SS K nU n UR                  S5         UR                  S5        Uv   g ! UR                   a    UR                  5         [	        X15         NDf = f! UR                   a    UR                  5         [        U5         Ncf = f7fNr   r7   	iris_view)adbc_driver_manageradbc_get_table_schemaProgrammingErrorrollbackr_   r|   )r>  r   mgrrV   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  tupleri   r   )r>  r   rF  rV   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$  )r2  rV   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$  )r5  rV   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.  r/  )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  rV   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   rp   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]  rV   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  rV   s     r.   sqlite_conn_typesre  -  s#     		$	$	&$
 
'	&	&r&  c               #    #    [         R                  " S5        [         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)Nr9  adbc_driver_sqliter   r;  zfile:)r  r  rg  r<  r   rT  r   r   r  r  r  rU   )r<  r   r=  rV   r   r  s         r.   sqlite_adbc_connrh  3  s     
	"
,-(		ddVn]]34J%d+$% ,%d+3% ,KKM   
	 
	s7   AC#
C!AC0C8	C#
C	C
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  rV   s       r.   sqlite_adbc_irisrj  D  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  ri   r   rU   )rh  r   rF  rV   rL  rK  s         r.   sqlite_adbc_typesrm  V  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   ry   r   closing_connrV   s     r.   sqlite_buildinrs  l  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  s  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  ri   r   )rs  r   rK  s      r.   sqlite_buildin_typesrw  z  s8     5?@ZE%'ZJ@!.=
 As   A#<Ar  )marksr%  r  r(  r!  r*  r0  r7  r2  rO  r5  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   ro   	if_existsr   )getfixturevalueto_sql)rV   r   requests      r.   test_dataframe_to_sqlr    s+     ""4(DFNr-   c                    U S:X  aE  [        5       (       d6  UR                  R                  [        R                  R                  SS95        UR                  U 5      n UR                  S S nUR                  SU SSS9  g )	Nr>  z=postgres ADBC driver < 1.2 cannot insert index with null typereasonr   rz  r   Fr{  )	r   node
add_markerr  markxfailr}  r   r~  )rV   r   r  empty_dfs       r.   test_dataframe_to_sql_emptyr    sx    %%.@.B.BKKV  	
 ""4(D#HOOTXUOKr-   c                v   [         R                  " S5        [        [        R                  " S/SS9[        R                  " [        SSS5      /SS9[        R                  " [        SSS5      /SS9[        R                  " [        S5      /SS9[        R                  " S	/S
S9S.5      nSU ;   a/  U S:X  a  UR                  S/S9n[        (       a	  [        nSnOS nSnO[        nSnUR                  U 5      n [        R                  " X4SS9   UR                  SU SSS9  S S S 5        g ! , (       d  f       g = f)Nr9  rH   zint8[pyarrow]r@     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   rk   r   DeprecationWarningUserWarningr}  r   assert_produces_warningr~  )rV   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 )Nr9  r   r  rH   r  r  r  r  Fr{  )r  r  r   r  r  r   r}  r~  )rV   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 driversTr  strictneed_transaction
test_framer  )r  r  r  r  r  r}  r"   r~  	has_tabler   len)rV   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  rH   )r   rI   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  )rV   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)rV   r   r  r  r  s        r.   test_to_sql_exist_failr  9  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   r9   )r}  r#   r   r  read_sqlr   r   rV   r  
iris_frames      r.   test_read_iris_queryr  E  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  r9   )r  r  r  r  r  r}  r   r#   r   r  r  r   r   r  s      r.   test_read_iris_query_chunksizer  Q  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   )r4   r6   r   selectr7   )autoload_withr   r   r   lengthrn   )r  r  r  r  r  r}  r>   r4   r6   r   r  rx   r   r#   r   r   )
rV   r  r4   r6   r   r  rA   autoload_conr7   r  s
             r.   .test_read_iris_query_expression_with_parameterr  d  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   )rV   r  r/   r  queryr  s         r.   *test_read_iris_query_string_with_parameterr    s    ~KKE  	
 !!2399;	: < TF*RSTT""4(D4HIJZ r-   c                    UR                  U 5      n [        SU 5      n[        U5        [        R                  " SU 5      n[        U5        g )Nr7   )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 ADBCr  r7   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 )NrH   )r   rg   rh   rM   r   rb   )pd_tablerV   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  rH   r  )rV   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   r@   r   r   r   r   integerr   bool_r   r   objectrV   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   rv   r   rH   rI   rJ   皙?r   333333?r  br  Fr   ro   r   z}DROP PROCEDURE IF EXISTS get_testdb;

    CREATE PROCEDURE get_testdb ()

    BEGIN
        SELECT * FROM test_frame;
    ENDzCALL get_testdb();)r}  r>   rw   r   r   r   r~  rx   r   rj   rM   r   r#   r   assert_frame_equalr  )	rV   r  rw   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_countrI   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)
connectionrL   r	   rO   writer	writerowsseekjoinr   r   copy_expert)r   rV   r   r  
dbapi_connrY   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rH   rI   r  r   r  ncol1col2col3r  F)r   ro   r   r  r}  r   r~  r   r$   r   r  )rV   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   ra   r   rv   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)rg   rh   r   ri   on_conflict_do_nothingrM   rowcount	r   rV   r   r  r\   r   rX   r  rb   s	           r.   insert_on_conflictHtest_insertion_method_on_conflict_do_nothing.<locals>.insert_on_conflict2  si    09:	S^$	:5;;VD\##C5#9 	
 d# ;s   A2zx
    CREATE TABLE test_insert_conflict (
        a  integer PRIMARY KEY,
        b  numeric,
        c  text
    );
    rH    @r  abcr   test_insert_conflictr   Fr{  rH   g	@r  r   ro   r   r|  r  Tr  )r}  sqlalchemy.dialects.postgresqlrb   r   r   sqlalchemy.sqlrw   rx   r   rj   rM   r   listr~  r   r$   r   r  r   r  )rV   r  r   rw   r  
create_sqlro   r  	df_insertinsertedr  r  rb   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  )rI   g@r  r  r   test_public_schemar   Fpublic)r   ro   r|  r   r   r   )r  r  r  r  r}  r   r$  r~  r   r$   r   r  )rV   r  	test_datadf_outs       r.   test_to_sql_on_public_schemar0  c  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   ra   r   rv   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   )
rg   rh   r   ri   on_duplicate_key_updater'  r  r   rM   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!  rI   Tr  )r}  sqlalchemy.dialects.mysqlrb   r   r   r#  rw   rx   r   rj   rM   r   r$  r~  r   r$   r   r  r   r  )rV   r  r   rw   r  r%  ro   r   r  r'  r  r  rb   s               @r.   (test_insertion_method_on_conflict_updater6  {  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   rv   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;
    rH   r   group_idr   )r}  r   r   r#  rw   uuiduuid4hexrx   r   rj   rM   r$   r   r   r  )
rV   r  r   rw   r   r   sql_stmtro   r  r  s
             r.   test_read_view_postgresr@    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_viewrH   r   r:  )rM   r  r  r   r   r  )rs  create_tableinsert_intocreate_viewr  r  s         r.   test_read_view_sqliterE    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   rM   )r]  s    r.   test_execute_typeerrorrK    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)NrG  r  rH  )r   r  rJ  r   rM   )r_  s    r.   test_execute_deprecatedrM    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.   flavorrO    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}  rO  r"   run_transaction
read_queryr   rV   r  r/   r  r  rn   r  r  s           r.   test_read_sql_iris_parameterrV    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{   rQ  Tr  r*   r   r   r  r  rR  rU  s           r.   "test_read_sql_iris_named_parameterrX    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}  rO  r"   rS  rT  r   )rV   r  r/   r  r  r  r  s          r.   ,test_read_sql_iris_no_parameter_with_percentrZ  3  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\  F  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   )rV   r  r  
with_batchwithout_batchs        r.   *test_api_read_sql_with_chunksize_no_resultr`  M  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~  )rV   r  r   r  s       r.   test_api_to_sqlrb  Z  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  )rV   r  r   r  r  s        r.   test_api_to_sql_failre  e  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   rV   r  r   r  num_entriesnum_rowss         r.   test_api_to_sql_replacerk  t  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  rK   r   rI   rg  rh  s         r.   test_api_to_sql_appendrn    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  )rV   r  r   r  r  s        r.   test_api_to_sql_type_mappingrr    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   Frq  zSELECT * FROM test_series)r}  r   r  r   r  r   r   aranger~  r#   r   r  to_frame)rV   r  r  ss2s        r.   test_api_to_sql_seriesrz    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  ro   "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  rV   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  FrI   )ro   r   r  r~  r}  )r  r  r  r  r  r}  r   r  r   r  r~  r#   r   r  )rV   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"   rM   r   rT   r$  )rV   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'   r4  r   parse_datesi  rH   rJ   r   rK   %Y-%m-%d %H:%M:%Sr   i        i  rx  r   z%Y%m%dz
2010-10-10z
2010-12-12)r}  r   r#   r   r   r@   r   r   
datetime64tolistr   r   r   r  s       r.   test_api_date_parsingr    s   I""4(D 
		14	8By J)$;bjj..33R]]CCCC			14i[	QBbjj&&++R]];;;;::$1aA&$1aA&#   
 
		 34
B
 bjj&&++R]];;;;::$1aA&$1aA&#   
 
		14l^	TBbmm))..>>>>==!$B1a($1aA&&   
 
		t,1D
B bmm))..>>>>==!$B1a($1aA&&   
 
		%x0
B
 b''--22BMMBBBB##%,,*   r-   error)rs   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]ru   )ro   r  r4  r   r   rM  int32)r   r   r   zdatetime64[us])r}  r  r  r  r  r   rl  rR   r   r   r  )
rV   r  r  rw   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   r@   r   r   r  r   rV   r  r   s      r.   test_api_date_and_indexr  X  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   ro   rI   zSELECT * FROM test_timedeltar>  r   i@B )monthsdaysmicrosecondsnanosecondsi- r   )r}  r   r  r   r  r   r   rw  r  r  r  r  r  r   r  r  r   r  r~  r#   r  
DateOffsetr   r   )	rV   r  r  r  r   r  r  r  r  s	            r.   test_api_timedeltar  g  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~  )rV   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  rK   SELECT * FROM test_index_label)index_labelr   )r  r  r  r  r  r}  r   r  r   r  r   ranger   r   r~  r#   r   )	rV   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  rK   r  )A0A1)B0B1rq  r  r   r  rH   level_1r  r   r   )r|  r  rI   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  )	rV   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  rH   r  line1rI         ?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  )rV   r  r  r   r  s        r.   test_api_multiindex_roundtripr    s    ""4(D
}}0$77__TD9Y  !<= : 
			-.Cj
B II.DI914C:F "t< :9s   B77
Cr@   r   r   c                   U nUR                  U 5      n [        R                  " SU 5      (       a/  [        R                  " U SS9 nUR	                  S5        S S S 5        [        SS/SS//SS	/S
9nUR                  SU S9S:X  d   eUR                  U5      nSU;   a  SnOSn[        R                  " XpUS9n[        R                  " X5        g ! , (       d  f       N~= f)Ntest_dtype_argumentTr  333333?g333333@ffffff@g333333@r   r   r   r  rI   r4  z(SELECT "A", "B" FROM test_dtype_argumentz$SELECT A, B FROM test_dtype_argumentro   r@   )r}  r   r  r   r  r   r~  r   r#   r   r  )	rV   r  r@   r  r  r   r  r  r  s	            r.   test_api_dtype_argumentr  &  s     I""4(D
}}*D11__TD9Y  !67 : 
S#Jc
+c3Z	@B99/T9:a???yyHY:6u=F&+ :9s   C
Cc                x    UR                  U 5      n [        SS/SS//SS/S9n[        R                  " USU SS	9  g )
NrH   rI   rJ   rK   r   r   test_frame_integer_col_namesr  r  )r}  r   r   r~  r  s      r.   test_api_integer_col_namesr  F  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rV   r  r   r%  s       r.   test_api_get_schemar  M  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)ro   r   zCREATE TABLE pypi.r  r  s       r.   test_api_get_schema_with_schemar  [  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  )rV   r  r  float_framer@   r   r%  s          r.   test_api_get_schema_dtypesr  j  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  )ro   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  )rV   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  rI   )   r   abcder   Fr  zselect * from test_chunksizer   )r   r   r   r   rI   r   r  ignore_indexrH   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$   )rV   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:  rs   rt   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  )rV   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  rH   rI   rJ   rK      ér  r   Fr  )r}  r   r  r   r  r   r~  )rV   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   rH   rI   r   r  r  Fr  r4  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  )rV   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{   r9  z16.0)rh  r>  z!pyarrow->pandas throws ValueErrorTr  
test_tabler  r  r  rH   r  r  r   Fr  z)SELECT a, b, a +1 as a, c FROM test_table)rH   r  rI   rH   )rI   r   rJ   rH   )rJ   r  rK   rH   )r  r  r  r   r   )r  r  r   r?   r  r  r  r  r}  r   r  r   r  r   r~  r  r  r   r  )rV   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  )rV   r  r   r  colsr  s         r.   test_read_table_columnsr  0	  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  )rV   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  r7   )r  r  r  r  r}  r   r#   r  r   r  r$   )rV   r  iris_frame1iris_frame2s       r.   test_read_sql_delegater"  W	  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   rv   r   z,CREATE TABLE invalid (x INTEGER, y UNKNOWN);z0CREATE TABLE other_table (x INTEGER, y INTEGER);other_tablezSELECT * FROM other_table)r>   rw   r   r   rx   r   rj   rM   r   r  r   r$   r#   )rY  rV   rw   r   
query_listr  s         r.   test_not_reflect_all_tablesr&  j	  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~  )rV   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   SQLTablerx   r   r   r   )rV   r  r-  r   r  r   s         r.   test_sqlalchemy_type_mappingr5  	  s    ""4(D$ 
	02DE4PQ
B 
	"["7%++--/44i@@@@ 
		s   A
B
B'zinteger, expected)int8SMALLINT)Int8r7  )uint8r7  )UInt8r7  )int16r7  )Int16r7  )uint16r  )UInt16r  )r  r  )Int32r  )uint32BIGINT)UInt32rA  )r   rA  )Int64rA  r   rA  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   rH   r  r   r@   r2  r3  )
r}  r   r   r   r4  r   r   r   r  r   )rV   r  r  r  r   r  r   r  s           r.   test_sqlalchemy_integer_mappingrF  	  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   rH   r  rE  z1Unsigned 64 bit integer datatype is not supportedr  r2  r3  )r}  r   r   r   r  r  r  r4  )rV   r  r  r   r  s        r.   (test_sqlalchemy_integer_overload_mappingrJ  	  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  r7   r  Fr{  r  )r  r  r}  r   rT  r~  r   r  r$   r#   r  )
rV   r  r   r   db_urir   rd  r   r  rm  s
             r.   test_database_uri_stringrM  	  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/dbnamerN  r  zselect * from table)r  r  r}  r  ImportErrorr   r  )rV   r  rL  s      r.   (test_pg8000_sqlalchemy_passthrough_errorrQ  	  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   rv   r4  z%select * from iris where "Name"=:namez#select * from iris where name=:namer   zIris-versicolorr  r<   )r}  r>   rw   r   r  set)rV   r  r  rw   	name_textiris_df	all_namess          r.   test_query_by_text_objrW  	  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>   rY  r  rB   wherer   r<   r   r  rS  )rV   r  rY  r  r7   name_selectrU  rV  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  rJ   rK   r   )r   z%_variationtest_column_percentageFr  )r  r  r  r  r}  r   r~  r   r$   r   r  )rV   r  r  r   r
  s        r.   test_column_with_percentager`  
  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_legacyFrq  rK   z!SELECT * FROM test_frame3_legacy;)	r   rT  r   ry   r   r   r~  r#   r  )r   r   rV   r  s       r.   test_sql_open_closerc  (
  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  rP  r   r  )rV   r  s     r.   test_con_string_import_errorre  6
  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  )ry   rz   rV   )selfargskwargss      r.   __init__qtest_con_unknown_dbapi2_class_does_not_error_without_sql_alchemy_installed.<locals>.MockSqliteConnection.__init__A
  s    **D;F;DIr-   c                .    [        U R                  U5      $ r  )getattrrV   )rj  r   s     r.   __getattr__ttest_con_unknown_dbapi2_class_does_not_error_without_sql_alchemy_installed.<locals>.MockSqliteConnection.__getattr__D
  s    499d++r-   c                8    U R                   R                  5         g r  )rV   rT   )rj  s    r.   rT   ntest_con_unknown_dbapi2_class_does_not_error_without_sql_alchemy_installed.<locals>.MockSqliteConnection.closeG
  s    IIOOr-   )rV   N)returnNone)__name__
__module____qualname____firstlineno__rm  rq  rT   __static_attributes__r,   r-   r.   MockSqliteConnectionrh  @
  s    	<	,	r-   r|  ro  zSELECT 1)rp  r   r   r  r  r   r  )r|  rV   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  r7   )r   r#   r  r   r  r  r  DatabaseError)ru  rV   r   r!  r  s        r.   test_sqlite_read_sql_delegater  O
  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  Z
  s     V4Jz!!!r-   c                ^   U n[        S[        SS/SS905      n[        R                  " U5      n[        R                  " SX2S9nUR                  5       nUR                  S5       HD  nUR                  5       S	   R                  S
5      S:X  d  M+  UR                  5       S   S:X  a  MD   e   g )Nr   r.  r/  Tr0  r2  r3  
r   r  rH   r-  )r   r   r   r    SQLiteTable
sql_schemasplitstrip)rs  rV   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  rK   )r  skipr}  r>   r   r   r   r   r~  r  r  rV   r  r   r  r  insps         r.   test_create_tabler  r
  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  rK   )r  r  r}  r>   r   r   r   r   rS  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|  rK   r~  r{   r  r  r   Tr  )r  r  r}  r"   rS  r~  rT  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"   rS  rM   r   rT   r$  )rV   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 )Nr7   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 )Nr7   r8   )ro   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$   )rV   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   r@   r   r   r   r   r  r   r  r   r   r  r  s       r.   'test_sqlalchemy_default_type_conversionr  
  s6   IL DE	I	Y!6KK%JK	
 ""4(D			GT	*Bbkk'',,bkk::::biioo**BJJ7777bjj&&++RXX6666 b''--22BKK@@@@b((..33V<<<<r-   c                    UR                  U 5      n [        SS/0S9nUR                  SU SS9S:X  d   e[        R                  " SU 5      n[
        R                  " X#5        g )Ni64l            )r   test_bigintFr  rH   r  rV   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   r@   r   r   r  r  s       r.   test_default_date_loadr  
  s    IL DE	Y	KK%IJ	
 ""4(D			GT	*Bbjj&&++R]];;;;r-   r  r   c                    UR                  U 5      n [        U 5      n[        SXS9nUR                  n[        R
                  " XS5        g )Nselect * from datetzr  )r}  r   r#   r   r   r   )rV   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  rH   r  Tr  )r}  r   r   r$  r#   r   r   r   )rV   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  rw  )rV   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:00rJ   
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#   rx   locr   r   )rV   r  r  r  r  s        r.   %test_datetime_with_timezone_roundtripr  0  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'  rH   r   rq  test_datetime_obbFr  r   )
r}  r   r   r~  r   r$   r  NaTr   r  )rV   r  r   r  r  s        r.   test_out_of_bounds_datetimer  O  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numsrq  	foo_table	info_date)r   ro   r  r  F)check_names)
r}  r   
_with_freqr   r  r~  r   r$   r   r  )rV   r  datesr  r  s        r.   "test_naive_datetimeindex_roundtripr  Z  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   rx  unit)r}  r   r$   r  r   r  r   r   r@   r   r   )rV   r  r  r   expected_types        r.   test_date_parsingr  g  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  rJ   r  r  r  test_datetimer  r   rH   )axisSELECT * FROM test_datetimer&   r  r   )r}  r   r   r   rv  r~  r   r$   rk   r   r  r#   rx   r  r   r   rV   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  rJ   r  r  r  rH   r   r  Fr  r  r&   r  r   r  rt   )r}  r   r   r   rv  r  r  r~  r   r$   r   r  r#   rx   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  rH   rI   r  r   	test_dateFr  )r}  r   r   r~  r$   r   r   r   )rV   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   rH      r  r   	test_timeFr  rI   
test_time2rq  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)rV   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        )s1ry  test_read_writeFr  rH   T)check_dtypecheck_exact)r}  r   r   r  float32r   r~  r   r$   r   r  )rV   r  r  ry  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  rJ   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  rJ   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  rJ   rI   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_indexrI   >   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"   rS  r~  r   r#   r   r   r  r>   r   get_indexes)rV   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   rv   )r}  r>   rw   r"   rS  rM   )rV   r  r  rX   rw   r  transs          r.   test_transactionsr  L  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   rv   c                      \ rS rSrSrg)1test_transaction_rollback.<locals>.DummyExceptionik  r,   N)rw  rx  ry  rz  r{  r,   r-   r.   DummyExceptionr  k  s    r-   r  z/INSERT INTO test_trans (A,B) VALUES (1, 'blah')r  zSELECT * FROM test_transrH   )r}  r"   rS  rx   r    rM   r>   rw   	Exceptionr   rT  r  )rV   r  r  r  r  rX   rw   r  ins_sqlr
  r  s              r.   test_transaction_rollbackr   \  s   I""4(D	4	 I&&(E<D"jN&K&Kd#+Dzd# )	Y 	 Di--'7mG	**,g&$W--- )(( -,  		 &&(&&'ABC )((3x1}} &&(EMM'"''(BCD )(( 4yA~~G 
!	 	 s   G	AC&?<G	<DC7&
C4	0G	7
D	DG	DDG	DG	$D?6	G	?
E		(G	1#F	G	
F+	'G		
Gc                b   U S:X  a,  UR                  [        R                  R                  SS95        UR	                  U 5      n SSKJn  SSKJn  Sn[        R                  " X%U S9nUR                  S S nU" U5      n[        X5      (       aD  U R                  5        nUR                  5          UR                  U5        S S S 5        S S S 5        OU R                  U5        [        R                   " XP5      n	["        R$                  " XS	S
9  g ! , (       d  f       NT= f! , (       d  f       NK= f)NrU  z(test does not support sqlite_str fixturer  r   rv   r   test_get_schema_create_tabler}  Fr  )r  r  r  r  r}  r>   rw   r   r   r   r  r   rx   r   rj   rM   r$   r   r  )
rV   r  r   rw   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~   r5   r4   r   r   g?Tg?Nr   
dtype_testr  rI   dtype_test2r   ro   r@   re   z&The type of B is not a SQLAlchemy typer  r  dtype_test3
   single_dtype_test)r  r  r}  r>   r~   r5   sqlalchemy.schemar4   r   r~  reflecttablesr   r   rx   r  r  r   r  )rV   r  r~   r5   r4   r  r   r   metasqltyper  sqltypeasqltypebs                r.   
test_dtyper7    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   r3   r   r'  T  r   rH   r  r  r  BoolDateIntr3   notna_dtype_testr  rI   re   r'   r;  r<  r=  r3   )r  r  r}  r>   r   r   r3   r   r0  r4   r   r   r   r~  r   r$   r1  r2  r   rx   r   )rV   r  r  r   r   r3   r   r4   r  r   r  r  r3  my_typecol_dicts                  r.   test_notna_dtyperA    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   )
BigIntegerr3   r   r'  gYB?r  r  float64r   r  r   )f32f64
f64_as_f32i32r  test_dtypesFr  rG     )	precision)r   ro   r   r|  r@   rH   rF     re   rE  rH  r  )r  r  r}  r>   rC  r3   r   r0  r4   r   r   r~  r   r$   r   roundr   r1  r2  r   r   r   rx   )rV   r  rC  r3   r   r4   Vr   r
  r3  r@  s              r.   test_double_precisionrO    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   ro   r|  )r~  )r  r   s     r.   test_append3test_connectable_issue_example.<locals>.test_append3  s    jHMr-   c                &   > T" U 5      nT" X5        g r  r,   )rV   foo_datarV  rR  s     r.   test_connectable8test_connectable_issue_example.<locals>.test_connectable6  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  )rx   r   rj   )connectablerV   r   rZ  s     r.   main,test_connectable_issue_example.<locals>.main<  sW    k6**$$&$ZZ\$T* " '& [) "\ '&s!   A(	AA(
A%	!A((
A6rU  r  r  rJ   )r}  r   r   r   r~  )rV   r  r^  r   rV  rZ  rR  s      @@@@r.   test_connectable_issue_exampler`  '  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.3rc  zGH 36465r  zinf cannot be used with MySQLr  foobarFr  rH   )r   r}  r  r  r   r?   r   r  r  r  r  r  r~  r   r$   r   assert_equal)	rV   r  ra  r   r  r  r  r  r
  s	            r.   test_to_sql_with_negative_npinfrg  K  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   )r1   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)	rw  rx  ry  rz  __tablename____table_args__idrl  r{  )r1   r   ri  s   r.   	Temporaryrn    s0    #${m4G.gbkE2r-   rx  )rl  )r   ro   )r  r  r}  r>   r1   r   ri  r  sqlalchemy.ormrj  rk  r   rj   r  	__table__rl   addflushr   r#   rl  r   r  )rV   r  r  rj  rk  r.  r  Baserx  sessionr   r1   r   ri  s              @@@r.   test_temporary_tabler  k  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~  )rV   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  rK   N)r}  r"   rS  r~  r  r  r   rh  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   rK   	r}  r  option_contextr"   rS  r~  r  r  r   rh  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   rK   r  rh  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  rx   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
U" X$U5      nS S S 5        [
        R                  " W
W5        SU;   a,  UR                  [        R                  R                  S	S
95        [        R                  " SU5         [	        [        U5      " SU 3U USS9nU" X$U5      nU H  n
[
        R                  " X5        M     S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nrz  Fr  r   ro   r   r|  mode.string_storageSelect * from dtype_backendr{   z(adbc does not support chunksize argumentr  rJ   )ro   r  r  )r}  r~  r  r  rp  r   r  r  r  r  r  rV   r  string_storager  r  dtype_backend_datadtype_backend_expectedr  r   r   r  r  iterators                r.   test_read_sql_dtype_backendr    s/    I""4(DE	BII5%9IE			0.	AT"UG$d
 *.S	 
B &(+KK%OP	
 
		0.	A2t$UG$'	
 *.SF!!&3  
B	A 
B	A 
B	As    "D
AD'
D$'
D5r$   c                ~   SU ;   a2  SU ;  a,  UR                  [        R                  R                  SS95        U nUR	                  U 5      n SnUn	U	R                  XSSS9  [        R                  " S	U5         [        [        U5      " XUS
9n
U" X$U5      nS S S 5        [        R                  " W
W5        SU;   a  g [        R                  " S	U5         [        [        U5      " UU USS9nU" X$U5      nU H  n
[        R                  " X5        M     S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr&   r{   zhSQLite actually returns proper boolean values via read_sql_table, but before pytest refactor was skippedr  rz  Fr  r  r  r  rJ   )r  r  )r  r  r  r  r}  r~  r  r  rp  r   r  r  s                r.   !test_read_sql_dtype_backend_tabler    s5    4F$.KKM  	
 I""4(DE	BII5%9IE			0.	AT"5mL).S 
B &(+			0.	A2t$'	
 *.SF!!&3  
B	A 
B	A 
B	As   8DA D.
D+.
D<)r  r$   r#   c                    UR                  U 5      n SnUnUR                  X@SSS9  Sn[        R                  " [        US9   [        [        U5      " X@SS9  S S S 5        g ! , (       d  f       g = f)	Nrz  Fr  r  zPdtype_backend numpy is invalid, only 'numpy_nullable' and 'pyarrow' are allowed.r  numpyr  )r}  r~  r  r  r  rp  r  )rV   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      $ )NrH   rJ   rC  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  N  s]    BFFAg6	1bffc*)<y9$$ !		
 r-   c                     SS jn U $ )Nc                   US:X  a;  [         R                  " S5      n[        R                  " UR	                  5       5      nO[        R
                  " U 5      n[        [        S[        R                  S/SS9[        / SQSS9[        S[        R                  S/S	S9[        / S
QS	S9[        SS[        R                  /SS9[        / SQSS9[        / SQUS9[        / SQUS9S.5      nUS:X  aX  [         R                  " S5      nSSKJn  [        UR                   Vs0 s H  nXv" UR                  XW   SS95      _M     sn5      nSU;   d  SU;   a0  US:X  a  UR                  SSS.5      nU$ UR                  SSS.5      nU$ s  snf )Nr9  rH   rJ   rC  r  r  r  r  r  r  TFbooleanr  r  r  r  r   )ArrowExtensionArray)from_pandasr'   r&   numpy_nullable)r  r  zint64[pyarrow])r  r  r  
ArrowDtyper  StringDtyper   r   r   r  NApandas.arraysr  r   r  r   )r  r  r  r  string_dtyper   r  r  s           r.   r  $dtype_backend_expected.<locals>.func`  st   I%$$Y/B==5L>>.9LQN':IW5S"&&#.i@O9=T5"%%0	B/yAO<@,LA	
 I%$$Y/B9  "zz) ,RXXbg4X-PQQ)B i8y#8 00YYW7;< 	 YY%5<LMN	s   "Fru  r   r,   )r  s    r.   r  r  ^  s    &P Kr-   c                r   SU ;   a6  UR                   R                  [        R                  R	                  SS95        UR                  U 5      n SSS.n[        SS/S	9R                  U5      nUR                  5       nUR                  S
U SSS9  [        SU USS9 H  n[        R                  " XT5        M     g )Nr{   r  r  r   r  r  r  r  r   rz  Fr  r  zSELECT * FROM testrH   )r@   r  )r  r  r  r  r  r}  r   r   r  r~  r#   r   r  )rV   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  )r@   r  r  )r   r   r   r  r   rC  )
r}  r   r~  rp  r  r   rD  r   r   r  )rV   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.rH   rI   rJ   r  exampler  r  r  )r   r~  r   r  rJ  )rW  rV   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  rH   rI   r   r  test_bigintwarningFr  )r   r~  r   r  r   r$   rW  rV   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)NrH   rI   rJ   rK   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   r1   r   r5   )rk  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  Trr  2   r,   N)rw  rx  ry  rz  ru  rw  string_columnr{  r  s   r.   Testr    s"    $G.vbz*r-   r  re   rH   helloworld)rw  r  r  Fr  r  rI   rw  r  )r>   r1   r   r5   ry  rk  r  rj   rA   
create_allr   r~  rU   r  rw  r  r$  r   )rW  rV   rk  r  	BaseModelr  rj  r~  r   
test_queryr1   r   r5   s             @@@r.   test_row_object_is_named_tupler    s   D
 

 !"I+ +y +
 
%%d+ 
%G	gq!f7IJKII<T)IT	
 	]]477D,>,>?
z" 
 

o6666 
 
s   D0A,D
D
D!c           	     f   U nSn[        SSS/05      nUR                  X!SSS9  [        R                  " SS	5         [	        X!5      nS S S 5        [        R
                  " [        R                  S
9n[        SSS/0U[        S/US9S9n[        R                  " WU5        g ! , (       d  f       N`= f)Nrz  r  xyFr  )ro   r   r|  zfuture.infer_stringT)na_valuer  )r@   r   )r   r~  r  r  r$   r  r   r  r   r   r  )rW  rV   r   r   r  r@   r  s          r.   test_read_sql_string_inferencer    s    DE	C#s$	%BIIeUiI@			0$	7, 
8 NNBFF+E	sCjse50IH &(+ 
8	7s   B""
B0c           	         U n[        S[        SSSS5      /0SS9nUR                  SUSS	S
9  [        R                  " SU5      R
                  S   nUS:X  d   eg Nti  r     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  rV   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   ry   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  rV   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)NrH   rI   r  r   r  r
  r  z$DROP SCHEMA IF EXISTS other CASCADE;zCREATE SCHEMA other;test_schema_publicFr  test_schema_public_explicitr,  )r   ro   r   r   test_schema_otherotherr-  z!Table test_schema_other not foundr  )r   ro   r   r   r  )r   ro   r   r   r|  r   Tr  )r   r   rj   r   r~  r   r$   r   r  r  r  r  r   )
r0  rV   r   ro   r  r  r   res4r  r
  s
             r.   test_psycopg2_schema_supportr  0  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   rv   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;rH   2021r   r   rI   rw  
created_dtr   Tr  person)r#  rw   r   rj   rM   r  r  r   r   r   r  r   r   r  )	r0  rV   rw   rB  ro   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_framerK   )r   r   r   rS  r~  r  r  )rW  rV   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  rH   rI   r  r   r  Fr  zSELECT * FROM test_date)r   r   r~  r#   r   r  r   r   )rs  rV   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   rH   r  r  rI   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  rV   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)rM   r  )
rV   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  rI   r+  STRINGr,  r  z!B \(<class 'bool'>\) not a stringr  r  r/  )r   r~  r  r  r  r  bool)rs  rV   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 )NTr9  r   rH   r  r  r  r:  r>  r  rI   r;  r  r<  r-  r=  r3   REAL)r   r   r   r~  r  )rs  rV   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)NrH   rI   rJ   rK   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  rV   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_bytesrR   rl  r   rD  r  rx   r   r   rJ  )r   rk  _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"   rM   r   r$  )r  ro   r  r
  s       r.   tqueryr-  2  sL    			s	#z  '002 
$;4-DI- 
$	#s    A
Ac           
        [        [        R                  R                  S5      R	                  S5      [        [        S5      5      [        SSSS9S9n[        R                  " US	U S
S9S:X  d   e[        R                  " SU 5      nUR                  Ul        Un[        R                  " X!5        S/[        U5      -  US'   UR                  5       n[        [        R                   " [        U5      5      [        R"                  S9S-   nUR                  5       US'   [        R                  " USU S
S9S:X  d   e[        R                  " SU SS9nUR                  5       nXSl        SUR                  l        [        R                  " X25        g )NrI   r.  rK   ABCD
2000-01-01r.  r   r  r  r  Fr  zselect * from test_tabler  txtr  Idxtest_table2zselect * from test_table2r  )r   r   r  r  r  r   r$  r   r   r~  r  r   r   r  r  r  rv  r   r   )rs  r   r  r  frame2new_idxs         r.   test_xsqlite_basicr7  9  s>   
		a 009d6l#r<E
 ::e,N%PTVVVV\\4nEF ;;FLH&(53u:%E%LZZ\FBIIc&k*"((;b@GLLNF5M::f=nERVXXXX\\5~QVWFzz|HNHNN(+r-   c           
     H   [        [        R                  R                  S5      R	                  S5      [        [        S5      5      [        SSSS9S9n[        R                  UR                  S	'   [        R                  " US
5      nU R                  5       nUR                  U5        SnUR                  5        H  u  pV[        U/UQ76 n[!        XpS9  M     U R#                  5         [        R$                  " SU S9nUR&                  Ul        [(        R*                  " XSS9  g )NrI   r/  r0  r1  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  rL   rM   iterrowsr+  r-  rU   r  r   r   r  )	rs  r   r%  rY   insr  r\   fmt_sqlr  s	            r.   test_xsqlite_write_row_by_rowr=  T  s    
		a 009d6l#r<E
 vvEJJtv.J



!CKK

4C.."s)S)w+ # \\.NCF;;FL&d3r-   c           
     x   [        [        R                  R                  S5      R	                  S5      [        [        S5      5      [        SSSS9S9n[        R                  " US	5      nU R                  5       nUR                  U5        S
nUR                  S   n[        R                  " U 5       nUR                  U[        U5      5        S S S 5        U R                  5         [        R                   " SU 5      nUR"                  S S Ul        [$        R&                  " XqS S 5        g ! , (       d  f       Nc= f)NrI   r/  r0  r1  r.  r   r  r  rz  z$INSERT INTO test VALUES (?, ?, ?, ?)r   r  rH   )r   r   r  r  r  r   r$  r   r   r  rL   rM   r   r"   rJ  rU   r  r   r   r  )rs  r   r%  rY   r;  r\   r  r  s           r.   test_xsqlite_executer?  k  s    
		a 009d6l#r<E
 v.J



!CKK

0C
**Q-C			~	.*3c
+ 
/\\.?F;;r?FL&), 
/	.s   2D++
D9c           
        [        [        R                  R                  S5      R	                  S5      [        [        S5      5      [        SSSS9S9n[        R                  " US	5      nUR                  5       nU H;  nUR                  S
5      n[        U5      S:X  d  M%  US   S:X  d  M0  US   S:X  a  M;   e   [        R                  " US	SS/S9nUR                  5       nSU;   d   eU R                  5       nUR                  U5        g )NrI   r/  r0  r1  r.  r   r  r  rz   r   r   rH   DATETIME)r   zPRIMARY KEY ("A", "B"))r   r   r  r  r  r   r$  r   r   r  
splitlinesr  r  rL   rM   )rs  r   r%  lineslinetokensrY   s          r.   test_xsqlite_schemarG    s    
		a 009d6l#r<E
 v.J!!#ECv;!q	S 0!9
*** 
 vS#J?J!!#E#z111



!CKK
r-   c                   SnU R                  5       nUR                  U5        [        R                  " U 5       nUR                  S5        UR                  S5        [        R
                  " [        R                  SS9   UR                  S5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nc
    CREATE TABLE test
    (
    a TEXT,
    b TEXT,
    c REAL,
    PRIMARY KEY (a, b)
    );
    ,INSERT INTO test VALUES('foo', 'bar', 1.234)z,INSERT INTO test VALUES('foo', 'baz', 2.567)zExecution failed on sqlr  z(INSERT INTO test VALUES('foo', 'bar', 7))rL   rM   r   r"   r  r  r  )rs  r%  rY   r  s       r.   test_xsqlite_execute_failrK    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)NrI  ro  rJ  z$Cannot operate on a closed database.r  r  r}  )rp  r   ry   r   rL   rM   r   r"   r  r  rD  r-  )r%  rV   rY   r  r  s        r.   &test_xsqlite_execute_closed_connectionrM    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ro   r   r   )r   r   onesr   r~  )rs  r   s     r.   $test_xsqlite_keyword_as_column_namesrS    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 )NrH   rI   c0r   mono_dfFrQ  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_dfrJ   )r   r   r~  sumrM   r  r   r  )rs  rV  con_xthe_sumr  s        r.   !test_xsqlite_onecolumn_of_integerr_    s|     A/G::g	OSTTTTEO6M(NOOGa<<\\159F&*r-   c                f   [        SS/SS/S.5      n[        / SQ/ SQS.5      nSnS	U 3nS
n[        R                  " [        US9   [        R
                  " UU USS9  S S S 5        [        X05        [        R
                  " XUSS9  Sn[        R                  " [        US9   [        R
                  " UU USS9  S S S 5        [        R
                  " UU USSS9  [        X@S9SS/:X  d   e[        R
                  " UU USSS9S:X  d   e[        X@S9/ SQ:X  d   e[        X05        [        R
                  " UU USSS9S:X  d   e[        X@S9SS/:X  d   e[        R
                  " UU USSS9S:X  d   e[        X@S9/ SQ:X  d   e[        X05        g ! , (       d  f       GN8= f! , (       d  f       N= f)NrH   rI   r   r   r  r^  )r   r   Etable_if_existszSELECT * FROM z*'notvalidvalue' is not valid for if_existsr  notvalidvalue)r   ro   r   r|  r  z&Table 'table_if_exists' already existsr  F)r   ro   r   r|  r   r}  r  r  rJ   )rJ   r   rK   r   r   ra  r   )r  r  rd  re  rf  )r   r  r  r  r   r~  r  r-  )rs  df_if_exists_1df_if_exists_2r   
sql_selectr  s         r.   test_xsqlite_if_existsrj    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)rW   r   )r   r   )r   
list[dict])r   rk  r   r   )r   r   )r   r   )r   r   rV   Lsqlite3.Connection | sqlalchemy.engine.Engine | sqlalchemy.engine.Connection)r   r   rV   rl  r  r  (,  
__future__r   rp  r   rO   r   r   r   r   r   r	   pathlibr   ry   typingr   r<  r  r   r  pandas._configr   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.util.versionr   	pandas.ior   pandas.io.sqlr   r   r    r!   r"   r#   r$   r>   r  filterwarnings
single_cpu
pytestmarkfixturer/   rB   r]   r_   rp   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r!  r%  r(  r*  r0  r2  r5  r7  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(  r0  r6  r@  rE  rK  rM  rO  rV  rX  rZ  r\  r`  rb  re  rk  rn  rr  rz  r  r  r  r  r  r  r  r  r  r  r  r  rl  rR   r  r  r  r  r  r  r  r  r  r  r  r  r  r"  r&  r+  r5  r@   r   rF  rJ  rM  skip_if_installedrQ  rW  r\  r`  rc  re  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"  r7  rA  rO  r`  infrg  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-  r7  r=  r?  rG  rK  rM  rS  r_  rj  r,   r-   r.   <module>r     s   "   
          -  ? ) )     '     KKG KK	
  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(?  ),<+==@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'4T 1*.>!?@+4 A 2+4\ 1!QR> S 2>   ) )X 10 20* 13>>;K*LM*.>!?@, A N 2,2>7G$7N,$2  = GD GDT  '  'F:/ eT]3) 4)$BN,@&&@'..,64.-*(K*/,U
+ O+r-   