+
    xȇi6                   3   ^ RI Ht ^ RIt^ RIt^ RIHtHtHtHt ^ RIH	t	 ^ RI
Ht ^ RIHt ^ RIt^ RIHt ^ RIt^ RIt^ RIt^ RIHt ^ R	IHt ^ R
IHt ^ RIHt ^ RIHu Ht  ^ RI!t"^ RI!H#t#H$t$H%t%H&t&H't'H(t(H)t)H*t*H+t+H,t, ^ RI-H.t/ ^ RI0H1t1 ^ RI2H3t3 ^ RI4H5t5H6t6H7t7H8t8H9t9H:t:H;t; ]'       d   ^ RI<t<]Pz                  P}                  R4      ]Pz                  P~                  .t@]P                  R 4       tBR tCR R ltDR R ltER R ltFR tGR R ltHR R ltIR R ltJR  R! ltKR" tLR# R$ ltMR% R& ltN]P                  R' 4       tO]P                  R( 4       tP]P                  R) 4       tQ]P                  R* 4       tR]P                  R+ 4       tSR, tTR- tUR. R/ ltVR0 R1 ltW]P                  R2 4       tX]P                  R3 4       tY]P                  R4 4       tZ]P                  R5 4       t[]P                  R6 4       t\]P                  R7 4       t]]P                  R8 4       t^]P                  R9 4       t_]P                  R: 4       t`]P                  R; 4       ta]P                  R< 4       tb]P                  R= 4       tc]P                  R> 4       td]P                  R? 4       te]P                  R@ 4       tf]P                  RA 4       tg]P                  RB 4       th]P                  RC 4       ti]P                  RD 4       tj]P                  RE 4       tk]P                  RF 4       tl]P                  RG 4       tm]P                  RH 4       tn]P                  RI 4       to]P                  RJ 4       tp]P                  RK 4       tq]P                  RL 4       tr]P                  RM 4       ts]P                  RN 4       tt]P                  RO 4       tu]P                  ! RP]Pz                  P                  RQ7      ]P                  ! RR]Pz                  P                  RQ7      .tx]P                  ! RS]Pz                  P                  RQ7      ]P                  ! RT]Pz                  P                  RQ7      .ty]P                  ! RU]Pz                  P                  RQ7      ]P                  ! RV]Pz                  P                  RQ7      .tz]P                  ! RW]Pz                  P                  RQ7      ]P                  ! RX]Pz                  P                  RQ7      .t{]P                  ! RY]Pz                  P                  RQ7      ]P                  ! RZ]Pz                  P                  RQ7      .t|]P                  ! R[]Pz                  P                  RQ7      ]P                  ! R\]Pz                  P                  RQ7      .t}. ER'Ot~. ER(Ot. ER)Ot]x]{,           ]~,           t]y]|,           ],           t]z]},           ],           tR]]P                  ! R^]Pz                  P                  RQ7      .t]P                  ! R_]Pz                  P                  RQ7      R`.t]P                  ! Ra]Pz                  P                  RQ7      Rb.t. ]ORcN]Ot. ]ORdN]Ot. ]OReN]Ot]Pz                  EP                  Rf]4      Rg 4       t]Pz                  EP                  Rf]4      Rh 4       t]Pz                  EP                  Rf]4      Ri 4       t]Pz                  EP                  Rf]4      Rj 4       t]Pz                  EP                  Rf]4      ]Pz                  EP                  RkRRl.4      Rm 4       4       t]Pz                  EP                  Rf]4      ]Pz                  EP                  Rn. ER*O4      Ro 4       4       t]Pz                  EP                  Rf]4      Rp 4       t]Pz                  EP                  Rf]4      Rq 4       t]Pz                  EP                  Rf]4      Rr 4       t]Pz                  EP                  Rf]4      Rs 4       t]Pz                  EP                  Rf]4      Rt 4       t]Pz                  EP                  Rf]4      Ru 4       t]Pz                  EP                  Rf]4      Rv 4       t]Pz                  EP                  Rf]4      Rw 4       t]Pz                  EP                  Rf]4      Rx 4       t]Pz                  EP                  Rf]x4      Ry 4       t]Pz                  EP                  Rf]{4      ]Pz                  EP                  Rz^R{.4      R| 4       4       t]Pz                  EP                  Rf]{4      R} 4       t]Pz                  EP                  Rf]4      R~ 4       t]Pz                  EP                  Rf]x4      R 4       t]Pz                  EP                  Rf]{4      R 4       tR tR t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      ]Pz                  EP                  RRR.4      ]Pz                  EP                  R]3EPb                  RER+3]3EPb                  RR3]3Pt                  RER+3]3Pv                  RR3.4      R 4       4       4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      ]Pz                  EP                  R. ER,O4      R 4       4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      ]Pz                  EP                  RR]]R]R]/.4      R 4       4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      R 4       tR t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      ]Pz                  EP                  RER-ER.ER/ER0ER1ER2ER3ER4ER5ER6ER7ER8ER9ER:]]EP                  ! ]4      EP                  R8X  d   RMR3.4      R 4       4       t]Pz                  EP                  Rf]4      ]Pz                  EP                  RRR.4      R 4       4       tR t] EP                  ! R4      R 4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      R 4       tR t] EP                  ! R4      R 4       t] EP                  ! R4      R 4       tR tR tR t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  R]4      R 4       t]Pz                  EP                  R]4      R 4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]{4      ]Pz                  EP                  RRR..4      R 4       4       t]Pz                  EP                  Rf]{4      R 4       t]Pz                  EP                  Rf]{4      R 4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      R 4       t]Pz                  EP                  Rf]4      ]Pz                  EP                  RR]EP                  ./R]EP                  ) ./R]EP                  ) .RR./.4      R 4       4       Et ]Pz                  EP                  Rf]4      R 4       Et]Pz                  EP                  Rf]4      R 4       Et]Pz                  EP                  Rf]4      R 4       Et]Pz                  EP                  Rf]4      R 4       Et]Pz                  EP                  Rf]4      R 4       EtR Et]Pz                  EP                  Rf]4      ]Pz                  EP                  RRR.4      R 4       4       Et]Pz                  EP                  Rf]4      ]Pz                  EP                  RRR.4      ER  4       4       Et]Pz                  EP                  Rf]4      ]Pz                  EP                  R. ER;O4      ER 4       4       Et	]P                  ER ER l4       Et
]P                  ER 4       Et]Pz                  EP                  Rf]4      ER 4       Et]Pz                  EP                  Rf]4      ]Pz                  EP                  ER]EP                  ER.4      ]Pz                  EP                  RRR.4      ER 4       4       4       EtER	 EtER
 EtER EtER EtER Et]P                  ER 4       EtER Et]Pz                  P                  ER 4       Et]Pz                  P                  ER 4       EtER EtER Et]Pz                  EP                  ERERER.4      ER 4       EtER EtER EtER EtER EtER EtER<ER lEt ER Et!ER Et"ER  Et#ER! Et$ER" Et%ER# Et&ER$ Et'ER% Et(ER& Et)R# (=      )annotationsN)datedatetimetime	timedelta)Decimal)StringIOPath)TYPE_CHECKING)using_string_dtype)lib)pa_version_under14p1)import_optional_dependency)
	DataFrameIndex
MultiIndexSeries	Timestampconcat
date_rangeisnato_datetimeto_timedelta)Version)sql)SQLAlchemyEngineSQLDatabaseSQLiteDatabase
get_enginepandasSQL_builderread_sql_queryread_sql_tablez=ignore:Passing a BlockManager to DataFrame:DeprecationWarningc                 6    R RRRRRR/RRRRR	RR
/RRRRRRR//# )read_parameterssqlitez1SELECT * FROM iris WHERE Name=? AND SepalLength=?mysqlz7SELECT * FROM iris WHERE `Name`=%s AND `SepalLength`=%s
postgresqlz7SELECT * FROM iris WHERE "Name"=%s AND "SepalLength"=%sread_named_parametersz]
                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
                read_no_parameters_with_percentz&SELECT * FROM iris WHERE Name LIKE '%'z(SELECT * FROM iris WHERE `Name` LIKE '%'z(SELECT * FROM iris WHERE "Name" LIKE '%' r+       h/Users/max/.openclaw/workspace/postharvest/venv/lib/python3.14/site-packages/pandas/tests/io/test_sql.pysql_stringsr.   C   sj     	INS

 	      "
 	*>?F,
' r,   c                     ^ RI p ^ RI HpHpHpHpHpHp \        V P                  4      \        R4      8  d   TMTpV! 4       pV! RVV! RV4      V! RV4      V! RV4      V! RV4      V! R	V! ^4      4      4      p	V	# )
r   N)ColumnDoubleFloatMetaDataStringTablez2.0.0irisSepalLength
SepalWidthPetalLength
PetalWidthName)	
sqlalchemyr0   r1   r2   r3   r4   r5   r   __version__)
r<   r0   r1   r2   r3   r4   r5   dtypemetadatar6   s
             r-   iris_table_metadatar@   `   s      j4459IIFuEzH}e$|U#}e$|U#vvc{#D Kr,   c                   V ^8  d   QhRR/#    	iris_filer   r+   )formats   "r-   __annotate__rF   y   s      $ r,   c                *   R pV P                  4       pVP                  V4       VP                  RRR7      ;_uu_ 4       p\        P                  ! V4      p\        V4       Rp. pV Uu. uFQ  p\        V^ ,          4      \        V^,          4      \        V^,          4      \        V^,          4      V^,          3NKS  	  ppVP                  W&4       RRR4       VP                  4        V P                  4        R# u upi   + '       g   i     L7; i)zCREATE TABLE iris (
            "SepalLength" REAL,
            "SepalWidth" REAL,
            "PetalLength" REAL,
            "PetalWidth" REAL,
            "Name" TEXT
        )Nutf-8newlineencodingz&INSERT INTO iris VALUES(?, ?, ?, ?, ?))
cursorexecuteopencsvreadernextfloatexecutemanyclosecommit)connrD   stmtcurcsvfilerP   recordsrows   &&      r-   create_and_load_iris_sqlite3r\   y   s    D ++-CKK	w	7	77G$V7 	
  c!fc!fc!fc!fA  	 	
 	&# 
8$ IIKKKM	
 
8	7s   *D)AC= D=DD	c                   V ^8  d   QhRR/# rB   r+   )rE   s   "r-   rF   rF      s      T r,   c                N   R pV P                  4       ;_uu_ 4       pVP                  V4       VP                  RRR7      ;_uu_ 4       p\        P                  ! V4      p\        V4       RpV Uu. uFQ  p\        V^ ,          4      \        V^,          4      \        V^,          4      \        V^,          4      V^,          3NKS  	  ppVP                  W'4       RRR4       RRR4       V P                  4        R# u upi   + '       g   i     L/; i  + '       g   i     L:; i)zCREATE TABLE iris (
            "SepalLength" DOUBLE PRECISION,
            "SepalWidth" DOUBLE PRECISION,
            "PetalLength" DOUBLE PRECISION,
            "PetalWidth" DOUBLE PRECISION,
            "Name" TEXT
        )NrH   rI   z+INSERT INTO iris VALUES($1, $2, $3, $4, $5))	rL   rM   rN   rO   rP   rQ   rR   rS   rU   )rV   rD   rW   rX   rY   rP   r[   rZ   s   &&      r-   create_and_load_iris_postgresqlr_      s    D 
#D^^D7^;;wZZ(FL@D "	 "C #a&M#a&M#a&M#a&MF "  	 OOD*! < 
( 	KKM	 <; 
s6   -D(D	0AC<D	D<D	DDD$	c                   V ^8  d   QhRR/# rB   r+   )rE   s   "r-   rF   rF      s      $ r,   c                *   ^ RI Hp \        4       pVP                  RRR7      ;_uu_ 4       p\        P
                  ! V4      p\        V4      pV Uu. uF  p\        \        Wg4      4      NK  	  ppV! V4      P                  V4      p	V P                  4       ;_uu_ 4       p
VP                  V
RR7       VP                  V
R7       V
P                  V	4       RRR4       RRR4       R# u upi   + '       g   i     L; i  + '       g   i     R# ; i)r   insertNrH   rI   T
checkfirstbind)r<   rc   r@   rN   rO   rP   rQ   dictzipvaluesbegindropcreaterM   )rV   rD   rc   r6   rY   rP   headerr[   paramsrW   cons   &&         r-   create_and_load_irisrq      s    ! D	w	7	77G$f4:;FS$s6'(F;d|""6*ZZ\\SIIcdI+KKSK!KK  
8	7 <\ 
8	7	7s5   &DC)/1D 7C.	D)D.C>9DD	c                F   R p\        V \        P                  4      '       d$   V P                  4       pVP	                  V4       R# \        RRR7      pV'       d`   \        WP                  4      '       dE   V P                  4       ;_uu_ 4       pVP	                  V4       RRR4       V P                  4        R# ^ RIHp V! V4      pV P                  4       ;_uu_ 4       pVP	                  V4       RRR4       R#   + '       g   i     Ld; i  + '       g   i     R# ; i)z+CREATE VIEW iris_view AS SELECT * FROM irisadbc_driver_manager.dbapiignoreerrorsNtext)

isinstancesqlite3
ConnectionrL   rM   r   rU   r<   rx   rk   )rV   rW   rX   adbcrx   rp   s   &     r-   create_and_load_iris_viewr}      s    8D$**++kkmD)*EhWJt__55#D! KKM':DD!   s   C< D<D	D 	c                   V ^8  d   QhRR/# )rC   dialectstrr+   )rE   s   "r-   rF   rF      s      # r,   c                
   ^ RI HpHpHpHpHpHpHpHp V R8X  d   TMTp	V R8X  d   TMTp
V! 4       pV! RVV! RV4      V! RV	4      V! RV4      V! RV4      V! RV4      V! R	V4      V! R
V
4      V! RV4      V! RV
4      4      pV# )r   )TEXTBooleanr0   DateTimer2   Integerr3   r5   r&   typesTextColDateCol
IntDateColIntDateOnlyColFloatColIntColBoolColIntColWithNullBoolColWithNull)	r<   r   r   r0   r   r2   r   r3   r5   )r   r   r   r0   r   r2   r   r3   r5   	date_type	bool_typer?   r   s   &            r-   types_table_metadatar      s    	 	 	  8+I"h.GIzHy$y)$|W%)z5!x!y)$) ),E  Lr,   c                   V ^8  d   QhRR/# rC   
types_data
list[dict]r+   )rE   s   "r-   rF   rF      s      J r,   c                   R pRp\        V \        P                  4      '       d5   V P                  4       pVP	                  V4       VP                  W14       R# V P                  4       ;_uu_ 4       pVP	                  V4       VP                  W14       RRR4       V P                  4        R#   + '       g   i     L"; i)a  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(?, ?, ?, ?, ?, ?, ?, ?, ?)
                N)ry   rz   r{   rL   rM   rS   rU   )rV   r   rW   ins_stmtrX   s   &&   r-   create_and_load_types_sqlite3r      s    
DH
 $**++kkmD-[[]]cKKOOH1  		 ]s   1#B..B>	c                   V ^8  d   QhRR/# r   r+   )rE   s   "r-   rF   rF     s      z r,   c                    V P                  4       ;_uu_ 4       pR pVP                  V4       RpVP                  W14       RRR4       V P                  4        R#   + '       g   i     L"; i)a  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)
                N)rL   rM   rS   rU   )rV   r   rX   rW   s   &&  r-    create_and_load_types_postgresqlr     sQ    	#
 	D
 	)' 
* 	KKM+ 
s   'AA*	c                    V ^8  d   QhRRRR/# )rC   r   r   r   r   r+   )rE   s   "r-   rF   rF   6  s      J  r,   c           	        ^ RI Hp ^ RIHp \	        V4      pV! V4      P                  V4      p\        W4      '       d{   V P                  4       ;_uu_ 4       p V P                  4       ;_uu_ 4        VP                  V RR7       VP                  V R7       V P                  V4       RRR4       RRR4       R# V P                  4       ;_uu_ 4        VP                  V RR7       VP                  V R7       V P                  V4       RRR4       R#   + '       g   i     Ls; i  + '       g   i     R# ; i  + '       g   i     R# ; i)r   rb   EngineTrd   rf   N)r<   rc   sqlalchemy.enginer   r   rj   ry   connectrk   rl   rm   rM   )rV   r   r   rc   r   r   rW   s   &&&    r-   create_and_load_typesr   6  s    !( )E%=
+D$\\^^t

4D
1$'T"  ^ ZZ\\JJtJ-LLdL#LL \  ^^ \\s0   D&17D	(D&7D:D#D&&D7	:E	c                D   ^ RI HpHpHpHpHp ^ RIHp V! 4       pV! RWq! RV! RR7      4      4      pRR/RR/.p	V! V4      P                  V	4      p
\        W4      '       dz   V P                  4       ;_uu_ 4       p V P                  4       ;_uu_ 4        VP                  V RR	7       VP                  V R
7       V P                  V
4       RRR4       RRR4       MWV P                  4       ;_uu_ 4        VP                  V RR	7       VP                  V R
7       V P                  V
4       RRR4       \        RRR7      \        RRR7      .p\!        VRR7      P#                  R4      #   + '       g   i     L; i  + '       g   i     LY; i  + '       g   i     Ll; i)r   )r0   r   r3   r5   rc   r   datetzDateColWithTzT)timezonez2000-01-01 00:00:00-08:00z2000-06-01 00:00:00-07:00rd   rf   Nz2000-01-01 08:00:00UTCtzz2000-06-01 07:00:00nameM8[us, UTC])r<   r0   r   r3   r5   rc   r   r   rj   ry   r   rk   rl   rm   rM   r   r   astype)rV   r0   r   r3   r5   rc   r   r?   r   datetz_datarW   expected_datas   &           r-   create_and_load_postgres_datetzr   J  sP     )zH8XvoxQU?V'WXF 8	
 8	
	K &>  -D$\\^^tDT24(T"  ^ ZZ\\KKK.MMtM$LL  	'E2'E2M -o6==mLL'  ^ \s0   ;E<7E)	E<47F)E94E<<F	F	c                   V ^8  d   QhRR/# )rC   framer   r+   )rE   s   "r-   rF   rF   w  s     - -I -r,   c           	     B   V P                   P                  ^ ,          P                  pV P                  ^ ,          p\        V\        P
                  4      '       g   Q h\        P                  ! V\        . ROV P                  ^ R7      4       V P                  R9   g   Q hR# )r   )indexr   Nffffff@g      @gffffff?皙?Iris-setosa))      )   r   )dtypesiloctype
issubclassnpfloatingtmassert_series_equalr   columnsshape)r   pytyper[   s   &  r-   check_iris_framer   w  sw    \\q!&&F
**Q-Cfbkk****V7u}}STU ;;,,,,r,   c                   V ^8  d   QhRR/# )rC   
table_namer   r+   )rE   s   "r-   rF   rF     s     ; ; ;r,   c                R   R V 2p\        RRR7      p\        V \        P                  4      '       d7   V P	                  4       pVP                  V4      P                  4       ^ ,          # V'       dg   \        WP                  4      '       dL   V P	                  4       ;_uu_ 4       pVP                  V4       VP                  4       ^ ,          uuRRR4       # ^ RIHp ^ RI	H
p \        V \        4      '       d\    V! V 4      pVP                  4       ;_uu_ 4       p V P                  V4      P                  4       uuRRR4       VP                  4        # \        W4      '       dC   V P                  4       ;_uu_ 4       p V P                  V4      P                  4       uuRRR4       # V P                  V4      P                  4       #   + '       g   i     R# ; i  + '       g   i     M; i TP                  4        R#   XP                  4        i ; i  + '       g   i     R# ; i)z SELECT count(*) AS count_1 FROM rs   rt   ru   N)create_enginer   )r   ry   rz   r{   rL   rM   fetchoner<   r   r   r   r   r   exec_driver_sql
scalar_onedispose)rV   r   rW   r|   rX   r   r   engines   &&      r-   
count_rowsr     sz   -j\:D%&A(SD$**++kkm{{4 ))+A..	*T??33[[]]cKK<<>!$ ] 	-,dC  !&t,^^%%//5@@B &%  %%4++D1<<>   ''-88::% ]] &%%   s<   $(G: H  G9
H  =HG	G*	%H   HH&	c                .    V ! R RRR4      p\        V4      # )iodatarO   ziris.csvr
   )datapath	iris_paths   & r-   r   r     s    vuj9I	?r,   c                 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R/	.# )r   firstr   2000-01-03 00:00:00r   i wr   i2r   g333333$@r   r   Fr   r   2000-01-04 00:00:00i 'Pi\2Nr+   r+   r,   r-   r   r     sv     w,)hauau
	
 w,*haudt
	
 r,   c                    R RRRRRRRRRRRR	RR
RRR/	p\        V 4      pW!P                  4       ,          P                  V4      # )r   r   r   r   int64r   r   rR   r   r   r   r   )r   keysr   )r   r   dfs   &  r-   types_data_framer     s^     	55g'G'7'7
F 
:	Bkkm##F++r,   c                 *    . ROp . ROp\        WR7      # )r   r   )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   s     r-   test_frame1r     s    +GD< T++r,   c                 *    . ROp . ROp\        WR7      # )r   r   )r   r   r   ))r   igZ)r   ir   )r   i N  r   )r   i͏r   r   r   s     r-   test_frame3r     s    !GD T++r,   c                |   \        V \        P                  4      '       d8   V P                  R 4      pVP	                  4        Uu. uF  q"^ ,          NK  	  up# \        RRR7      pV'       d   \        WP                  4      '       d   . pV P                  4       P                  4       P                  4       pV F_  pVR,           VR,           FF  pVR,           VR,           F-  pVR,          R	8X  g   K  VR
,          p	VP                  V	4       K/  	  KH  	  Ka  	  V# ^ RI
Hp
 V
! V 4      P                  4       # u upi )z0SELECT name FROM sqlite_master WHERE type='view'rs   rt   ru   catalog_namecatalog_db_schemasdb_schema_namedb_schema_tables
table_typeviewr   inspect)ry   rz   r{   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   D9c                X   \        V \        P                  4      '       d8   V P                  R 4      pVP	                  4        Uu. uF  q"^ ,          NK  	  up# \        RRR7      pV'       d   \        WP                  4      '       d   . pV P                  4       P                  4       P                  4       pV FM  pVR,           F=  pVR,           F-  pVR,          R8X  g   K  VR,          pVP                  V4       K/  	  K?  	  KO  	  V# ^ R	I
Hp	 V	! V 4      P                  4       # u upi )
z1SELECT name FROM sqlite_master WHERE type='table'rs   rt   ru   r   r   r   r  r   r   )ry   rz   r{   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'c                    V ^8  d   QhRRRR/# )rC   r   r   rV   Lsqlite3.Connection | sqlalchemy.engine.Engine | sqlalchemy.engine.Connectionr+   )rE   s   "r-   rF   rF   1  s     . ..
V.r,   c           	        \        V\        P                  4      '       d;   VP                  R \        P
                  ! V 4       24       VP                  4        R# \        RRR7      pV'       dT   \        WP                  4      '       d9   VP                  4       ;_uu_ 4       pVP                  RV  R24       RRR4       R# VP                  4       ;_uu_ 4       p\        P                  ! V4      ;_uu_ 4       pVP                  V 4       RRR4       RRR4       R#   + '       g   i     R# ; i  + '       g   i     L.; i  + '       g   i     R# ; i)zDROP TABLE IF EXISTS rs   rt   ru   zDROP TABLE IF EXISTS ""N)ry   rz   r{   rM   r   _get_valid_sqlite_namerU   r   rL   rk   r   
drop_table)r   rV   r|   rX   rp   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   #DE:D2	ED/	2E=EE	c                    V ^8  d   QhRRRR/# )rC   r  r   rV   r  r+   )rE   s   "r-   rF   rF   D  s     " ""
V"r,   c                   ^ RI p\        V\        P                  4      '       d;   VP	                  R\
        P                  ! V 4       24       VP                  4        R# \        RRR7      pV'       dT   \        WP                  4      '       d9   VP                  4       ;_uu_ 4       pVP	                  RV  R24       RRR4       R# VP                  P                  P                  P                  V 4      pVP                  ! RV 24      pVP                  4       ;_uu_ 4       pVP	                  V4       RRR4       R#   + '       g   i     R# ; i  + '       g   i     R# ; i)r   NzDROP VIEW IF EXISTS rs   rt   ru   zDROP VIEW IF EXISTS "r  )r<   ry   rz   r{   rM   r   r  rU   r   rL   r   r   identifier_preparerquote_identifierrx   rk   )r  rV   r<   r|   rX   quoted_viewrW   rp   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?#E?E	E$	c               #    "   \         P                  ! R 4      p \         P                  ! R4      pV P                  ! RRVP                  P                  P
                  /V P                  P                  R7      pVx  \        V4       F  p\        W24       K  	  \        V4       F  p\        WB4       K  	  VP                  4        R# 5i)r<   pymysqlz*mysql+pymysql://root@localhost:3306/pandasclient_flag)connect_args	poolclassN)pytestimportorskipr   	constantsCLIENTMULTI_STATEMENTSpoolNullPoolr  r  r
  r  r   )r<   r  r   r   tbls        r-   mysql_pymysql_enginer%  [  s     $$\2J!!),G%%4#W%6%6%=%=%N%NO//**F
 Lf%$ &f%3 &
NNs   CCc                2    \        W4       \        V 4       V # Nrq   r}   )r%  r   s   &&r-   mysql_pymysql_engine_irisr)  l  s    -923r,   c                    \        WR 4       V # )r'   r   )r%  r   s   &&r-   mysql_pymysql_engine_typesr,  s  s    .GDr,   c              #     "   V P                  4       ;_uu_ 4       pVx  R R R 4       R #   + '       g   i     R # ; i5ir'  r   )r%  rV   s   & r-   mysql_pymysql_connr/  y  s)     		%	%	'	'4
 
(	'	'	'   >*
>;		>c              #     "   V P                  4       ;_uu_ 4       pVx  R R R 4       R #   + '       g   i     R # ; i5ir'  r.  )r)  rV   s   & r-   mysql_pymysql_conn_irisr2    s)     	"	*	*	,	,
 
-	,	,	,r0  c              #     "   V P                  4       ;_uu_ 4       pVx  R R R 4       R #   + '       g   i     R # ; i5ir'  r.  )r,  rV   s   & r-   mysql_pymysql_conn_typesr4    )     	#	+	+	-	-
 
.	-	-	-r0  c               #  R  "   \         P                  ! R 4      p \         P                  ! R4       V P                  ! RV P                  P                  R7      pVx  \        V4       F  p\        W!4       K  	  \        V4       F  p\        W14       K  	  VP                  4        R# 5i)r<   psycopg2z=postgresql+psycopg2://postgres:postgres@localhost:5432/pandasr  N
r  r  r   r"  r#  r  r  r
  r  r   )r<   r   r   r$  s       r-   postgresql_psycopg2_enginer:    s     $$\2J

#%%G//**F Lf%$ &f%3 &
NNs   B%B'c                2    \        W4       \        V 4       V # r'  r(  )r:  r   s   &&r-   postgresql_psycopg2_engine_irisr<    s    3?89%%r,   c                    \        WR 4       V # )postgresr+  )r:  r   s   &&r-    postgresql_psycopg2_engine_typesr?    s    4*M%%r,   c              #     "   V P                  4       ;_uu_ 4       pVx  R R R 4       R #   + '       g   i     R # ; i5ir'  r.  )r:  rV   s   & r-   postgresql_psycopg2_connrA    r5  r0  c               #  ~  "   \         P                  ! R 4       \         P                  ! R4       ^ RIHp  RpV P	                  V4      ;_uu_ 4       pVx  \        V4       F  p\        W24       K  	  \        V4       F  p\        WB4       K  	  VP                  4        RRR4       R#   + '       g   i     R# ; i5i)pyarrowadbc_driver_postgresqldbapiz4postgresql://postgres:postgres@localhost:5432/pandasN)
r  r  rD  rF  r   r  r  r
  r  rU   )rF  urirV   r   r$  s        r-   postgresql_adbc_connrH    s     
	"
01,
@C	s		t
!$'Dd! (!$'Cs! ( 
			s   AB=AB)
B=)B:	4	B=c                $   ^ RI pT p VP                  R4        VP                  R4       V#   TP                   d    TP                  4        \	        Y14        LBi ; i  TP                   d     TP                  4        \        T4        T# i ; ir   Nr6   	iris_view)adbc_driver_manageradbc_get_table_schemaProgrammingErrorrollbackr_   r}   )rH  r   mgrrV   s   &&  r-   postgresql_adbc_irisrQ    s    %D9""6*("";/ K  9'89
  (!$'K(    - A ,AA,BBc                    ^ RI pT p VP                  R4       V#   TP                   dN    TP                  4        T Uu. uF  p\	        TP                  4       4      NK  	  Mu upi pp\        Y54        T# i ; i)r   Nr   )rL  rM  rN  rO  tuplerj   r   )rH  r   rP  rV   entrynew_datas   &&    r-   postgresql_adbc_typesrW    ss    %D9""7+ K  97ABzeE%,,.)zBB(8K9s    %A9 "A#"A98A9c              #     "   V P                  4       ;_uu_ 4       pVx  R R R 4       R #   + '       g   i     R # ; i5ir'  r.  )r<  rV   s   & r-   postgresql_psycopg2_conn_irisrY    s)     	(	0	0	2	2d
 
3	2	2	2r0  c              #     "   V P                  4       ;_uu_ 4       pVx  R R R 4       R #   + '       g   i     R # ; i5ir'  r.  )r?  rV   s   & r-   postgresql_psycopg2_conn_typesr[    s)     	)	1	1	3	3t
 
4	3	3	3r0  c                8    \         P                  ! R 4       RV  2# )r<   
sqlite:///)r  r  )	temp_files   &r-   
sqlite_strr_    s    
%	{##r,   c              #  $  "   \         P                  ! R 4      pVP                  ! WP                  P                  R7      pVx  \        V4       F  p\        W24       K  	  \        V4       F  p\        WB4       K  	  VP                  4        R# 5i)r<   r8  Nr9  )r_  r<   r   r   r$  s   &    r-   sqlite_enginera    sl     $$\2J%%jOO<T<TUF
Lf%$ &f%3 &
NNs   BBc              #     "   V P                  4       ;_uu_ 4       pVx  R R R 4       R #   + '       g   i     R # ; i5ir'  r.  )ra  rV   s   & r-   sqlite_connrc     s)     				 	 D
 
!	 	 	 r0  c                    \         P                  ! R 4      pVP                  ! V 4      p\        W14       \	        V4       VP                  4        V # )r<   )r  r  r   rq   r}   r   )r_  r   r<   r   s   &&  r-   sqlite_str_irisre    sB    $$\2J%%j1F+f%
NNr,   c                2    \        W4       \        V 4       V # r'  r(  )ra  r   s   &&r-   sqlite_engine_irisrg    s    2m,r,   c              #     "   V P                  4       ;_uu_ 4       pVx  R R R 4       R #   + '       g   i     R # ; i5ir'  r.  )rg  rV   s   & r-   sqlite_conn_irisri    s)     		#	#	%	%
 
&	%	%	%r0  c                    \         P                  ! R 4      pVP                  ! V 4      p\        W1R4       VP	                  4        V # )r<   r&   )r  r  r   r   r   )r_  r   r<   r   s   &&  r-   sqlite_str_typesrk    s<    $$\2J%%j1F&h7
NNr,   c                    \        WR 4       V # )r&   r+  )ra  r   s   &&r-   sqlite_engine_typesrm  &  s    -X>r,   c              #     "   V P                  4       ;_uu_ 4       pVx  R R R 4       R #   + '       g   i     R # ; i5ir'  r.  )rm  rV   s   & r-   sqlite_conn_typesro  ,  s)     		$	$	&	&$
 
'	&	&	&r0  c              #    "   \         P                  ! R 4       \         P                  ! R4       ^ RIHp RV  2pVP	                  V4      ;_uu_ 4       pVx  \        V4       F  p\        WC4       K  	  \        V4       F  p\        WS4       K  	  VP                  4        RRR4       R#   + '       g   i     R# ; i5i)rC  adbc_driver_sqliterE  zfile:N)
r  r  rq  rF  r   r  r  r
  r  rU   )r^  rF  rG  rV   r   r$  s   &     r-   sqlite_adbc_connrr  2  s     
	"
,-()
C	s		t
!$'Dd! (!$'Cs! ( 
			s   AC AB,"
C ,B=	7	C c                $   ^ RI pT p VP                  R4        VP                  R4       V#   TP                   d    TP                  4        \	        Y14        LBi ; i  TP                   d     TP                  4        \        T4        T# i ; irJ  )rL  rM  rN  rO  r\   r}   )rr  r   rP  rV   s   &&  r-   sqlite_adbc_irisrt  B  s    %D6""6*("";/ K  6$T56
  (!$'K(rR  c                   ^ RI pT p VP                  R4       V#   TP                   d    TP                  4        . pT F`  p\	        TR,          4      TR&   TR,          e   \	        TR,          4      TR&   TP                  \        TP                  4       4      4       Kb  	  \        Y44       TP                  4         T# i ; i)r   Nr   r   r   )
rL  rM  rN  rO  intr   rT  rj   r   rU   )rr  r   rP  rV   rV  rU  s   &&    r-   sqlite_adbc_typesrw  T  s    %D""7+ K  
E"5#34E)&'3+.u5F/G+H'(OOE%,,.12	   	&d5K
s    B$CCc            	   #     "   \         P                  ! \        P                  ! R 4      4      ;_uu_ 4       p V ;_uu_ 4       pVx  RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i5i):memory:N)
contextlibclosingrz   r   closing_connrV   s     r-   sqlite_buildinr~  j  sK     			GOOJ7	8	8L\TJ  
9	8\ 
9	8	8s4   3A>A* A	A*
A>A'"A**A;	5	A>c                2    \        W4       \        V 4       V # r'  )r\   r}   )r~  r   s   &&r-   sqlite_buildin_irisr  q  s     ;n-r,   c                v    V Uu. uF  p\        VP                  4       4      NK  	  pp\        W4       V # u upi r'  )rT  rj   r   )r~  r   rU  s   && r-   sqlite_buildin_typesr  x  s5    5?@ZE%'ZJ@!.= As   "6r%  )marksr/  r)  r2  r,  r4  r:  rA  r<  rY  r?  r[  rr  rH  rQ  rt  rW  rw  r~  r  r  rV   c                R    VP                  V 4      p VP                  R V RRR7       R# )testr   Fr   rp   	if_existsr   N)getfixturevalueto_sql)rV   r   requests   &&&r-   test_dataframe_to_sqlr    s+     ""4(DFNr,   c                   V R 8X  dJ   \        4       '       g:   VP                  P                  \        P                  P                  RR7      4       VP                  V 4      p VP                  R,          pVP                  RV RRR7       R# )	rH  z=postgres ADBC driver < 1.2 cannot insert index with null typereasonNr   Nr  r   Fr  N)	r   node
add_markerr  markxfailr  r   r  )rV   r   r  empty_dfs   &&& r-   test_dataframe_to_sql_emptyr    sv    %%.@.B.BKKV  	
 ""4(D#HOOTXUOKr,   c                   \         P                  ! R 4       \        R\        P                  ! ^.RR7      R\        P                  ! \        R^^4      .RR7      R\        P                  ! \        R^^4      .RR7      R	\        P                  ! \        ^4      .R
R7      R\        P                  ! R.RR7      /4      pRV 9   d5   V R8X  d   VP                  R	.R7      p\        '       d
   \        pRpMRpRpM\        pRpVP                  V 4      p \        P                  ! W4RR7      ;_uu_ 4        VP                  RV RRR7       RRR4       R#   + '       g   i     R# ; i)rC  rv  zint8[pyarrow]r>   r     timestamp[ns][pyarrow]r   zdate32[day][pyarrow]r   zduration[ns][pyarrow]stringazstring[pyarrow]r|   rr  r   zis_sparse is deprecatedN zthe 'timedelta'F)matchcheck_stacklevel
test_arrowreplacer  )r  r  r   pdarrayr   r   r   rl   r   DeprecationWarningUserWarningr  r   assert_produces_warningr  )rV   r  r   exp_warningmsgs   &&   r-   "test_dataframe_to_sql_arrow_dtypesr    s+    	"	288QC7$1%&.F BHHd4A./7MN9Q<.8OPbhhu,=>	


B ~%%+/B,K+CKC!""4(D		#	#KU	S	S
		|%	P 
T	S	S	Ss   2EE#	c           
     8   \         P                  ! R 4       \        V\        4      '       d   \         P                  ! RR7       \        R\        P                  ! \        R^^4      V.RR7      /4      pVP                  V 4      p VP                  RV RR	R
7       R# )rC  z?Decimal('NaN') not supported in constructor for timestamp dtyper  r   r  r  r  r  r  Fr  N)r  r  ry   r   skipr   r  r  r   r  r  )rV   r  nulls_fixturer   s   &&& r-   *test_dataframe_to_sql_arrow_dtypes_missingr    s     	"-))T	

 
$1%}5=U	

B ""4(DII<TYeILr,   methodmultic                   VR 8X  dB   RV 9   d;   VP                   P                  \        P                  P	                  RRR7      4       VP                  V 4      p \        V RR7      ;_uu_ 4       pVP                  VRVR7       VP                  R4      '       g   Q h RRR4       \        V R4      \        V4      8X  g   Q hR#   + '       g   i     L.; i)	r  r|   z)'method' not implemented for ADBC driversTr  strictneed_transaction
test_framer  N)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$	7	79l6B""<0000 
8 dL)S-==== 
8	7s   /.CC	zmode, num_row_coefc                T   VP                  V 4      p \        V R R7      ;_uu_ 4       pVP                  VRRR7       VP                  VRVR7       VP                  R4      '       g   Q h RRR4       \	        V R4      V\        V4      ,          8X  g   Q hR#   + '       g   i     L5; i)Tr  r  failr  Nr  r!   r  r  r   r  )rV   modenum_row_coefr   r  r  s   &&&&& r-   test_to_sql_existr  6  s    
 ""4(D	4$	7	79lfEldC""<0000 
8 dL)\C<L-LLLL	 
8	7s   ABB'	c           
        VP                  V 4      p \        V R R7      ;_uu_ 4       pVP                  VRRR7       VP                  R4      '       g   Q hRp\        P
                  ! \        VR7      ;_uu_ 4        VP                  VRRR7       RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)Tr  r  r  r  z!Table 'test_frame' already existsr  N)r  r!   r  r  r  raises
ValueError)rV   r   r  r  r  s   &&&  r-   test_to_sql_exist_failr  C  s    ""4(D	4$	7	79lfE""<00001]]:S11[,&I 2 
8	7
 21 
8	7	7s$   AB5;B"	B5"B2-B55C	c                   VP                  V 4      p \        R V 4      p\        V4       \        P                  ! R V 4      p\        V4       \        P                  ! RV 4      pVP
                  R8X  g   Q hRVP                  9   g   Q hR# )SELECT * FROM irisSELECT * FROM iris where 0=1r8   Nr   r   )r  r"   r   r  read_sqlr   r   rV   r  
iris_frames   && r-   test_read_iris_queryr  O  sy    ""4(D 4d;JZ 148JZ ;TBJv%%%:-----r,   c                   R V 9   d;   VP                   P                  \        P                  P	                  RRR7      4       VP                  V 4      p \        \        RV ^R7      4      p\        V4       \        \        P                  ! RV ^R7      4      p\        V4       \        \        P                  ! RV ^R7      4      pVP                  R	8X  g   Q hRVP                  9   g   Q hR# )
r|   ,'chunksize' not implemented for ADBC driversTr  r  	chunksizer  r8   Nr  )r  r  r  r  r  r  r   r"   r   r  r  r   r   r  s   && r-   test_read_iris_query_chunksizer  [  s    ~KKE  	
 ""4(D';TQOPJZ $8$!LMJZ $BDTUVWJv%%%:-----r,   c                   R V 9   d;   VP                   P                  \        P                  P	                  RRR7      4       TP                  V 4      p ^ RIHpHpH	pH
p V! 4       p\        V \        4      '       d	   V! V 4      MT pV! RWgR7      p\        V! V4      V RRR	R
/R7      p	\        V	4       \        V \        4      '       d   VP                  4        R# R# )r|   r  Tr  )r3   r5   r   selectr6   )autoload_withr   r   lengthr   ro   N)r  r  r  r  r  r  r<   r3   r5   r   r  ry   r   r"   r   r   )
rV   r  r3   r5   r   r  r?   autoload_conr6   r  s
   &&        r-   .test_read_iris_query_expression_with_parameterr  n  s    ~KKE  	
 ""4(D  zH*4T3*?*?=&TL>DtdFM8S#IJ Z $ r,   c                H   R V 9   d;   VP                   P                  \        P                  P	                  RRR7      4       VR,          P                  4        F  w  r4W09   g   K   M	  \        RV  R24      hVP                  V 4      p \        W@R	R7      p\        V4       R# )
r|   r  Tr  r%   zNo part of z( found in sql_strings['read_parameters']r  N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                    VP                  V 4      p \        R V 4      p\        V4       \        P                  ! R V 4      p\        V4       R# )r6   N)r  r#   r   r  r  r  s   && r-   test_read_iris_tabler    s@     ""4(D-JZ VT*JZ r,   c                F   R V 9   d:   VP                   P                  \        P                  P	                  RR7      4       VP                  V 4      p \        \        RV ^R7      4      p\        V4       \        \        P                  ! RV ^R7      4      p\        V4       R# )r|   +chunksize argument NotImplemented with ADBCr  r6   r  N)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                D  a VP                  V 4      p . oV3R  lp\        V RR7      ;_uu_ 4       pVP                  VRVR7       VP                  R4      '       g   Q h RRR4       S^.8X  g   Q h\	        V R4      \        V4      8X  g   Q hR#   + '       g   i     L8; i)c           	        < SP                  ^4       V Uu. uF  p\        \        W$4      4      NK  	  ppVP                  V P                  P                  4       V4       R# u upi )   N)r   rh   ri   rM   r  rc   )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  Nr  )rV   r   r  r  r  r  s   &&&  @r-   test_to_sql_callabler    s    ""4(DE4
 
4$	7	79l6B""<0000 
8 QC<<dL)S-====	 
8	7s   .BB	c                T   T pVR 8X  d0   VP                  \        P                  P                  RR7      4       VP	                  V 4      p \
        P                  ! RV 4      p\        VP                  P                  P                  \        P                  4      '       g   Q h\        VP                  P                  P                  \        P                  4      '       g   Q hRV9   dB   \        VP                  P                  P                  \        P                   4      '       g   Q hM@\        VP                  P                  P                  \        P                  4      '       g   Q h\        VP"                  P                  P                  \        P                  4      '       g   Q hRV9   d9   \        VP$                  P                  P                  \&        4      '       g   Q hR# \        VP$                  P                  P                  \        P                  4      '       g   Q hR# )r  ;sqlite_buildin connection does not implement read_sql_tabler  r   r(   N)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           	        VP                  V 4      p ^ RIHp ^ RIHp \        R. ROR. RO/4      pVP                  RV RR7       RpV! V4      p\        W4      '       dU   V P                  4       ;_uu_ 4       pVP                  4       ;_uu_ 4        VP                  V4       R	R	R	4       R	R	R	4       M2V P                  4       ;_uu_ 4        V P                  V4       R	R	R	4       \        P                  ! R
V 4      p\        P                  ! WG4       \        P                  ! R
V 4      p\        P                  ! WH4       R	#   + '       g   i     L; i  + '       g   i     L; i  + '       g   i     L; i)r   rw   r   r  br  Fr   rp   r   z}DROP PROCEDURE IF EXISTS get_testdb;

    CREATE PROCEDURE get_testdb ()

    BEGIN
        SELECT * FROM test_frame;
    ENDNzCALL get_testdb();r  rC      皙?r   333333?)r  r<   rx   r   r   r   r  ry   r   rk   rM   r   r"   r   assert_frame_equalr  )	rV   r  rx   r   r   procengine_connres1res2s	   &&       r-   test_read_procedurer    s   ""4(D
  (	CC9	:BII<TI7D :D$\\^^{""$$##D) % ^ ZZ\\LL  2D9D"# <<,d3D"# %$ ^ \s0   8EE	#EE(EEE%	(E8	expected_countzSuccess!c           	       a V3R  lpVP                  V 4      p \        R^^.RRR.RRR./4      pVP                  RV R	VR
7      pSf   Ve   Q hM	VS8X  g   Q h\        P                  ! RV 4      p\
        P                  ! Wd4       R# )c           
       < VP                   pVP                  4       ;_uu_ 4       p\        4       p\        P                  ! V4      pVP                  V4       VP                  ^ 4       RP                  V Uu. uF	  pRV R2NK  	  up4      p	V P                  '       d   V P                   RV P                   2p
MV P                  p
RV
 RV	 R2pVP                  WR7       RRR4       S# u upi   + '       g   i     S# ; i)	r   z, r  .zCOPY z (z) FROM STDIN WITH CSV)r   fileN)
connectionrL   r	   rO   writer	writerowsseekjoinr  r   copy_expert)r  rV   r   r  
dbapi_connrX   s_bufr  kr   r   	sql_queryr  s   &&&&        r-   psql_insert_copyBtest_copy_from_callable_insertion_method.<locals>.psql_insert_copy  s    __
  CJEZZ&FY'JJqMii4 84a1QCq4 89G||| %~Quzzl;
"ZZ

|2gY6KLIOO	O6 !  !9 !  s%   AC28C-C2 AC2-C22D	col1col2r  r   col3r  nr  F)r   rp   r   r  Nr  r   r  r   r#   r   r  )rV   r  r  r  expectedresult_countresults   &f&    r-   (test_copy_from_callable_insertion_methodr    s    & ""4(D&1a&&3*fsCjQRH??t59I # L ###~---d3F&+r,   c           	       a VP                  V 4      p ^ RIHo ^ RIHp ^ RIHp V3R lpV! R4      p\        W4      '       dU   V P                  4       ;_uu_ 4       pVP                  4       ;_uu_ 4        VP                  V4       RRR4       RRR4       M2V P                  4       ;_uu_ 4        V P                  V4       RRR4       \        . RO.\        R4      R7      pVP                  R	V R
RR7       \        . RO.\        R4      R7      pVP                  R	V RR
VR7      p	\        P                  ! R	V 4      p
\         P"                  ! W4       V	^ 8X  g   Q h\        P$                  ! V RR7      ;_uu_ 4       pVP'                  R	4       RRR4       R#   + '       g   i     EL; i  + '       g   i     L; i  + '       g   i     EL; i  + '       g   i     R# ; i)r   rb   r   rw   c           	        < V Uu. uF  p\        \        W$4      4      NK  	  ppS! V P                  4      P                  V4      P	                  R .R7      pVP                  V4      pVP                  # u upi )r  )index_elements)rh   ri   r  rj   on_conflict_do_nothingrM   rowcount	r  rV   r   r  r[   r   rW   r  rc   s	   &&&&    r-   insert_on_conflictHtest_insertion_method_on_conflict_do_nothing.<locals>.insert_on_conflict<  si    09:	S^$	:5;;VD\##C5#9 	
 d# ;s   A4zx
    CREATE TABLE test_insert_conflict (
        a  integer PRIMARY KEY,
        b  numeric,
        c  text
    );
    Nabcr   test_insert_conflictr   Fr  r   rp   r   r  r  Tr  r   @r  r  g	@r  )r  sqlalchemy.dialects.postgresqlrc   r   r   sqlalchemy.sqlrx   ry   r   rk   rM   r   listr  r   r#   r   r  r   r  )rV   r  r   rx   r%  
create_sqlrp   r  	df_insertinsertedr  r  rc   s   &&          @r-   ,test_insertion_method_on_conflict_do_nothingr3  3  sx    ""4(D5(# 	J $\\^^sJ'  ^ ZZ\\LL$  -$u+>HOO#   =/4;?I#!   H  6=F&+q== 
	5	534 
6	51  ^ \\* 
6	5	5<   F-5F	F-0G =GF*$	F--F=	 G	G%	c                d   R V 9   g   RV 9   d0   VP                  \        P                  P                  RR7      4       VP	                  V 4      p \        . RO. RO.\        R4      R7      pVP                  RV RRR	R
7       \        P                  ! RV R	R7      p\        P                  ! W#4       R# )r&   r'   z2test for public schema only specific to postgresqlr  r'  r   test_public_schemar   Fpublic)r   rp   r  r   r  r  Nr*  )rC   g@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_schemar;  m  s    47d?KKK  	
 ""4(D=-8$u+NI!    4d8LF),r,   c           	       a VP                  V 4      p ^ RIHo ^ RIHp ^ RIHp V3R lpV! R4      p\        W4      '       dU   V P                  4       ;_uu_ 4       pVP                  4       ;_uu_ 4        VP                  V4       RRR4       RRR4       M2V P                  4       ;_uu_ 4        V P                  V4       RRR4       \        . RO.\        R4      R7      pVP                  R	V R
RR7       \        . RO.\        R4      R7      pVP                  R	V RR
VR7      p	\        P                  ! R	V 4      p
\         P"                  ! W4       V	^8X  g   Q h\        P$                  ! V RR7      ;_uu_ 4       pVP'                  R	4       RRR4       R#   + '       g   i     EL; i  + '       g   i     L; i  + '       g   i     EL; i  + '       g   i     R# ; i)r   rb   r   rw   c           	     F  < V Uu. uF  p\        \        W$4      4      NK  	  ppS! V P                  4      P                  V4      pVP	                  VP
                  P                  VP
                  P                  R 7      pVP                  V4      pVP                  # u upi ))r  r   )
rh   ri   r  rj   on_duplicate_key_updater2  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)
    );
    Nr'  r   r(  r   Fr  r)  Tr  r*  r,  )r  sqlalchemy.dialects.mysqlrc   r   r   r.  rx   ry   r   rk   rM   r   r/  r  r   r#   r   r  r   r  )rV   r  r   rx   r%  r0  rp   r   r  r2  r  r  rc   s   &&          @r-   (test_insertion_method_on_conflict_updaterA    so    ""4(D0(# 	J $\\^^sJ'  ^ ZZ\\LL$  
M?DK	8BII)txuIU-$u+>H#!  H  6=F&+q== 
	5	534 
6	5-  ^ \\& 
6	5	5r4  c                   VP                  V 4      p ^ RIHp ^ RIHp R\
        P                  ! 4       P                   2pR\
        P                  ! 4       P                   2pV! RV RV RV RV R	2	4      p\        W4      '       dU   V P                  4       ;_uu_ 4       pVP                  4       ;_uu_ 4        VP                  V4       R
R
R
4       R
R
R
4       M2V P                  4       ;_uu_ 4        V P                  V4       R
R
R
4       \        WP4      p\        R^.RR/4      p	\        P                  ! W4       R
#   + '       g   i     L~; i  + '       g   i     LV; i  + '       g   i     Li; i)r   r   rw   group_group_view_z
    CREATE TABLE zF (
        group_id INTEGER,
        name TEXT
    );
    INSERT INTO z- VALUES
        (1, 'name');
    CREATE VIEW z
    AS
    SELECT * FROM z;
    Ngroup_idr   )r  r   r   r.  rx   uuiduuid4hexry   r   rk   rM   r#   r   r   r  )
rV   r  r   rx   r   r  sql_stmtrp   r  r  s
   &&        r-   test_read_view_postgresrJ    s*    ""4(D(#$**,**+,Jdjjl../0I    , 
	H $\\^^sH%  ^ ZZ\\LL" I,F*qc66:;H&+  ^ \s0    E9E	E4E'EEE$	'E7	c                    R pRpRpV P                  V4       V P                  V4       V P                  V4       \        P                  ! RV 4      p\        R^.RR/4      p\        P
                  ! WE4       R# )z<
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_viewrE  r   N)rM   r  r  r   r   r  )r~  create_tableinsert_intocreate_viewr  r  s   &     r-   test_read_view_sqliterO    sw    LKK
 <(;';'[[3^DF*qc66:;H&+r,   c                T    R V 9   d   R # RV 9   d   R# RV 9   d   R# \        RV  24      h)r(   r&   r'   zunsupported connection: )r  )r  s   &r-   flavorrQ    s6    y 	Y		I	
/	{;
<<r,   c           	        R V 9   d;   VP                   P                  \        P                  P	                  RRR7      4       T pVP                  V 4      p VR,          \        V4      ,          pRp\        V 4      ;_uu_ 4       pVP                  4       ;_uu_ 4        VP                  WER7      pRRR4       RRR4       \        X4       R#   + '       g   i     L%; i  + '       g   i     L0; i)r|   )'params' not implemented for ADBC driversTr  r%   r  Nr  r  r  r  r  r  r  rQ  r!   run_transaction
read_queryr   rV   r  r.   r  r  ro   r  r  s   &&&     r-   test_read_sql_iris_parameterrX    s    ~KKB  	
 I""4(D)*6)+<=E!F	4	 	 I&&(("--e-CJ ) 
! Z  )( 
!	 s$   CC	/CCCC/	c           	        R V 9   d;   VP                   P                  \        P                  P	                  RRR7      4       T pVP                  V 4      p VR,          \        V4      ,          pRRRR/p\        V 4      ;_uu_ 4       pVP                  4       ;_uu_ 4        VP                  WER	7      pR
R
R
4       R
R
R
4       \        X4       R
#   + '       g   i     L%; i  + '       g   i     L0; i)r|   rS  Tr  r)   r   r   r  r   r  NrT  rW  s   &&&     r-   "test_read_sql_iris_named_parameterrZ    s    ~KKB  	
 I""4(D/0	1BCEmXs3F	4	 	 I&&(("--e-CJ ) 
! Z  )( 
!	 s$   C# C	3C#C C##C3	c           	        R V 9   g   RV 9   d7   RV 9  d0   VP                  \        P                  P                  RR7      4       T pVP	                  V 4      p VR,          \        V4      ,          p\        V 4      ;_uu_ 4       pVP                  4       ;_uu_ 4        VP                  VRR7      pRRR4       RRR4       \        X4       R#   + '       g   i     L%; i  + '       g   i     L0; i)r'   r(   r|   zbroken testr  r*   Nr  )
r  r  r  r  r  rQ  r!   rU  rV  r   )rV   r  r.   r  r  r  r  s   &&&    r-   ,test_read_sql_iris_no_parameter_with_percentr\  )  s    $<4/F$4FFKK--]-CDI""4(D9:6);LME	4	 	 I&&(("--eD-AJ ) 
! Z  )( 
!	 s$   C!C	1C!CC!!C1	c                l    VP                  V 4      p \        P                  ! R V 4      p\        V4       R# )zSELECT * FROM iris_viewN)r  r   r"   r   r  s   && r-   test_api_read_sql_viewr^  <  s-    ""4(D##$=tDJZ r,   c                H   R V 9   d:   VP                   P                  \        P                  P	                  RR7      4       VP                  V 4      p Rp\        P                  ! W ^R7      p\        P                  ! W 4      p\        P                  ! \        V4      V4       R# )r|   r  r  z1SELECT * FROM iris_view WHERE "SepalLength" < 0.0r  N)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_resultrb  C  s    ~KK%RS	
 ""4(D?E##E1=J&&u3M&,m<r,   c                j   VP                  V 4      p \        P                  ! R V 4      '       d;   \        P                  ! V RR7      ;_uu_ 4       pVP	                  R 4       RRR4       \        P
                  ! VR V 4       \        P                  ! R V 4      '       g   Q hR#   + '       g   i     LI; i)r   Tr  N)r  r   r  r   r  r  )rV   r  r   r  s   &&& r-   test_api_to_sqlrd  P  s{    ""4(D
}}]D))__TD99Y  / : JJ{M40==----	 :9s   B""B2	c           	     (   VP                  V 4      p \        P                  ! R V 4      '       d;   \        P                  ! V RR7      ;_uu_ 4       pVP	                  R 4       RRR4       \        P
                  ! VR V RR7       \        P                  ! R V 4      '       g   Q hRp\        P                  ! \        VR7      ;_uu_ 4        \        P
                  ! VR V RR7       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)test_frame2Tr  Nr  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_failrg  [  s    ""4(D
}}]D))__TD99Y  / : JJ{M46B==----
.C	z	-	-

;tvF 
.	- :9 
.	-	-s   C-D -C=	 D	c                   VP                  V 4      p \        P                  ! R V 4      '       d;   \        P                  ! V RR7      ;_uu_ 4       pVP	                  R 4       RRR4       \        P
                  ! VR V RR7       \        P
                  ! VR V RR7       \        P                  ! R V 4      '       g   Q h\        V4      p\        V R 4      pWT8X  g   Q hR#   + '       g   i     L; i)r   Tr  Nr  r  r  r  r   r  r   r  r  r  r   rV   r  r   r  num_entriesnum_rowss   &&&   r-   test_api_to_sql_replacerm  j  s    ""4(D
}}]D))__TD99Y  / : JJ{M46BJJ{M49E==----k"K$.H""" :9s   CC-	c                
   VP                  V 4      p \        P                  ! R V 4      '       d;   \        P                  ! V RR7      ;_uu_ 4       pVP	                  R 4       RRR4       \        P
                  ! VR V RR7      ^8X  g   Q h\        P
                  ! VR V RR7      ^8X  g   Q h\        P                  ! R V 4      '       g   Q h^\        V4      ,          p\        V R 4      pWT8X  g   Q hR#   + '       g   i     L; i)test_frame4Tr  Nr  r  r   ri  rj  s   &&&   r-   test_api_to_sql_appendrp  |  s    ""4(D
}}]D))__TD99Y  / : ::k=$&IQNNN ::k=$(KqPPP==----c+&&K$.H""" :9s   C22D	c                   VP                  V 4      p \        P                  ! R V 4      '       d;   \        P                  ! V RR7      ;_uu_ 4       pVP	                  R 4       RRR4       \        P
                  ! VR V RR7       \        P                  ! RV 4      p\        P                  ! W$4       R#   + '       g   i     LY; i)test_frame5Tr  NF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_mappingrt    s    ""4(D
}}]D))__TD99Y  / : JJ{M4u=\\5t<F+. :9s   B22C	c                   VP                  V 4      p \        P                  ! R V 4      '       d;   \        P                  ! V RR7      ;_uu_ 4       pVP	                  R 4       RRR4       \        \        P                  ! ^RR7      RR7      p\        P                  ! VR V RR	7       \        P                  ! R
V 4      p\        P                  ! VP                  4       V4       R#   + '       g   i     L; i)test_seriesTr  Nr   r  seriesr   Frs  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_seriesr|    s    ""4(D
}}]D))__TD99Y  / : 	ryy'*:AJJq-U3			7	>B!**,+ :9s   C$$C4	c                   T pVP                  V 4      p \        P                  ! R V 4      '       d;   \        P                  ! V RR7      ;_uu_ 4       pVP	                  R 4       RRR4       \        P
                  ! VR V R7       \        P                  ! RV R7      pRV9   d   VP                  RR7      pMVP                  R	R7      p\        P                  ! WR4       R#   + '       g   i     L; i)
test_frame_roundtripTr  Nrp   "SELECT * FROM test_frame_roundtripr|   __index_level_0__r   level_0)
r  r   r  r   r  r  r"   rl   r   r  rV   r  r   r  r  r  s   &&&   r-   test_api_roundtripr    s    I""4(D
}}+T22__TD99Y  !78 : JJ{2= D$OF %89Y/&. :9s   C  C0	c                   R V 9   d:   VP                   P                  \        P                  P	                  RR7      4       VP                  V 4      p \        P                  ! RV 4      '       d;   \        P                  ! V RR7      ;_uu_ 4       pVP                  R4       RRR4       \        P                  ! VRV R^R7       \        P                  ! R	V R
7      p\        P                  ! WB4       R#   + '       g   i     L[; i)r|   r  r  r~  Tr  NF)rp   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99Y  !78 : JJ  D$OF&. :9s   C44D	c                &   VP                  V 4      p \        P                  ! V 4      ;_uu_ 4       pVP                  R 4      pVP	                  4       pVP                  4        RRR4       \        X4      . RO8X  g   Q hR#   + '       g   i     L&; ir  Nr   )r  r   r!   rM   r   rT   r/  )rV   r  
pandas_sqliris_resultsr[   s   &&   r-   test_api_execute_sqlr    su     ""4(D			t	$	$
!))*>?##% 
% 9;;;;	 
%	$s   2B  B	c           
        T pVP                  V 4      p \        P                  ! R V 4      pRV9   gH   RV9   gA   \        VP                  P
                  P                  \        P                  4      '       d   Q h\        P                  ! R V R.R7      p\        VP                  P
                  P                  \        P                  4      '       g   Q hVP                  P                  4       \        R^^^ ^ ^ 4      \        R^^^ ^ ^ 4      .8X  g   Q h\        P                  ! R V RR/R7      p\        VP                  P
                  P                  \        P                  4      '       g   Q hVP                  P                  4       \        R^^^ ^ ^ 4      \        R^^^ ^ ^ 4      .8X  g   Q h\        P                  ! R V R.R7      p\        VP                  P
                  P                  \        P                  4      '       g   Q hVP                  P                  4       \        R^^^ ^ ^ 4      \        R	^^^ ^ ^ 4      .8X  g   Q h\        P                  ! R V RR
/R7      p\        VP                  P
                  P                  \        P                  4      '       g   Q hVP                  P                  4       \        R^^^ ^ ^ 4      \        R	^^^ ^ ^ 4      .8X  g   Q h\        P                  ! R V RR/R7      p\        VP                  P
                  P                  \        P                  4      '       g   Q hVP                  P                  4       \        R4      \        R4      .8X  g   Q hR# )SELECT * FROM typesr'   r>  r   parse_datesi  %Y-%m-%d %H:%M:%Sr   i  i  rz  r   z%Y%m%dz
2010-10-10z
2010-12-12N)r  r   r"   r   r   r>   r   r   
datetime64tolistr   r   r   r  s   &&  r-   test_api_date_parsingr    s   I""4(D 
		14	8By J)$;bjj..33R]]CCCC			14i[	QBbjj&&++R]];;;;::$1aA&$1aA&#   
 
		 34
B
 bjj&&++R]];;;;::$1aA&$1aA&#   
 
		14l^	TBbmm))..>>>>==!$B1a($1aA&&   
 
		t,1D
B bmm))..>>>>==!$B1a($1aA&&   
 
		%x0
B
 b''--22BMMBBBB##%,,*   r,   errorraisecoercezread_sql, text, moder  r<   r   c                   T pVP                  V 4      p VR 8X  d7   VR8X  d0   VP                  \        P                  P	                  RR7      4       VP                  RR/4      pV! VV RRV//R7      p	RV9   d?   V	R	,          P                  \        4      V	R	&   V	R
,          P                  \        4      V	R
&   VR8X  d   VP                  RRRRRR/4      p\        P                  ! W4       R# )r   r  z failing combination of argumentsr  r   zdatetime64[us]rv   )rp   r  r>  r   r   rW  r   int32r   r   N)
r  r  r  r  r  r   rv  rR   r   r  )
rV   r  r  rx   r  r  r   r  r  r  s
   &&&&&&&   r-   !test_api_custom_dateparsing_errorr    s    $ I""4(Dw9(>>KK%GH	
  &&	3C'DEH%(
F Y"9-44S9y$*+<$=$D$DU$K !++??g ''
 &+r,   c                `   VP                  V 4      p \        P                  ! R V RRR.R7      p\        VP                  P
                  P                  \        P                  4      '       g   Q h\        VP                  P
                  P                  \        P                  4      '       g   Q hR# )r  r   r   )	index_colr  N)
r  r   r"   r   r   r>   r   r   r  r   rV   r  r   s   && r-   test_api_date_and_indexr  H  s     ""4(D			-	
B bhhnn))2==9999bmm))..>>>>r,   c           
        T pVP                  V 4      p \        P                  ! R V 4      '       d;   \        P                  ! V RR7      ;_uu_ 4       pVP	                  R 4       RRR4       \        \        RR.RR7      4      P                  4       pVR8X  d:   VP                  P                  \        P                  P                  R	R
7      4       RV9   d   \        '       d   \        pM	RpM\        p\         P"                  ! VRR7      ;_uu_ 4        VP%                  R V R7      pRRR4       X^8X  g   Q h\        P&                  ! RV 4      pVR8X  dA   \        \(        P*                  ! ^ ^ R^ R7      \(        P*                  ! ^ ^ R^ R7      .RR7      pMVR,          P-                  R4      p\         P.                  ! VR,          V4       R#   + '       g   i     ELu; i  + '       g   i     L; i)test_timedeltaTr  Nz00:00:01z00:00:03foor   rr  z.sqlite ADBC driver doesn't implement timedeltar  r|   F)r  r   rp   zSELECT * FROM test_timedeltarH  i@B )monthsdaysmicrosecondsnanosecondsi- r   )r  r   r  r   r  r   r   ry  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  W  s    I""4(D
}}%t,,__TD99Y  !12 : 
fj*5EB	C	L	L	NB&&KKG  	
 ,KK!		#	#K%	H	Hyy&6DyA 
I1 >EF** QQWRSTQQWRST 
 e9##G,6%=(3M :99( 
I	Hs   GG#G 	#G3	c                   T pVP                  V 4      p \        R R	R./4      pRV9   d   RpMRp\        P                  ! \        VR7      ;_uu_ 4        VP                  RV R7      e   Q h RRR4       R#   + '       g   i     R# ; i)
r  y               @r|   zdatatypes not supportedzComplex datatypes not supportedr  test_complexr  Ny      ?      ?)r  r   r  r  r  r  )rV   r  r  r   r  s   &&   r-   test_api_complex_raisesr    su    I""4(D	C&"&	'B'/	z	-	-yyTy2::: 
.	-	-	-s   A66B	zindex_name,index_label,expectedc                ^   R V 9   d:   VP                   P                  \        P                  P	                  RR7      4       VP                  V 4      p \        P                  ! RV 4      '       d;   \        P                  ! V RR7      ;_uu_ 4       pVP                  R4       RRR4       \        R\        ^4      /4      pW&P                  n        Rp\        P                  ! VRWR	7       \        P                  ! Wp4      pVP                   ^ ,          V8X  g   Q hR#   + '       g   i     L; i)
r|   -index_label argument NotImplemented with ADBCr  test_index_labelTr  Nr  SELECT * FROM test_index_label)index_label)r  r  r  r  r  r  r   r  r   r  r   ranger   r   r  r"   r   )	rV   r  
index_namer  r  r  
temp_framer  r   s	   &&&&&    r-   test_api_to_sql_index_labelr    s    & ~KK%TU	
 ""4(D
}}'..__TD99Y  !34 : FE!H-.J&,EJJz-tMu+E==x''' :9s   DD,	c           
     h   T pR V9   d2   VP                  \        P                  P                  RRR7      4       M@RV9   d:   VP                  P                  \        P                  P                  RR7      4       VP                  V 4      p \        P                  ! RV 4      '       d;   \        P                  ! V RR	7      ;_uu_ 4       pVP                  R4       R
R
R
4       ^p\        R\        ^4      /\        P                  ! RR.4      R7      p\        P                  ! VRV 4      pWd8X  g   Q h\        P                   ! RV 4      pVP"                  ^ ,          R8X  g   Q hVP"                  ^,          R8X  g   Q h\        P                  ! VRV RRR.R7      pWd8X  g   Q h\        P                   ! RV 4      pVP"                  R,          P%                  4       RR.8X  g   Q hRR.VP&                  n        \        P                  ! VRV RR7      pWd8X  g   Q h\        P                   ! RV 4      pVP"                  R,          P%                  4       RR.8X  g   Q h\        P                  ! VRV RRR.R7      pWd8X  g   Q h\        P                   ! RV 4      pVP"                  R,          P%                  4       RR.8X  g   Q hRp\        P*                  ! \,        VR7      ;_uu_ 4        \        P                  ! VRV RRR7       R
R
R
4       R
#   + '       g   i     EL:; i  + '       g   i     R
# ; i)r'   z/MySQL can fail using TEXT without length as keyFr  r|   r  r  r  Tr  Nr  rs  r  r  level_1r  r   r   )r  r  :NrC   Nr  r   r   zALength of 'index_label' should match number of levels, which is 2r  )A0A1)B0B1)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9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9` 
.	-	-s   	L&L L	 L1	c                   VP                  V 4      p \        P                  ! R V 4      '       d;   \        P                  ! V RR7      ;_uu_ 4       pVP	                  R 4       RRR4       \
        P                  ! RR.. RORR.R7      pVP                  R V R7       \        P                  ! RV RR.R	7      p\        P                  ! W4RR
7       R#   + '       g   i     Lw; i)test_multiindex_roundtripTr  Nr   r   r   r   r  z'SELECT * FROM test_multiindex_roundtripr  check_index_typer  r+  line1rC         ?line2r   r   r   )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99Y  !<= : 
			-.Cj
B II.DI914C:F "t< :9s   CC 	r>   r   r   c                   T pVP                  V 4      p \        P                  ! R V 4      '       d;   \        P                  ! V RR7      ;_uu_ 4       pVP	                  R 4       RRR4       \        RR.RR..RR	.R
7      pVP                  R V R7      ^8X  g   Q hVP                  V4      pRV9   d   RpMRp\        P                  ! WpVR7      p\        P                  ! W4       R#   + '       g   i     L; i)test_dtype_argumentTr  N333333?g333333@ffffff@g333333@r   r   r   r  r>  z(SELECT "A", "B" FROM test_dtype_argumentz$SELECT A, B FROM test_dtype_argumentrp   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99Y  !67 : 
S#Jc
+c3Z	@B99/T9:a???yyHY:6u=F&+ :9s   C''C7	c                    VP                  V 4      p \        ^^.^^..^ ^.R7      p\        P                  ! VRV RR7       R# )r  r   test_frame_integer_col_namesr  r  N)r  r   r   r  r  s   && r-   test_api_integer_col_namesr  6  sB    ""4(D	QFQF#aV	4BJJr149Mr,   c                    R V 9   d;   VP                   P                  \        P                  P	                  RRR7      4       VP                  V 4      p \        P                  ! VRV R7      pRV9   g   Q hR# )r|   -'get_schema' not implemented for ADBC driversTr  r  r  CREATENr  r  r  r  r  r  r   
get_schemarV   r  r   r0  s   &&& r-   test_api_get_schemar  =  sj    ~KKF  	
 ""4(DV>Jz!!!r,   c                    R V 9   d;   VP                   P                  \        P                  P	                  RRR7      4       VP                  V 4      p \        P                  ! VRV RR7      pRV9   g   Q hR# )	r|   r  Tr  r  pypi)rp   r  zCREATE TABLE pypi.Nr  r  s   &&& r-   test_api_get_schema_with_schemar  K  sn     ~KKF  	
 ""4(DVfMJ:---r,   c                T   R V 9   d;   VP                   P                  \        P                  P	                  RRR7      4       T pVP                  V 4      p \        RRR.RRR	./4      pVR
8X  d   RpM^ RIHp Tp\        P                  ! VRV RV/R7      pRV9   g   Q hRV9   g   Q hR# )r|   r  Tr  r  皙?r  r  r+  皙@r~  INTEGER)r   r  r  r  N)r  r  r  r  r  r  r   r<   r   r   r  )rV   r  r  float_framer>   r   r0  s   &&     r-   test_api_get_schema_dtypesr  Z  s    ~KKF  	
 I""4(DS3*cC:>?K$$&Vc5\RJz!!!
"""r,   c                   R V 9   d;   VP                   P                  \        P                  P	                  RRR7      4       T pVP                  V 4      p \        RRR.RRR	./4      p\        P                  ! VR
V RR7      pRV9   d   RpMRpWe9   g   Q h\        P                  ! VR
V RR.R7      pRV9   d   RpMRpWe9   g   Q hR# )r|   r  Tr  Col1r  r  Col2r+  r  r  )rp   r   r'   z'CONSTRAINT test_pk PRIMARY KEY (`Col1`)z'CONSTRAINT test_pk PRIMARY KEY ("Col1")r   r   z)CONSTRAINT test_pk PRIMARY KEY (`A`, `B`)z)CONSTRAINT test_pk PRIMARY KEY ("A", "B")N)	r  r  r  r  r  r  r   r   r  )rV   r  r   r  r   r0  constraint_sentences   &&&    r-   test_api_get_schema_keysr  r  s    ~KKF  	
 I""4(DvSz6C:>?Ev4fEJ)GG,,, VS#JOJ)II,,,r,   c                   R V 9   d:   VP                   P                  \        P                  P	                  RR7      4       T pVP                  V 4      p \        P                  ! RV 4      '       d;   \        P                  ! V RR7      ;_uu_ 4       pVP                  R4       RRR4       \        \        P                  P                  ^4      P                  R4      \        R4      R7      pVP!                  RV R	R
7       \        P"                  ! RV 4      p\        4       p^ p. ROp\        P"                  ! RV ^R7       F2  p	\%        Wi.RR7      p\'        V	4      W,          8X  g   Q hV^,          pK4  	  \(        P*                  ! WV4       VR8X  dI   \        P,                  ! \.        RR7      ;_uu_ 4        \        P0                  ! RV ^R7       RRR4       R# \        4       p
^ p. ROp\        P0                  ! RV ^R7       F2  p	\%        W.RR7      p
\'        V	4      W,          8X  g   Q hV^,          pK4  	  \(        P*                  ! WZ4       R#   + '       g   i     EL; i  + '       g   i     R# ; i)r|   r  r  test_chunksizeTr  Nabcder   Fr  zselect * from test_chunksizer  ignore_indexr~  z^$r  )   r   )r   r   r   r   rC   )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99Y  !12 : 

		a 0094=
B II#UI; <dCD ;D	AE##$BDTUVtm$75zUX%%%	Q W
 $% $$]].d;;/C <; {''(8$!LE4-d;Du:)))FA M
 	d)K :992 <;;s   I8I'I$	'I8	c                   V R 8X  do   \        RRR7      pVe^   \        VP                  4      \        R4      8  d;   VP                  P	                  \
        P                  P                  RRR7      4       VP                  V 4      p \        P                  ! R	V 4      '       d;   \        P                  ! V RR
7      ;_uu_ 4       pVP                  R	4       RRR4       \        R. ROR. RO/4      pVP                  4       pVR,          P                  R4      VR&   VP!                  R	V RR7       \        P"                  ! RV 4      p\$        P&                  ! Wd4       R#   + '       g   i     L; i)rH  rD  rt   ru   Nz0.9.0z:categorical dtype not implemented for ADBC postgres driverTr  test_categoricalr  	person_idperson_namecategoryFr  zSELECT * FROM test_categoricalr  )John P. Doez	Jane Dover  )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99Y  !34 : 
F	

B '')C]+22:>CJJ&DJ>


=t
DC#" :9s   EE/	c                N   VP                  V 4      p \        P                  ! R V 4      '       d;   \        P                  ! V RR7      ;_uu_ 4       pVP	                  R 4       RRR4       \        ^^.^^..RR.R7      pVP                  R V RR7       R#   + '       g   i     L;; i)	test_unicodeTr  N   é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99Y  0 : 
QFQF#fc]	;BII>t5I9	 :9s   BB$	c                   T pVP                  V 4      p \        P                  ! R V 4      '       d;   \        P                  ! V RR7      ;_uu_ 4       pVP	                  R 4       RRR4       \        R. RORR\        P                  R./4      pVP                  R V RR	7       R
V9   d   RpMRp\        P                  ! WP4      p\        P                  ! Wd4       R#   + '       g   i     L; i)zd1187b08-4943-4c8d-a7f6Tr  Nr   r   r   r  Fr  r>  z'SELECT * FROM "d1187b08-4943-4c8d-a7f6"z'SELECT * FROM `d1187b08-4943-4c8d-a7f6`r   r  rC   )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99Y  !:; : 
CC#rvvs);<	=BII,$eIDY99


U
)C#" :9s   CC+	c                   R V 9   d{   \         P                  ! R4      p\        VP                  4      \        R4      8  d   V R9   g;   VP                  P                  \         P                  P                  RRR7      4       VP                  V 4      p \        P                  ! RV 4      '       d;   \        P                  ! V RR7      ;_uu_ 4       pVP                  R4       RRR4       \        R	. ROR
. ROR^/4      pVP                  RV RR7       \        P                   ! RV 4      p\        . RO. RO. RO.. ROR7      p\"        P$                  ! WV4       R#   + '       g   i     L; i)r|   rC  z16.0z!pyarrow->pandas throws ValueErrorTr  
test_tabler  Nr  r  r   Fr  z)SELECT a, b, a +1 as a, c FROM test_tabler   )rr  rH  r  r  )r  r  rC   r  )rC   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  )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99Y  . : 
CC#qA	BBII<TI7[[DdKF	8$H &+ :9s   EE*	c                B   T pVR 8X  d0   VP                  \        P                  P                  RR7      4       VP	                  V 4      p \
        P                  ! VRV 4       RR.p\
        P                  ! RWR7      pVP                  P                  4       V8X  g   Q hR# )r~  Not Implementedr  r  r   r   r   N)
r  r  r  r  r  r   r  r#   r   r  )rV   r  r   r  colsr  s   &&&   r-   test_read_table_columnsr   	  s     I$$FKK--5F-GH""4(DJJ{L$/:DdAF>>  "d***r,   c                j   T pVR 8X  d0   VP                  \        P                  P                  RR7      4       VP	                  V 4      p \
        P                  ! VRV 4       \
        P                  ! RV RR7      pVP                  P                  R.8X  g   Q h\
        P                  ! RV RR.R7      pVP                  P                  RR.8X  g   Q h\
        P                  ! RV RR.RR	.R
7      pVP                  P                  RR.8X  g   Q hVP                  P                  4       RR	.8X  g   Q hR# )r~  r  r  r  r   r  r   r   r   r   )r  r   N)r  r  r  r  r  r   r  r#   r   r  r   r  )rV   r  r   r  r  s   &&&  r-   test_read_table_index_colr  0	  s    I$$FKK--5F-GH""4(DJJ{L$/dgFF<<'***dsCjIF<<#s+++dsCj3*F <<#s+++>>  "sCj000r,   c                   V R 8X  d0   VP                  \        P                  P                  RR7      4       VP	                  V 4      p \
        P                  ! RV 4      p\
        P                  ! RV 4      p\        P                  ! W#4       \
        P                  ! RV 4      p\
        P                  ! RV 4      p\        P                  ! W#4       R# )r  r  r  r  r6   N)r  r  r  r  r  r   r"   r  r   r  r#   )rV   r  iris_frame1iris_frame2s   &&  r-   test_read_sql_delegater  G	  s    $$KKT  	
 ""4(D$$%94@K,,3T:K+3$$VT2K,,vt,K+3r,   c           
        T p^ RI Hp ^ RIHp V! R4      V! R4      .pV F  p\	        W4      '       dV   VP                  4       ;_uu_ 4       pVP                  4       ;_uu_ 4        VP                  V4       RRR4       RRR4       Ki  VP                  4       ;_uu_ 4        VP                  V4       RRR4       K  	  \        P                  ! R4      ;_uu_ 4        \        P                  ! RV4       \        P                  ! RV4       RRR4       R#   + '       g   i     L; i  + '       g   i     EK  ; i  + '       g   i     EK0  ; i  + '       g   i     R# ; i)r   rw   r   z,CREATE TABLE invalid (x INTEGER, y UNKNOWN);z0CREATE TABLE other_table (x INTEGER, y INTEGER);Nother_tablezSELECT * FROM other_table)r<   rx   r   r   ry   r   rk   rM   r   r  r   r#   r"   )rc  rV   rx   r   
query_listr  s   &     r-   test_not_reflect_all_tablesr  Z	  s    D( 	;<?@J
 d##4ZZ\\LL' "   U#   
	#	#D	)	)=$/6= 
*	) "\    
*	)	)s<   D*&D8D*"D?/ED'"D**D<?EE%	c           	     Z   T pVR 8X  g   RV9   d0   VP                  \        P                  P                  RR7      4       VP	                  V 4      p \
        P                  ! \        RR7      ;_uu_ 4        \        P                  ! V 4      ;_uu_ 4       pVP                  RR4       RRR4       RRR4       \
        P                  ! R4      ;_uu_ 4        VP                  R	V R
7       RRR4       R#   + '       g   i     LT; i  + '       g   i     L_; i  + '       g   i     R# ; i)r~  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  N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	  s    I$$)(;FKK--5M-NO""4(D		#	#J
 
 __T""b##Hb1 #
 
	#	#D	)	)T: 
*	)	 #"
 
 
*	)	)s0   5DC3	'DD3D>DD	D*	c                   VP                  V 4      p ^ RIHp \        R\	        RR.RR7      /4      p\
        P                  ! V 4      ;_uu_ 4       p\
        P                  ! RWCR7      p\        VP                  P                  R,          P                  V4      '       g   Q h R	R	R	4       R	#   + '       g   i     R	# ; i)
r   )	TIMESTAMPr   2014-12-12 01:542014-12-11 02:54Tutc	test_typer   N)r  r<   r$  r   r   r   r   SQLTablery   r  r   r   )rV   r  r$  r   r  r  s   &&    r-   test_sqlalchemy_type_mappingr,  	  s    ""4(D$ 
	02DE4PQ
B 
		"["7%++--/44i@@@@ 
			s   AB--B>	zinteger, expectedr  BIGINTr   c                f   VP                  V 4      p \        ^ ^.R.VR7      p\        P                  ! V 4      ;_uu_ 4       p\        P                  ! RWTR7      p\        VP                  P                  P                  P                  4      pRRR4       XV8X  g   Q hR#   + '       g   i     L; i)r   r  r   r>   r)  r*  N)
r  r   r   r   r+  r   r  r   r  r   )rV   r  r  r  r   r  r  r  s   &&&&    r-   test_sqlalchemy_integer_mappingr0  	  s    . ""4(D	Aq6C5	8B			"["7U[[]]__))* 
 X	 
	s   AB  B0	r  uint64UInt64c           
     p   VP                  V 4      p \        ^ ^.R.VR7      p\        P                  ! V 4      ;_uu_ 4       p\        P
                  ! \        RR7      ;_uu_ 4        \        P                  ! RWCR7       RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)r   r  r/  z1Unsigned 64 bit integer datatype is not supportedr  r)  r*  N)r  r   r   r   r  r  r  r+  )rV   r  r  r   r  s   &&&  r-   (test_sqlalchemy_integer_overload_mappingr4  	  s     ""4(D	Aq6C5	8B			"]]Q
 
 LLb3
 
	
 
 
		s$   %B$&B	?B$B!B$$B5	c                   \         P                  ! R 4       \        V 4      pRV,           pRpVP                  WTRRR7       \        P
                  ! WT4      p\        P                  ! WT4      pRp\        P                  ! W4      p	\        P                  ! W&4       \        P                  ! W'4       \        P                  ! W)4       R# )r<   r]  r6   r  Fr  r  N)
r  r  r   r  r   r  r#   r"   r   r  )
r^  r  r   r   db_urir  rf  r   r  ro  s
   &&&       r-   test_database_uri_stringr7  	  s    
%
 y>DD FEE%P,,u-K$$U3K E$$U3K+3+3+3r,   pg8000c                    \         P                  ! R 4       Rp\         P                  ! \        RR7      ;_uu_ 4        \        P
                  ! RV4       RRR4       R#   + '       g   i     R# ; i)r<   z)postgresql+pg8000://user:pass@host/dbnamer8  r  zselect * from tableN)r  r  r  ImportErrorr   r  )r  r6  s   & r-   (test_pg8000_sqlalchemy_passthrough_errorr;  	  sF    
% 9F	{(	3	3*F3 
4	3	3	3s   AA0	c                    T pVP                  V 4      p ^ RIHp RV9   d
   V! R4      pMV! R4      p\        P                  ! W@RR/R7      p\        VR,          4      pVR08X  g   Q hR	# )
r   rw   r>  z%select * from iris where "Name"=:namez#select * from iris where name=:namer   zIris-versicolorr  r;   N)r  r<   rx   r   r  set)rV   r  r  rx   	name_textiris_df	all_namess   &&     r-   test_query_by_text_objrA  	  sp     I""4(DY@A	>?	ll9F<M3NOGGFO$I*++++r,   c                    VP                  V 4      p ^ RIHpHp \	        4       pV! V4      P                  VP                  P                  V! R4      8H  4      p\        P                  ! WPRR/R7      p\        VR,          4      pVR08X  g   Q hR# )r   )	bindparamr  r   r   r  r;   N)r  r<   rC  r  r@   wherer   r;   r   r  r=  )rV   r  rC  r  r6   name_selectr?  r@  s   &&      r-   test_query_by_select_objrF  	  sz    ""4(D
  D,$$TVV[[If4E%EFKll;fm5LMGGFO$I'''r,   c                @   T pVR 8X  d0   VP                  \        P                  P                  RR7      4       VP	                  V 4      p \        R. R	OR. R
O/4      pVP                  RV RR7       \        P                  ! RV 4      p\        P                  ! WC4       R# )r~  r  r  r   z%_variationtest_column_percentageFr  Nr  r  r  r   )r  r  r  r  r  r   r  r   r#   r   r  )rV   r  r  r   r  s   &&   r-   test_column_with_percentagerJ  
  s     I$$FKK--5F-GH""4(D	CM9=	>BII+UIC


5t
<C#"r,   c           	        \         P                  ! \        P                  ! V 4      4      ;_uu_ 4       p\        P
                  ! VR VRR7      ^8X  g   Q h RRR4       \         P                  ! \        P                  ! V 4      4      ;_uu_ 4       p\        P                  ! RV4      pRRR4       \        P                  ! VX4       R#   + '       g   i     L{; i  + '       g   i     L<; i)test_frame3_legacyFrs  Nz!SELECT * FROM test_frame3_legacy;)	rz  r{  rz   r   r   r  r"   r   r  )r^  r   rV   r  s   &&  r-   test_sql_open_closerM  
  s     
		GOOI6	7	74zz+';TOSTTTT 
8 
		GOOI6	7	74##$GN 
8 +v. 
8	7 
8	7s   "C	C	C	C,	c                     R p Rp\         P                  ! \        VR7      ;_uu_ 4        \        P                  ! RV 4       RRR4       R#   + '       g   i     R# ; i)zmysql://root@localhost/pandasz-Using URI string without sqlalchemy installedr  r  N)r  r  r:  r   r  )rV   r  s     r-   test_con_string_import_errorrO  !
  s;    *D
9C	{#	.	.)40 
/	.	.	.s   AA	c            	     J    ! R  R4      p \         P                  ! V ! R4      4      ;_uu_ 4       p\        P                  ! \        RR7      ;_uu_ 4        \
        P                  ! RV4       RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)c                  .    ] tR tRtR R ltR tR tRtR# )htest_con_unknown_dbapi2_class_does_not_error_without_sql_alchemy_installed.<locals>.MockSqliteConnectioni+
  c                   V ^8  d   QhRR/# )rC   returnNoner+   )rE   s   "r-   rF   utest_con_unknown_dbapi2_class_does_not_error_without_sql_alchemy_installed.<locals>.MockSqliteConnection.__annotate__,
  s     	< 	<t 	<r,   c                	<    \         P                  ! V/ VB V n        R # r'  )rz   r{   rV   )selfargskwargss   &*,r-   __init__qtest_con_unknown_dbapi2_class_does_not_error_without_sql_alchemy_installed.<locals>.MockSqliteConnection.__init__,
  s    **D;F;DIr,   c                	.    \        V P                  V4      # r'  )getattrrV   )rX  r   s   &&r-   __getattr__ttest_con_unknown_dbapi2_class_does_not_error_without_sql_alchemy_installed.<locals>.MockSqliteConnection.__getattr__/
  s    499d++r,   c                	:    V P                   P                  4        R # r'  )rV   rT   )rX  s   &r-   rT   ntest_con_unknown_dbapi2_class_does_not_error_without_sql_alchemy_installed.<locals>.MockSqliteConnection.close2
  s    IIOOr,   )rV   N)__name__
__module____qualname____firstlineno__r[  r_  rT   __static_attributes__r+   r,   r-   MockSqliteConnectionrR  +
  s    	<	,	r,   rh  ry  zonly supports SQLAlchemyr  zSELECT 1N)rz  r{  r   r  r  r   r  )rh  rV   s     r-   Jtest_con_unknown_dbapi2_class_does_not_error_without_sql_alchemy_installedri  )
  sj      
		0<	=	='';UVVLLT* W 
>	=VV 
>	=	=s#   %BA>	,B>B	BB"	c                Z   T p\         P                  ! R V4      p\         P                  ! R V4      p\        P                  ! W#4       Rp\
        P                  ! \         P                  VR7      ;_uu_ 4        \         P                  ! RV4       RRR4       R#   + '       g   i     R# ; i)r  z9Execution failed on sql 'iris': near "iris": syntax errorr  r6   N)r   r"   r  r   r  r  r  DatabaseError)r  rV   r  r  r  s   &    r-   test_sqlite_read_sql_delegaterl  :
  sr    D$$%94@K,,3T:K+3
GC	s((	4	4VT" 
5	4	4	4s   7BB*	c                F    \         P                  ! V R 4      pRV9   g   Q hR# )r  r  N)r   r  )r   r0  s   & r-   test_get_schema2rn  E
  s     V4Jz!!!r,   c                   T p\        R \        RR.RR7      /4      p\        P                  ! V4      p\        P                  ! RW2R7      pVP                  4       pVP                  R4       FN  pVP                  4       ^ ,          P                  R4      R 8X  g   K0  VP                  4       ^,          R	8X  d   KN  Q h	  R
# )r   r%  r&  Tr'  r)  r*  
r  r$  N)r   r   r   r   SQLiteTable
sql_schemasplitstrip)r~  rV   r   r  r  r  cols   &      r-   test_sqlite_type_mappingrv  K
  s    D		02DE4PQ
B 
		D	!BOOK6EF||D!99;q>$.99;q>[000 "r,   c                   V R 8X  d   \         P                  ! R4       TP                  V 4      p ^ RIHp \        R. R	OR. R
O/4      p\        P                  ! V RR7      ;_uu_ 4       pVP                  VR4      ^8X  g   Q h RRR4       V! V 4      pVP                  R4      '       g   Q h\        P                  ! V RR7      ;_uu_ 4       pVP                  R4       RRR4       R#   + '       g   i     Lm; i  + '       g   i     R# ; i)r_  #sqlite_str has no inspection systemr   onetwoTr  r  N      ?       @      @      @r  r~  r}  r|  )r  r  r  r<   r   r   r   r   r  r  r  rV   r  r   r  r  insps   &&    r-   test_create_tabler  ]
  s    |9:""4(D"E#7@TUVJ		5	5
L9Q>>> 
6 4=D>>,'''' 
	5	5\* 
6	5 
6	5 
6	5	5s   (C(C;(C8	;D	c           	        V R 8X  d   \         P                  ! R4       TP                  V 4      p ^ RIHp \        R. ROR. RO/4      p\        P                  ! V 4      ;_uu_ 4       pVP                  4       ;_uu_ 4        VP                  VR4      ^8X  g   Q h RRR4       V! V 4      pVP                  R4      '       g   Q hVP                  4       ;_uu_ 4        VP                  R4       RRR4        VP                  4        VP                  R4      '       d   Q h RRR4       R#   + '       g   i     L; i  + '       g   i     LX; i  \         d     LWi ; i  + '       g   i     R# ; i)	r_  rx  r   ry  rz  r  Nr{  r  )r  r  r  r<   r   r   r   r   rU  r  r  r  clear_cacheAttributeErrorr  s   &&    r-   test_drop_tabler  r
  s#   |9:""4(D"E#7@TUVJ			)&&((##J=BBB ) t}~~l++++&&((  . )	 >>,///// 
	(( )(  		 
		sl   &E!?D*	&E!E!D=	-E!6EE!E!*D:5E!=EE!EE!EE!!E2	r  c           	     4   R pVP                  V 4      p\        V4      ;_uu_ 4       pVP                  4       ;_uu_ 4        VP                  W4      VP                  ^ ,          8X  g   Q h RRR4       VP                  4       ;_uu_ 4        VP                  V4      e   Q h RRR4       \        WC4      ^ 8X  g   Q hVP                  V4      '       g   Q h RRR4       R#   + '       g   i     L}; i  + '       g   i     LY; i  + '       g   i     R# ; i)temp_delete_rows_frameN)r  r!   rU  r  r   delete_rowsr   r  )r  r   r  r   rV   r  s   &&&   r-   test_delete_rows_successr  
  s    )J""9-D	4	 	 I&&((##K<@Q@QRS@TTTT ) &&((((4<<< ) $+q000"":.... 
!	 (( )(	 
!	 	 sA   D *C 	+ DC3	"0DD C0+D3D>DD	c                h   \         P                  ! R 4      pRpRV R2pV R8w  d   RV 9  d   VP                  ! V4      p\        R^^.R^^./RR	7      p\        R. ROR. RO/RR	7      pVP	                  V 4      p\        V4      ;_uu_ 4       pVP                  4       ;_uu_ 4       p	V	P                  V4       R
R
R
4       VP                  4       ;_uu_ 4        VP                  WSRRR7       R
R
R
4       \         P                  ! \        P                  P                  4      ;_uu_ 4        VP                  4       ;_uu_ 4        VP                  WcRRR7       R
R
R
4       R
R
R
4       VP                  4       ;_uu_ 4        VP                  RV 2RR	7      p
\        P                  ! W4       R
R
R
4       R
R
R
4       R
#   + '       g   i     EL; i  + '       g   i     L; i  + '       g   i     L; i  + '       g   i     L; i  + '       g   i     Lg; i  + '       g   i     R
# ; i)r<   temp_delete_rows_atomic_framezCREATE TABLE z' (a INTEGER, b INTEGER UNIQUE NOT NULL)r~  r|   r  r  r  r  Nr   Fr  r   r  SELECT * FROM )r         )r   r   r   )r  r  rx   r   r  r!   rU  rM   r  r  r  rv   rk  rV  r   r  )r  r  r<   r   
table_stmtoriginal_dfreplacing_dfrV   r  rX   	result_dfs   &&         r-   test_delete_rows_is_atomicr  
  s   $$\2J0J ,STJ$$y)@__Z0
 S1a&#1v6gFKc9c9=WML""9-D	4	 	 I&&((CKK
# ) &&(([PUV ) ]]2992233**,,   U !  - 4 &&((!,, -W - I !!)9	 ) 
!	 ((( )(
 -, 43 )( 
!	 	 s   H &G 	8 H G	->H +G:	G'G:	! H -H	.H  G	H G$H 'G72G:	:H
H HH  H1	c           	     *   V R 8X  d   \         P                  ! R4       T pVP                  V 4      p \        V 4      ;_uu_ 4       pVP	                  4       ;_uu_ 4        VP                  VR4      ^8X  g   Q hVP                  R4      pRRR4       RRR4       RV9   d   XP                  RR/R7      pXP                  RR	R
7       RVP                  n
        \        P                  ! WR4       R#   + '       g   i     Lo; i  + '       g   i     Lz; i)r_  rx  r~  r  Nr|   r  r  r   T)inplace)r  r  r  r!   rU  r  rV  rename	set_indexr   r   r   r  r  s   &&&   r-   test_roundtripr  
  s    |9:I""4(D	4	 	 I&&((##K1GHAMMM))*NOF ) 
!
 (;Y'GH
Y- FLL&. )( 
!	 s$   D+C/	D/C?:DD	c           	     x   VP                  V 4      p \        V 4      ;_uu_ 4       pVP                  4       ;_uu_ 4        VP                  R 4      pVP	                  4       pVP                  4        RRR4       RRR4       \        X4      . RO8X  g   Q hR#   + '       g   i     L.; i  + '       g   i     L9; ir  )r  r!   rU  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	0B)B&!B))B9	c                n    VP                  V 4      p \        P                  ! R V R7      p\        V4       R# )r6   r  N)r  r   r#   r   r  s   && r-   test_sqlalchemy_read_tabler  
  s,    ""4(D##F5JZ r,   c                    VP                  V 4      p \        P                  ! R V RR.R7      p\        P                  ! VP
                  \        RR.4      4       R# )r6   r7   )rp   r   SepalLength__1N)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                    VP                  V 4      p R p\        P                  ! \        VR7      ;_uu_ 4        \        P
                  ! RV R7       RRR4       R#   + '       g   i     R# ; i)z!Table this_doesnt_exist not foundr  this_doesnt_existr  N)r  r  r  r  r   r#   )rV   r  r  s   && r-   test_read_table_absent_raisesr  
  sH    ""4(D
-C	z	-	-.D9 
.	-	-	-s   AA,	c                |   T pVR 8X  d   \         P                  ! R4       M=RV9   g   RV9   d0   VP                  \         P                  P	                  RR7      4       VP                  V 4      p \        P                  ! RV 4      p\        VP                  P                  P                  \        P                  4      '       g   Q h\        VP                  P                  P                  \        P                  4      '       g   Q h\        VP                   P                  P                  \        P"                  4      '       g   Q h\        VP$                  P                  P                  \        P                  4      '       g   Q h\        VP&                  P                  P                  \(        4      '       g   Q hR# )r_  .types tables not created in sqlite_str fixturer'   r&   z#boolean dtype not inferred properlyr  r   N)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                    VP                  V 4      p \        R R./R7      pVP                  RV RR7      ^8X  g   Q h\        P                  ! RV 4      p\
        P                  ! W#4       R# )i64)r   test_bigintFr  Nl            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 pVR 8X  d   \         P                  ! R4       M6RV9   d0   VP                  \         P                  P	                  RR7      4       VP                  V 4      p \        P                  ! RV 4      p\        VP                  P                  P                  \        P                  4      '       g   Q hR# )r_  r  r&   z"sqlite does not read date properlyr  r   N)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                    VP                  V 4      p \        V 4      p\        R WR7      pVP                  p\        P
                  ! WS4       R# )select * from datetzr  N)r  r   r"   r   r   r   )rV   r  r  r  r   ru  s   &&&   r-   !test_datetime_with_timezone_queryr  ,  sF     ""4(D.t4H 
.	NB


C3)r,   c           
         VP                  V 4      p \        V 4      p\        \        \	        R V ^R7      4      RR7      pVP
                  p\        P                  ! WB4       R# )r  r  Tr  N)r  r   r   r/  r"   r   r   r   )rV   r  r  r   ru  s   &&   r-   +test_datetime_with_timezone_query_chunksizer  ;  sV    ""4(D.t4H	^2DAFG
B 

C3)r,   c                    VP                  V 4      p \        V 4      p\        P                  ! R V 4      pVP	                  4       p\
        P                  ! W44       R# )r   N)r  r   r   r#   ry  r   r  )rV   r  r  r  	exp_frames   &&   r-   !test_datetime_with_timezone_tabler  H  sJ    ""4(D.t4H$/F!!#I&,r,   c           
        T pVP                  V 4      p \        R \        R^RRR7      /4      pVP                  RV RR7      ^8X  g   Q hRV9   d'   VR ,          P                  P                  R	4      VR &   M%VR ,          P                  P                  R
4      VR &   \        P                  ! RV 4      p\        P                  ! WC4       \        P                  ! RV 4      pRV9   dX   \        VP                  R,          \        4      '       g   Q h\        VR ,          4      P                  P!                  R4      VR &   \        P                  ! WC4       R
# )r   2013-01-01 09:00:00
US/Pacificus)periodsr   unittest_datetime_tzFr  r(   r   NzSELECT * FROM test_datetime_tzr&   r   r   )r  r   r   r  dt
tz_converttz_localizer   r#   r   r  r"   ry   locr   r   as_unit)rV   r  r  r  r  s   &&   r-   %test_datetime_with_timezone_roundtripr  R  s'   I""4(D
 	j.lQUVWH ?? 2E?JaOOOy  ((33E: !((44T: 2D9F&+ @$GF9&**V,c2222!&+.1199$?s&+r,   c           	     N   VP                  V 4      p \        R \        R^^4      /^ .R7      pVP                  RV RR7      ^8X  g   Q h\        P
                  ! RV 4      p\        \        P                  ! \        R^^4      .RR7      R .R7      p\        P                  ! W44       R	# )
r   i'  rs  test_datetime_obbFr  M8[us]r  r   N)
r  r   r   r  r   r#   r   r  r   r  )rV   r  r   r  r  s   &&   r-   test_out_of_bounds_datetimer  q  s     ""4(DfhtQ23A3?D;;/T;G1LLL 3T:F
(4A&'x86(H &+r,   c                ,   VP                  V 4      p \        R ^RRR7      P                  R4      p\        R\	        ^4      /VR7      pVP                  RV RR	7      ^8X  g   Q h\        P                  ! RV RR
7      p\        P                  ! WCRR7       R# )z
2018-01-016hr  )r  freqr  Nnumsrs  	foo_table	info_date)r   rp   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  ~  s     ""4(D|QTEPPQUVE&%(+59H??;?OSTTTTT[IF&>r,   c                @   T pVP                  V 4      p \        P                  ! R V 4      pRV9   d   \        M\        P
                  p\        VP                  P                  P                  V4      '       g   Q h\        P                  ! R V R.R7      p\        VP                  P                  P                  \        P
                  4      '       g   Q h\        P                  ! R V RR/R7      p\        VP                  P                  P                  \        P
                  4      '       g   Q h\        P                  ! R V RRR//R7      p\        VP                  P                  P                  \        P
                  4      '       g   Q h\        P                  ! R V R.R7      p\        VP                  P                  P                  \        P
                  4      '       g   Q h\        P                  ! R V RR/R7      p\        VP                  P                  P                  \        P
                  4      '       g   Q h\        P                  ! R V RRR//R7      p\        VP                  P                  P                  \        P
                  4      '       g   Q hR	# )
r   r&   r   r  r  rE   r   rz  r  N)r  r   r#   r  r   r  r   r   r>   r   r   )rV   r  r  r   expected_types   &&   r-   test_date_parsingr    s    I""4(D			GT	*B&)3FMbjj&&++];;;;			GT	{	CBbjj&&++R]];;;;			GT	CV7W	XBbjj&&++R]];;;;			+> ?@
B
 bjj&&++R]];;;;			GT~	FBbmm))..>>>>			GTc7J	KBbmm))..>>>>			GTvsm7T	UBbmm))..>>>>r,   c                   T pVP                  V 4      p \        R \        R^R7      R\        P                  ! R4      /4      pVP                  RV R7      ^8X  g   Q h\        P                  ! RV 4      pVP                  R^R7      pVR	,          pVR ,          P                  R
4      VR &   \        P                  ! WE4       \        P                  ! RV 4      pVP                  R^R7      pRV9   d?   \        VP                  R,          \        4      '       g   Q h\!        VR ,          4      VR &   \        P                  ! WE4       R# )r   r  r  r   r~  test_datetimer  r   )axisNNNr  SELECT * FROM test_datetimer&   Nr  )r  r   r   r   rx  r  r   r#   rl   r   r   r  r"   ry   r  r   r   rV   r  r  r   r  r  s   &&    r-   r  r    s   I""4(D		j.:C3P
B 99/t94999 6F[[q[)F!uHSM((2HSM&+  =tDF[[q[)F9&**V,c2222!&+.s&+r,   c                   T pVP                  V 4      p \        R \        R^R7      R\        P                  ! R4      /4      p\        P
                  VP                  R&   VP                  RV RR7      ^8X  g   Q h\        P                  ! RV 4      pVR,          pVR ,          P                  R	4      VR &   \        P                  ! WE4       \        P                  ! R
V 4      pRV9   dA   \        VP                  R,          \        4      '       g   Q h\!        VR ,          RR7      VR &   \        P                  ! WE4       R# )r   r  r  r   r~  r  Fr  r  r  r  r&   r  ru   Nr  r   r  )r  r   r   r   rx  r	  r  r  r   r#   r   r   r  r"   ry   r   r   r  s   &&    r-   test_datetime_NaTr    s   I""4(D		j.:C3P
B VVBFF6N99/t59AQFFF 6F!uHSM((2HSM&+  =tDF9&**V,c2222!&+h?s&+r,   c                $   VP                  V 4      p \        \        R ^^4      \        R ^^4      .R.R7      pVP                  RV RR7      ^8X  g   Q h\	        RV 4      pVR,          p\        VR,          4      p\        P                  ! WE4       R# )  r  r   	test_dateFr  N)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                   T pVP                  V 4      p \        \        ^	^ ^ 4      \        ^	^^4      .R.R7      pVP                  RV RR7      ^8X  g   Q h\	        RV 4      p\
        P                  ! WT4       Tp\        P                  ! VRVRR7      ^8X  g   Q h\        P                  ! RV4      pVP                  R	 4      p\
        P                  ! Wu4       \        P                  ! VR
V RR7      ^8X  g   Q hRV9   d@   \        P                  ! RV 4      pVP                  R 4      p\
        P                  ! Wu4       \        P                  ! R
V 4      p\
        P                  ! WE4       R# )	   r  r   	test_timeFr  
test_time2rs  zSELECT * FROM test_time2c                $    V P                  R 4      # z%H:%M:%S.%fstrftime_s   &r-   <lambda>$test_datetime_time.<locals>.<lambda>  s    1::m4r,   
test_time3r&   zSELECT * FROM test_time3c                $    V P                  R 4      # r  r  r  s   &r-   r  r     s    qzz-8r,   N)
r  r   r   r  r#   r   r  r   r"   map)rV   r  r~  r  r   r  rc  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                H   VP                  V 4      p \        R\        P                  R7      p\        R\        P                  R7      p\        RVRV/4      pVP                  RV RR7      ^8X  g   Q h\        P                  ! RV 4      p\        P                  ! WERRR	7       R
# )rC   r  g        s1r{  test_read_writeFr  T)check_dtypecheck_exactNi  )r  r   r   r  float32r   r  r   r#   r   r  )rV   r  r  r{  r   r   s   &&    r-   test_mixed_dtype_insertr    s     ""4(D			*B	2::	&B	D"dB'	(B 99+U9CqHHH


.
5C"u$Gr,   c                V   VP                  V 4      p \        R . R	ORR\        P                  R./4      pVP	                  RV RR7      ^8X  g   Q h\
        P                  ! RV 4      p\        P                  ! W24       \
        P                  ! RV 4      p\        P                  ! W24       R# )
r   r   r   r  test_nanFr  SELECT * FROM test_nanNr  )
r  r   r   r	  r  r   r#   r   r  r"   r  s   &&  r-   test_nan_numericr     s     ""4(D	CC#rvvs);<	=B99*$e9<AAA 
D1F&%  8$?F&%r,   c                   VP                  V 4      p \        R . ROR\        P                  \        P                  \        P                  ./4      pVP	                  RV RR7      ^8X  g   Q h\
        P                  ! RV 4      p\        P                  ! W24       VR,          P                  R4      VR&   RVR&   \
        P                  ! RV 4      p\        P                  ! W24       R# )	r   r   r  Fr  r  Nr  r  )r  r   r   r	  r  r   r#   r   r  r   r"   r  s   &&  r-   test_nan_fullcolumnr  %  s     ""4(D	CC"&&"&&"&&)AB	CB99*$e9<AAA 
D1F&% gnnX&BsGBsG 8$?F&%r,   c                t   VP                  V 4      p \        R . R	ORRR\        P                  ./4      pVP	                  RV RR7      ^8X  g   Q hRVP
                  R
&   \        P                  ! RV 4      p\        P                  ! W24       \        P                  ! RV 4      p\        P                  ! W24       R# )r   r   r  r  r  Fr  Nr  r  rC   r   )r  r   r   r	  r  r  r   r#   r   r  r"   r  s   &&  r-   test_nan_stringr  7  s     ""4(D	CC#sBFF);<	=B99*$e9<AAA BFF6N 
D1F&%  8$?F&%r,   c           	     j   R V 9   d;   VP                   P                  \        P                  P	                  RRR7      4       T pVP                  V 4      p \        P                  ! RR.. ROR.R7      pRp\        V 4      ;_uu_ 4       pVP                  4       ;_uu_ 4        VP                  W44      ^8X  g   Q h RRR4       RRR4       VR9   dv   \        P                  ! RV R	2V 4      p. pVP                   FG  p\        P                  ! R
V R2V 4      p	VP                  V	P                  P                  4       4       KI  	  M6^ RIHp
 V
! V 4      pVP%                  V4      pV Uu. uF  qR,          NK  	  ppVR..8X  g   Q hR#   + '       g   i     L; i  + '       g   i     L; iu upi )r|   z)ADBC implementation does not create indexTr  r   r  test_to_sql_saves_indexNzASELECT * FROM sqlite_master WHERE type = 'index' AND tbl_name = ''zPRAGMA index_info()r   column_namesr  r  r  >   r_  r~  )r  r  r  r  r  r  r   r  r!   rU  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  J  s   ~KKB4  	

 I""4(D				-.PSu
B )H	4	 	 I&&((##B1Q666 ) 
! 44  'j+

 xxG((+=gYa)H$OGNN7<<..01   	't}x(.12c^$$c2ug+ )( 
!	 ( 3s*   F!F
	;F*F0
FFF-	c           	     R   T pVP                  V 4      p R pVR8w  d   RV9  d   ^ RIHp V! V4      p\        V 4      ;_uu_ 4       pVP	                  4       ;_uu_ 4       pVP                  V4       RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)'CREATE TABLE test_trans (A INT, B TEXT)r~  r|   rw   N)r  r<   rx   r!   rU  rM   )rV   r  r  rW   rx   r  transs   &&     r-   test_transactionsr  r  s    I""4(D4D$$y)@#Dz	4	 	 I&&((EMM$ ) 
!	 (( 
!	 	 s$   BB	0BBBB&	c           	     (   T pVP                  V 4      p \        V 4      ;_uu_ 4       pVP                  4       ;_uu_ 4       pR pRV9   g   \        V\        4      '       d   VP                  V4       M^ RIHp V! V4      pVP                  V4       RRR4        ! R R\        4      pRp\        V\        4      '       d   ^ RIHp V! V4      p VP                  4       ;_uu_ 4       pVP                  V4       V! R4      h  + '       g   i     Lx; i  + '       g   i     M; i  T d     Mi ; iTP                  4       ;_uu_ 4        TP                  R4      p	RRR4       M  + '       g   i     M; i\        X	4      ^ 8X  g   Q hTP                  4       ;_uu_ 4       pTP                  T4       TP                  R4      p
RRR4       M  + '       g   i     M; i\        X
4      ^8X  g   Q h RRR4       R#   + '       g   i     R# ; i)	r  r|   rw   Nc                      ] tR tRtRtR# )1test_transaction_rollback.<locals>.DummyExceptioni  r+   N)rc  rd  re  rf  rg  r+   r,   r-   DummyExceptionr    s    r,   r  z/INSERT INTO test_trans (A,B) VALUES (1, 'blah')r  zSELECT * FROM test_trans)r  r!   rU  ry   r   rM   r<   rx   	Exceptionr   rV  r  )rV   r  r  r  r  rW   rx   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   H  AD	=H D''D	DH D$D'#H $D''D1.H 0D11H E'		H 'E722H $#G		H G H  H	c           	        V R 8X  d0   VP                  \        P                  P                  RR7      4       TP	                  V 4      p ^ RIHp ^ RIHp Rp\        P                  ! W%V R7      pVP                  R,          pV! V4      p\        W4      '       dU   V P                  4       ;_uu_ 4       pVP                  4       ;_uu_ 4        VP                  V4       RRR4       RRR4       MV P                  V4       \        P                   ! WP4      p	\"        P$                  ! WR	R
7       R#   + '       g   i     LZ; i  + '       g   i     LS; i)r_  z(test does not support sqlite_str fixturer  rw   r   test_get_schema_create_tabler  r  NFr  )r  r  r  r  r  r<   rx   r   r   r   r  r   ry   r   rk   rM   r#   r   r  )
rV   r  r   rx   r   r$  r0  blank_test_dfnewconreturned_dfs
   &&&       r-   r  r    s    
 |KK%OP	
 ""4(D(
(Cd;J$$R(Mj!J$\\^^vz*   ^ 	Z $$S/K+uM   ^s$   2ED/	E/D?:EE	c                   V R 8X  d   \         P                  ! R4       TP                  V 4      p ^ RIHpHp ^ RIHp RR.pRR.p\        WeR7      pVP                  RV R	7      ^8X  g   Q hVP                  R
V RV/R7      ^8X  g   Q hV! 4       pVP                  V R7       VP                  R
,          P                  R,          P                  p	\        W4      '       g   Q hRp
\         P                  ! \         V
R7      ;_uu_ 4        VP                  RV R\"        /R7       RRR4       VP                  RV RV! ^
4      /R7      ^8X  g   Q hVP                  V R7       VP                  R,          P                  R,          P                  p	\        W4      '       g   Q hV	P$                  ^
8X  g   Q hVP                  RWR7      ^8X  g   Q hVP                  V R7       VP                  R,          P                  R,          P                  pVP                  R,          P                  R,          P                  p\        W4      '       g   Q h\        W4      '       g   Q hR#   + '       g   i     ELJ; i)r_  rx  )r   r4   r3   r   r   Nr   
dtype_testr  dtype_test2r   rp   r>   rf   z&The type of B is not a SQLAlchemy typer  r  dtype_test3single_dtype_testg?Tg?N)r  r  r  r<   r   r4   sqlalchemy.schemar3   r   r  reflecttablesr   r   ry   r  r  r   r  )rV   r  r   r4   r3   r  r   r   metasqltyper  sqltypeasqltypebs   &&           r-   
test_dtyper2    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   I$$I5	c                2   V R 8X  d   \         P                  ! R4       T pVP                  V 4      p ^ RIHpHpHpHp ^ RIH	p R\        RR.4      R\        \        R^^4      R.4      R	\        ^R.R
R7      R\        RR.4      /p\        V4      p	Rp
V	P                  WR7      ^8X  g   Q h\        P                  ! W4      pV! 4       pVP!                  V R7       RV9   d   TMTpVP"                  V
,          P$                  p\'        VR,          P(                  V4      '       g   Q h\'        VR,          P(                  V4      '       g   Q h\'        VR	,          P(                  V4      '       g   Q h\'        VR,          P(                  V4      '       g   Q hR# )r_  rx  )r   r   r2   r   r#  BoolTNDate  Intr  r  r2   r  notna_dtype_testr  rf   r'   )r  r  r  r<   r   r   r2   r   r+  r3   r   r   r   r  r   r#   r,  r-  r   ry   r   )rV   r  r  r   r   r2   r   r3   r  r   r$  r  r.  my_typecol_dicts   &&             r-   test_notna_dtyper;    so   |9:I""4(D  + 	d|$q!,d34vq$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                v   V R 8X  d   \         P                  ! R4       TP                  V 4      p ^ RIHpHpHp ^ RIHp Rp\        R\        V.RR7      R\        V.R	R7      R
\        V.R	R7      R\        ^.RR7      R\        ^.RR7      /4      pVP                  RV RRR
V! ^R7      /R7      ^8X  g   Q h\        P                  ! RV 4      p\        P                  ! VR,          P                   ^ ,          ^4      \        P                  ! VR,          P                   ^ ,          ^4      8X  g   Q hV! 4       p	V	P#                  V R7       V	P$                  R,          P&                  p
\)        V
R,          P*                  4      \)        V
R
,          P*                  4      8X  g   Q h\-        V
R,          P*                  V4      '       g   Q h\-        V
R,          P*                  V4      '       g   Q h\-        V
R,          P*                  V4      '       g   Q h\-        V
R,          P*                  V4      '       g   Q hR# )r_  rx  )
BigIntegerr2   r   r#  gYB?f32r  r  f64float64
f64_as_f32i32r  r  r   test_dtypesFr  )	precision)r   rp   r   r  r>   rf   N)r  r  r  r<   r=  r2   r   r+  r3   r   r   r  r   r#   r   roundr   r,  r-  r   r   r   ry   )rV   r  r=  r2   r   r3   Vr   r  r.  r:  s   &&         r-   test_double_precisionrG    s   |9:""4(D 
 +A	61#Y/61#Y/&!I661#W-61#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                   aaaa VP                  V 4      p ^ RIHo R oR oVV3R loVV3R lp\        R. R	O/4      P	                  RV R7      ^8X  g   Q hV! V 4       R# )
r   r   c                4    R p\         P                  ! WR7      # )z'SELECT test_foo_data FROM test_foo_datar  )r   r"   )r
  r  s   & r-   test_select3test_connectable_issue_example.<locals>.test_selectU  s    9!!%88r,   c                .    VP                  R V RR7       R# )test_foo_datar   )r   rp   r  N)r  )r
  r   s   &&r-   test_append3test_connectable_issue_example.<locals>.test_appendY  s    jHMr,   c                (   < S! V 4      pS! W4       R # r'  r+   )rV   foo_datarN  rJ  s   & r-   test_connectable8test_connectable_issue_example.<locals>.test_connectable\  s     t$D#r,   c           	     "  < \        V S4      '       dM   V P                  4       ;_uu_ 4       pVP                  4       ;_uu_ 4        S! V4       R R R 4       R R R 4       R # S! V 4       R #   + '       g   i     L$; i  + '       g   i     R # ; ir'  )ry   r   rk   )connectablerV   r   rR  s   & r-   main,test_connectable_issue_example.<locals>.mainb  s_    k6**$$&&$ZZ\\$T* " '& [) "\ '&&s#   A=	A*	A=*A:5A==B	rM  r  Nr  )r  r   r   r   r  )rV   r  rV  r   rN  rR  rJ  s   && @@@@r-   test_connectable_issue_examplerX  M  sh    ""4(D )9N$* 	?I./66OQU6V		 	Jr,   inputr  infe0barc                   \        V4      pT pVP                  V 4      p R V9   dZ   Rp\        P                  ! \        P
                  P                  VR7      ;_uu_ 4        VP                  RV RR7       RRR4       R# VP                  RV RR7      ^8X  g   Q h\        P                  ! RV 4      p\        P                  ! W64       R#   + '       g   i     R# ; i)r'   Execution failed on sqlr  foobarFr  N)r   r  r  r  r  rv   rk  r  r   r#   r   assert_equal)rV   r  rY  r   r  r  r  s   &&&    r-   test_to_sql_with_negative_npinfr`  q  s     
5	BI""4(D) (]]29922#>>II8UI; ?> yyhDy>!CCC  40
  ?>>s    C		C	c           
       aaa V R 8X  d   \         P                  ! R4       TP                  V 4      p ^ RIHoHoHoHp ^ RIH	pH
p Rp\        RV./4      pV! 4       p ! VVV3R lRV4      pV! V 4      ;_uu_ 4       p	V	P                  4       ;_uu_ 4        V	P                  4       p VP                  P                  V 4       V	P!                  V! VR7      4       V	P#                  4        \$        P&                  ! V! VP(                  4      V R	7      p
R
R
R
4       R
R
R
4       \*        P,                  ! X
V4       R
#   + '       g   i     L1; i  + '       g   i     L<; i)r_  z&test does not work with str connection)r0   r   Unicoder  )Sessiondeclarative_basezHello, World!spamc                  b   < ] tR tRtRtRR./t Z !  ZRR7      t Z !  Z! ^4      RR7      tR	tR
# )'test_temporary_table.<locals>.Temporaryi  	temp_testprefixes	TEMPORARYTprimary_keyF)nullabler+   N)	rc  rd  re  rf  __tablename____table_args__idre  rg  )r0   r   rb  s   r-   	Temporaryrg    s0    #${m4G.gbkE2r,   rq  )re  )r   rp   N)r  r  r  r<   r0   r   rb  r  sqlalchemy.ormrc  rd  r   rk   r
  	__table__rm   addflushr   r"   re  r   r  )rV   r  r  rc  rd  r9  r  Baserq  sessionr   r0   r   rb  s   &&         @@@r-   test_temporary_tablerx    s   |<=""4(D 
  I&9+./HD3 3D 3 
']]__%%'D&&t,KK	y12MMO##y~~(>DIB  
 "h' _ 
s%   =EA<D;	E;EEE	c           
        V R 8X  g   RV 9   d0   VP                  \        P                  P                  RR7      4       VP	                  V 4      p Rp\        V 4      ;_uu_ 4       p\        P                  ! \        VR7      ;_uu_ 4        VP                  VRRR7       R	R	R	4       R	R	R	4       R	#   + '       g   i     L; i  + '       g   i     R	# ; i)
r~  r|   z9SQLiteDatabase/ADBCDatabase does not raise for bad enginer  z*engine must be one of 'auto', 'sqlalchemy'r  r   
bad_enginer   N)	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1[-M 2 
!	 11 
!	 	 s$   $%C	B0	C0C ;CC	c           
        VP                  V 4      p \        V 4      ;_uu_ 4       pVP                  4       ;_uu_ 4        VP                  VRRR7      ^8X  g   Q hVP	                  R4      '       g   Q h RRR4       RRR4       \        V4      p\        V R4      pWT8X  g   Q hR#   + '       g   i     L9; i  + '       g   i     LD; i)z `to_sql` with the `engine` paramr   autor{  N)r  r!   rU  r  r  r  r   rj  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(   B82B%	1B%	4B8%B50B88C	c                   VP                  V 4      p \        P                  ! R R4      ;_uu_ 4        \        V 4      ;_uu_ 4       pVP	                  4       ;_uu_ 4        VP                  VR4      ^8X  g   Q hVP                  R4      '       g   Q h RRR4       RRR4       \        V4      p\        V R4      pWT8X  g   Q h RRR4       R#   + '       g   i     LB; i  + '       g   i     LM; i  + '       g   i     R# ; i)io.sql.enginer<   r   N	r  r  option_contextr!   rU  r  r  r  r   rj  s   &&&   r-   test_options_sqlalchemyr    s     ""4(D			?L	9	9t$$	**,, '']CqHHH **=9999 - %
 +&dM2&&& 
:	9,, %$ 
:	9	9A   C2C	0CCC	'C2CC	C/*C22D	c                   VP                  V 4      p \        P                  ! R R4      ;_uu_ 4        \        V 4      ;_uu_ 4       pVP	                  4       ;_uu_ 4        VP                  VR4      ^8X  g   Q hVP                  R4      '       g   Q h RRR4       RRR4       \        V4      p\        V R4      pWT8X  g   Q h RRR4       R#   + '       g   i     LB; i  + '       g   i     LM; i  + '       g   i     R# ; i)r  r~  r   Nr  rj  s   &&&   r-   test_options_autor    s     ""4(D			?F	3	3t$$	**,, '']CqHHH **=9999 - %
 +&dM2&&& 
4	3,, %$ 
4	3	3r  c                 n   \         P                  ! R 4       \        \        R 4      \        4      '       g   Q h\
        P                  ! RR 4      ;_uu_ 4        \        \        R4      \        4      '       g   Q h\        \        R 4      \        4      '       g   Q h RRR4       \
        P                  ! RR4      ;_uu_ 4        \        \        R4      \        4      '       g   Q h\        \        R 4      \        4      '       g   Q h RRR4       R#   + '       g   i     L}; i  + '       g   i     R# ; i)r<   r  r~  N)r  r  ry   r    r   r  r  r+   r,   r-   test_options_get_enginer    s    
%j.0@AAAA			?L	9	9*V,.>????*\24DEEEE 
: 
		?F	3	3*V,.>????*\24DEEEE 
4	3	 
:	9 
4	3	3s   ADAD#D 	#D4	funcr  r"   c           	        T pVP                  V 4      p R pTp	V	P                  WRRR7       \        P                  ! RV4      ;_uu_ 4        \	        \        V4      ! RV 2WR7      p
V! W$V4      pRRR4       \
        P                  ! X
X4       RV9   d0   VP                  \        P                  P                  R	R
7      4       \        P                  ! RV4      ;_uu_ 4        \	        \        V4      ! RV 2V V^R7      pV! W$V4      pV F  p
\
        P                  ! W4       K  	  RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)r  Fr  r   rp   r   r  mode.string_storageSelect * from dtype_backendNr|   z(adbc does not support chunksize argumentr  )rp   r  r  )r  r  r  r  r^  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    s8    I""4(DE	BII5%9IE			0.	A	AT"UG$d
 *.S	 
B &(+KK%OP	
 
		0.	A	A2t$UG$'	
 *.SF!!&3  
B	A 
B	A 
B	A	As   %D4$AE4E	E	r#   c           	        R V 9   d7   RV 9  d0   VP                  \        P                  P                  RR7      4       T pVP	                  V 4      p RpTp	V	P                  WRRR7       \        P                  ! RV4      ;_uu_ 4        \        \        V4      ! WVR	7      p
V! W$V4      pR
R
R
4       \        P                  ! X
X4       RV9   d   R
# \        P                  ! RV4      ;_uu_ 4        \        \        V4      ! VV V^R7      pV! W$V4      pV F  p
\        P                  ! W4       K  	  R
R
R
4       R
#   + '       g   i     L; i  + '       g   i     R
# ; i)r&   r|   zhSQLite actually returns proper boolean values via read_sql_table, but before pytest refactor was skippedr  r  Fr  r  r  r  N)r  r  )r  r  r  r  r  r  r  r  r^  r   r  r  s   &&&&&&&      r-   !test_read_sql_dtype_backend_tabler  &  s>    4F$.KKM  	
 I""4(DE	BII5%9IE			0.	A	AT"5mL).S 
B &(+			0.	A	A2t$'	
 *.SF!!&3  
B	A 
B	A 
B	A	As   "D>1AE>E	E"	c                   VP                  V 4      p R pTpVP                  W@RRR7       Rp\        P                  ! \        VR7      ;_uu_ 4        \        \        V4      ! W@RR7       RRR4       R#   + '       g   i     R# ; i)	r  Fr  r  zPdtype_backend numpy is invalid, only 'numpy_nullable' and 'pyarrow' are allowed.r  numpyr  N)r  r  r  r  r  r^  r  )rV   r  r  r  r  r   r  s   &&&&   r-   )test_read_sql_invalid_dtype_backend_tabler  V  sm     ""4(DE	BII5%9IE	!  
z	-	-D%W= 
.	-	-	-s   A33B	c                   V ^8  d   QhRR/# rC   rT  r   r+   )rE   s   "r-   rF   rF   g  s      I r,   c                     \        R \        ^\        P                  ^.RR7      R\        . RORR7      R\        R\        P                  R.RR7      R\        . RORR7      R	. ROR
. ROR. ROR. RO/4      # )r  Int64r  r  r   r        @Float64defghr  r  r}  r  )TFNTFTr  r  r   r  r  N)r   r   r  NAr+   r,   r-   r  r  f  sp    BEE1W5	1beeS);y9$$!		
 r,   c                     R  R lp V # )c                   V ^8  d   QhRR/# r  r+   )rE   s   "r-   rF   ,dtype_backend_expected.<locals>.__annotate__x  s     & &) &r,   c                l   VR 8X  d<   \         P                  ! R 4      p\        P                  ! VP	                  4       4      pM\        P
                  ! V 4      p\        R\        ^\        P                  ^.RR7      R\        . RORR7      R\        R\        P                  R.RR7      R	\        . RORR7      R
\        RR\        P                  .RR7      R\        . RORR7      R\        . ROVR7      R\        . ROVR7      /4      pVR 8X  d_   \         P                  ! R 4      p^ RI	H
p \        VP                   Uu/ uF"  pWv! VP                  WW,          RR7      4      bK$  	  up4      pRV9   g   RV9   d4   VR8X  d   VP                  R
RRR/4      pV# VP                  R
RRR/4      pV# u upi )rC  r  r  r  r  r   r  r  r  r  r  TFbooleanr  r  r  )ArrowExtensionArray)from_pandasr'   r&   numpy_nullablezint64[pyarrow]r  r  r  r  r  )r  r  r  
ArrowDtyper  StringDtyper   r   r  pandas.arraysr  r   r  r   )r  r  r  r  string_dtyper   r  ru  s   &&&     r-   r  $dtype_backend_expected.<locals>.funcx  s   I%$$Y/B==5L>>.9LVQqM9VIW5VS"%%-Y?VO9=VT5"%%0	BV/yAVO<@V,LA	
 I%$$Y/B9  "zz) ,RXXbg4X-PQQ)B i8y#8 00YYWc7;< 	 YY%5s<LMN	s   ?(F1r+   )r  s    r-   r  r  v  s    &P Kr,   c                   R V 9   d:   VP                   P                  \        P                  P	                  RR7      4       VP                  V 4      p RRRR/p\        RR.R7      P                  V4      pVP                  4       pVP                  RV R	R
R7       \        RV V^R7       F  p\        P                  ! WT4       K  	  R# )r|   r  r  r  r   r  r  r   r  Fr  r  zSELECT * FROM test)r>   r  N)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7C*F	C:	&	-	-f	5BwwyHII6t5IIF 	 	f/r,   r  r  c           
     |   VP                  V 4      p R p\        R. ROR^/4      pVP                  W@RRR7       \        \        V4      ! RV 2V R\
        P                  /VR7      p\        R\        . RO\
        P                  R7      R\        . ROVR	8X  g   R
MRR7      /4      p\        P                  ! Wg4       R# )r  r  r  Fr  r  r  )r>   r  r  r  r   r  Nr  )r   r   r   )
r  r   r  r^  r  r   r@  r   r   r  )rV   r  r  r  r  r   r  r  s   &&&&    r-   test_read_sql_dtyper    s    
 ""4(DE	CC+	,BII5%9IER
 BJJ#	F 	4%26F%FgG	
H &+r,   c                   T p\        R ^^./RR7      pVP                  RVRR7      ^8X  g   Q h\        P                  ! R4      ;_uu_ 4        \        P
                  ! RV4       RRR4       R#   + '       g   i     R# ; i)r  r   r  test_bigintwarningFr  N)r   r  r   r  r   r#   ra  rV   r   s   &  r-   test_bigint_warningr    sj    D	C!Q=	0B99.D9F!KKK		#	#D	)	)/6 
*	)	)	)s   A//B 	c           	         T p\        R ^^.R^^./4      p\        P                  ! \        RR7      ;_uu_ 4        VP	                  RVRRR7       RRR4       R#   + '       g   i     R# ; i)	r  r  zEmpty table name specifiedr  r  r  Fr  N)r   r  r  r  r  r  s   &  r-   test_valueerror_exceptionr    sX    D	FQFFQF3	4B	z)E	F	F
		rty	F 
G	F	F	Fs   AA+	c           	       a
aa T p^ RI Ho
HoHo ^ RIHpHp V! 4       p ! V
VV3R lRV4      pVP                  4       ;_uu_ 4        VP                  P                  V4       RRR4       V! VR7      pV! 4       ;_uu_ 4       p\        R^ ^.RR	R
./4      pVP                  RVRRR7      ^8X  g   Q hVP                  4        VP                  VP                  VP                  4      p	\        V	4      pRRR4       \!        XP"                  4      RR.8X  g   Q hR#   + '       g   i     L; i  + '       g   i     LC; i)r   r0   r   r4   )rd  sessionmakerc                  T   < ] tR tRtRt Z !  ZRR7      t Z !  Z! ^24      4      tRtR# ),test_row_object_is_named_tuple.<locals>.Testi  r  Trk  r+   N)rc  rd  re  rf  rn  rp  string_columnrg  r  s   r-   Testr    s"    $G.vbz*r,   r  Nrf   rp  r  helloworldr  Fr  r  )r<   r0   r   r4   rr  rd  r  rk   r?   
create_allr   r  rU   r  rp  r  r/  r   )ra  rV   rd  r  	BaseModelr  rc  rw  r   
test_queryr0   r   r4   s   &         @@@r-   test_row_object_is_named_tupler    s   D
 

 !"I+ +y +
 
%%d+ 
%G	gq!fo7IJKII<T)IT	
 	]]477D,>,>?
z" 
 

o6666 
 
s   DA1D/D,	/D?	c           	        T pR p\        RRR./4      pVP                  W!RRR7       \        P                  ! RR4      ;_uu_ 4        \	        W!4      pR	R	R	4       \        P
                  ! \        P                  R
7      p\        RRR./V\        R.VR7      R7      p\        P                  ! XV4       R	#   + '       g   i     Ll; i)r  r  xyFr  )rp   r   r  zfuture.infer_stringTN)na_valuer  )r>   r   )r   r  r  r  r#   r  r   r	  r   r   r  )ra  rV   r  r   r  r>   r  s   &      r-   test_read_sql_string_inferencer    s    DE	C#s$	%BIIeUiI@			0$	7	7, 
8 NNBFF+E	sCjse50IH &(+ 
8	7s   B77C	c           	         T p\        R \        R^^^4      ./RR7      pVP                  RVRRR7       \        P                  ! RV4      P
                  R,          pVR	8X  g   Q hR
# ti  zdatetime64[ns]r  r  r  Fr  select * from testz2020-12-31 12:00:00.000000Nr   r   )r   r   r  r  r  r   )ra  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            	   #     "   \         P                  ! \        P                  ! R \        P                  R7      4      ;_uu_ 4       p V ;_uu_ 4       pVx  RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i5i)ry  )detect_typesN)rz  r{  rz   r   PARSE_DECLTYPESr|  s     r-   sqlite_builtin_detect_typesr  (  sa     			
1H1HI
 
	\TJ 
 
 \
 
 
s6   ABA:A'	A:
B'A72A::B		Bc           	         T p\        R \        R^^^4      ./RR7      pVP                  RVRRR7       \        P                  ! RV4      P
                  R,          pV\        R	4      8X  g   Q hR
# r  )r   r   r  r  r  r   r   )r  rV   r   r  s   &   r-   )test_roundtripping_datetimes_detect_typesr  1  sk    &D	C(4R456>N	OBIIfdiuI=[[-t499$?FY;<<<<r,   c           	     H   T p\        R ^^.RRR.RRR./4      pVP                  4       ;_uu_ 4       pVP                  4       ;_uu_ 4        VP                  R4       VP                  R4       R	R	R	4       R	R	R	4       VP	                  R
VRR7      ^8X  g   Q hVP	                  RVRRR7      ^8X  g   Q hVP	                  RVRRR7      ^8X  g   Q h\
        P                  ! R
V4      p\        P                  ! W$4       \
        P                  ! RV4      p\        P                  ! W%4       \
        P                  ! RVRR7      p\        P                  ! W&4       \
        P                  ! RVRR7      p\        P                  ! W'4       Rp\        P                  ! \        VR7      ;_uu_ 4        \
        P                  ! RVRR7       R	R	R	4       VP                  4       ;_uu_ 4       pVP                  4       ;_uu_ 4        VP                  R4       VP                  R4       R	R	R	4       R	R	R	4       VP	                  RVRRR7      ^8X  g   Q hVP	                  RVRRRR7       VP	                  RVRRRR7      ^8X  g   Q h\
        P                  ! RVRR7      p	\        P                  ! \        W".RR7      V	4       R	#   + '       g   i     EL]; i  + '       g   i     ELi; i  + '       g   i     EL*; i  + '       g   i     L; i  + '       g   i     L; i)r  r  r  r   r  r  r  z$DROP SCHEMA IF EXISTS other CASCADE;zCREATE SCHEMA other;Ntest_schema_publicFr  test_schema_public_explicitr7  )r   rp   r   r  test_schema_otherotherr8  z!Table test_schema_other not foundr  )r   rp   r  r   r  )r   rp   r  r   r  r   Tr  )r   r   rk   r   r  r   r#   r   r  r  r  r  r   )
r:  rV   r   rp   r  r  r  res4r  r  s
   &         r-   test_psycopg2_schema_supportr  :  s   %D 
FQFFS#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} [[ 
< 
.	-	- [ 
sS   K#K	.K/K*)L#K>	%LK	KK'	*K;	>L	LL!	c           	        T p^ RI Hp V! R4      pVP                  4       ;_uu_ 4       pVP                  4       ;_uu_ 4        VP	                  V4       RRR4       RRR4       Rp\
        P                  ! WQ4      p\        ^\        RRR7      .^,          .RR	.^,          R
7      pVR	,          P                  R4      VR	&   \        P                  ! Wg4       \        P                  ! VRR7      ;_uu_ 4       pVP                  R4       RRR4       R#   + '       g   i     L; i  + '       g   i     L; i  + '       g   i     R# ; i)r   rw   z
    CREATE TABLE person
    (
        id serial constraint person_pkey primary key,
        created_dt timestamp with time zone
    );

    INSERT INTO person
        VALUES (1, '2021-01-01T00:00:00Z');
    NzHSELECT * FROM "person" AS p1 INNER JOIN "person" AS p2 ON p1.id = p2.id;2021r   r   rp  
created_dtr   r   Tr  person)r.  rx   r   rk   rM   r  r  r   r   r   r   r  r   r   r  )	r:  rV   rx   rL  rp   r  r  r  r  s	   &        r-   test_self_join_date_columnsr    s    &D#		L 
3YY[[KK%  

 	S  [[)F
Yv%(	)A	-.|8Lq8PH &l3::=IH\&+ 
	5	5X& 
6	5 [ 
 
6	5	5s/   D'D	D'8D:D$D''D7	:E	c           	     2   T p\        R . ROR. RO/4      p\        P                  ! V4      ;_uu_ 4       pVP                  4       ;_uu_ 4        VP	                  VR4      ^8X  g   Q h RRR4       VP                  R4      '       g   Q hVP                  4       ;_uu_ 4        VP                  R4       RRR4       VP                  R4      '       d   Q h RRR4       R#   + '       g   i     L; i  + '       g   i     LG; i  + '       g   i     R# ; i)ry  rz  drop_test_frameNr{  r  )r   r   r   rU  r  r  r  )ra  rV   r  r  s   &   r-   test_create_and_drop_tabler    s    DE#7@TUVJ			)&&((##J0ABaGGG ) ""#45555&&((  !23 ) &&'899999 
	((
 )( 
		sG   DC	(DD!C2	3DDC/*D2D=DD	c                    T p\        \        R ^^4      \        R ^^4      .R.R7      pVP                  RVRR7      ^8X  g   Q h\        RV4      p\        P
                  ! W2P                  \        4      4       R# )r  r  r   r  Fr  zSELECT * FROM test_dateN)r   r   r  r"   r   r  r   r   )r~  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                x   TpV '       g   \        ^	^ ^ 4      \        ^	^^4      .pM7\        R^RR7      p\        VP                  4       4      P	                  R 4      p\        VR.R7      pVP                  RVRR	7      ^8X  g   Q h\        R
V4      pVP	                  R 4      p\        P                  ! Wg4       R# )r  r  r  )r  r   c                "    V P                  4       # r'  )timetz)r  s   &r-   r  +test_sqlite_datetime_time.<locals>.<lambda>  s
    		r,   r  r   r  Fr  zSELECT * FROM test_timec                $    V P                  R 4      # r  r  r  s   &r-   r  r    s    

= 9r,   N)
r   r   r   to_pydatetimer  r   r  r"   r   r  )r  r~  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                ~    V P                  R V R24      pV F  w  rErgrWR8X  g   K  Vu # 	  \        RV RV R24      h)z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                .   T pR R.pRR.p\        W2R7      pVP                  RVR7      ^8X  g   Q hVP                  RVRR/R7      ^8X  g   Q h\        VRR4      R	8X  g   Q h\        VRR4      R8X  g   Q hR
p\        P                  ! \
        VR7      ;_uu_ 4        VP                  RVR\        /R7       RRR4       VP                  RVRR7      ^8X  g   Q h\        VRR 4      R8X  g   Q h\        VRR4      R8X  g   Q hR#   + '       g   i     LU; i)r   r   Nr   r$  r  r%  STRINGr&  r  z!B \(<class 'bool'>\) not a stringr  r  r(  r)  r*  )r   r  r  r  r  r  bool)r~  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   DD	c                t   T pR \        RR.4      R\        \        R^^4      R.4      R\        ^R.RR7      R\        R	R.4      /p\        V4      pR
pVP                  WAR7      ^8X  g   Q h\	        WR 4      R8X  g   Q h\	        WR4      R8X  g   Q h\	        WR4      R8X  g   Q h\	        WR4      R8X  g   Q hR# )r4  TNr5  r6  r7  r  r  r2   r  r8  r  r  r$  REAL)r   r   r   r  r  )r~  rV   r  r   r$  s   &    r-   test_sqlite_notna_dtyper    s    Dd|$q!,d34vq$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                   T p\        ^^.^^..RR.R7      pRp\        P                  ! \        VR7      ;_uu_ 4        VP	                  RVR7       RRR4       \        . RO4       F~  w  rEVP	                  WQR7      ^8X  g   Q h\        P                  ! WQ4       \        ^^.^^..RV.R7      pR	VR
 2pVP	                  WqR7      ^8X  g   Q h\        P                  ! Wq4       K  	  R#   + '       g   i     L; i)r  r  r  r   z$Empty table or column name specifiedr  r  r  Ntest_weird_col_namer  )
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  )r   r  r  r  r  	enumerater   table_exists)r~  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                $   \         R P                  \        R P                  \        P                  R P                  \
        R P                  \        RP                  \        RP                  \        R4      R \        P                  RP                  \        RP                  /	p. pV FU  p\        V\        4      '       d   \        V4      '       d   RpV\        V4      ,          pVP                  V! V4      4       KW  	  V \        V4      ,          # )z'{}'z{:.8f}z{:d}Nc                    R # )NULLr+   )r  s   &r-   r  format_query.<locals>.<lambda>.  s    fr,   z{:.10f}z'{!s}')r   rE   r   r   str_bytesrR   rv  r   r@  r  ry   r   r   rT  )r   rY  _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                    \         P                  ! V4      ;_uu_ 4       pVP                  V 4      P                  4       pRRR4       Xf   R# \	        V4      #   + '       g   i     L!; i)z#Replace removed sql.tquery functionN)r   r!   rM   r   r/  )r  rp   r  r  s   &&  r-   tqueryr"  =  sO    			s	#	#z  '002 
$;4-DI- 
$	#s    AA(	c           
     V   \        \        P                  P                  ^4      P	                  R4      \        \        R4      4      \        R^
RR7      R7      p\        P                  ! VRV RR7      ^
8X  g   Q h\        P                  ! R	V 4      pVP                  Vn        Tp\        P                  ! W!4       R
.\        V4      ,          VR&   VP                  4       p\        \        P                   ! \        V4      4      \        P"                  R7      ^
,           pVP                  4       VR&   \        P                  ! VRV RR7      ^
8X  g   Q h\        P                  ! RV RR7      pVP                  4       pWSn        RVP                  n        \        P                  ! W24       R# )rC   ABCD
2000-01-01r   r  r  r  r  Fr  zselect * from test_tabler  txtr  Idxtest_table2zselect * from test_table2r  N
   r  )r   r   r  r  r  r   r/  r   r   r  r  r   r   r  r  r  rx  r   r   )r~  r   r  r  frame2new_idxs   &     r-   test_xsqlite_basicr.  D  s>   
		a 009d6l#r<E
 ::e,N%PTVVVV\\4nEF ;;FLH&(53u:%E%LZZ\FBIIc&k*"((;b@GLLNF5M::f=nERVXXXX\\5~QVWFzz|HNHNN(+r,   c           
     j   \        \        P                  P                  ^4      P	                  R4      \        \        R4      4      \        R^
RR7      R7      p\        P                  VP                  R&   \        P                  ! VR4      pV P                  4       pVP                  V4       RpVP                  4        F  w  rV\        V.VO5!  p\!        WpR7       K   	  V P#                  4        \        P$                  ! R	V R7      pVP&                  Vn        \(        P*                  ! WR
R7       R# )rC   r$  r%  r   r&  r  r  z(INSERT INTO test VALUES (%s, %s, %s, %s)r  r  gMbP?)rtolNr*  r  )r   r   r  r  r  r   r/  r   r	  r   r   r  rL   rM   iterrowsr   r"  rU   r  r   r   r  )	r~  r   r0  rX   insr  r[   fmt_sqlr  s	   &        r-   test_xsqlite_write_row_by_rowr4  _  s    
		a 009d6l#r<E
 vvEJJtv.J



!CKK

4C.."s)S)w+ # \\.NCF;;FL&d3r,   c           
        \        \        P                  P                  ^4      P	                  R4      \        \        R4      4      \        R^
RR7      R7      p\        P                  ! VR4      pV P                  4       pVP                  V4       RpVP                  ^ ,          p\        P                  ! V 4      ;_uu_ 4       pVP                  V\        V4      4       RRR4       V P                  4        \        P                   ! R	V 4      pVP"                  R
,          Vn        \$        P&                  ! WqR
,          4       R#   + '       g   i     Ln; i)rC   r$  r%  r   r&  r  r  z$INSERT INTO test VALUES (?, ?, ?, ?)Nr  :Nr  Nr*  )r   r   r  r  r  r   r/  r   r   r  rL   rM   r   r!   rT  rU   r  r   r   r  )r~  r   r0  rX   r2  r[   r  r  s   &       r-   test_xsqlite_executer6  v  s    
		a 009d6l#r<E
 v.J



!CKK

0C
**Q-C			~	.	.*3c
+ 
/\\.?F;;r?FL&), 
/	.s   EE	c           
     F   \        \        P                  P                  ^4      P	                  R4      \        \        R4      4      \        R^
RR7      R7      p\        P                  ! VR4      pVP                  4       pV FF  pVP                  R4      p\        V4      ^8X  g   K&  V^ ,          R8X  g   K6  V^,          R	8X  d   KF  Q h	  \        P                  ! VRRR.R
7      pVP                  4       pRV9   g   Q hV P                  4       pVP                  V4       R# )rC   r$  r%  r   r&  r  r   r   DATETIME)r   zPRIMARY KEY ("A", "B")Nr*  )r   r   r  r  r  r   r/  r   r   r  
splitlinesrs  r  rL   rM   )r~  r   r0  lineslinetokensrX   s   &      r-   test_xsqlite_schemar>    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           	        R pV P                  4       pVP                  V4       \        P                  ! V 4      ;_uu_ 4       pVP                  R4       VP                  R4       \        P
                  ! \        P                  RR7      ;_uu_ 4        VP                  R4       RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)c
    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)r]  r  z(INSERT INTO test VALUES('foo', 'bar', 7)N)rL   rM   r   r!   r  r  rk  )r~  r0  rX   r  s   &   r-   test_xsqlite_execute_failrB    s    J 


!CKK
			~	.	.*IJIJ]]3,,4MNNIJ O	 
/	. ON	 
/	.	.s%   AC
B7	%C
7CC

C	c            	     2   R p \         P                  ! \        P                  ! R4      4      ;_uu_ 4       pVP	                  4       pVP                  V 4       \        P                  ! V4      ;_uu_ 4       pVP                  R4       RRR4       RRR4       Rp\        P                  ! \        P                  VR7      ;_uu_ 4        \        RXR7       RRR4       R#   + '       g   i     L`; i  + '       g   i     Lk; i  + '       g   i     R# ; i)r@  ry  rA  Nz$Cannot operate on a closed database.r  r  r  )rz  r{  rz   r   rL   rM   r   r!   r  r  rN  r"  )r0  rV   rX   r  r  s        r-   &test_xsqlite_execute_closed_connectionrD    s    J 
		GOOJ7	8	8DkkmJ""4((JMN )	 
9 1C	w//s	;	;#. 
<	;	 )(	 
9	8 
<	;	;s0   A C25C	C2DC/*C22D	D	c                    \        R \        P                  ! ^4      /4      p\        P                  ! WRRR7      ^8X  g   Q hR# )FromtestkeywordsFrp   r   r   N)r   r   onesr   r  )r~  r   s   & r-   $test_xsqlite_keyword_as_column_namesrJ    s5    	FBGGAJ'	(B::b>OSTTTTr,   c                   \        ^^.R.R7      p\        P                  ! WRRR7      ^8X  g   Q hT p\        R VP	                  R4       4       4      pV^8X  g   Q h\        P
                  ! RV4      p\        P                  ! WA4       R# )	r  c0r   mono_dfFrH  c              3  2   "   T F  q^ ,          x  K  	  R# 5i)r   Nr+   ).0my_c0s   & r-   	<genexpr>4test_xsqlite_onecolumn_of_integer.<locals>.<genexpr>  s     O(Nu(((Ns   zselect * from mono_dfN)r   r   r  sumrM   r  r   r  )r~  rM  con_xthe_sumr  s   &    r-   !test_xsqlite_onecolumn_of_integerrV    s|     A/G::g	OSTTTTEO6M(NOOGa<<\\159F&*r,   c           	        \        R ^^.RRR./4      p\        R . ROR. RO/4      pRpRV 2pRp\        P                  ! \        VR7      ;_uu_ 4        \        P
                  ! VV VRR	7       R
R
R
4       \        W04       \        P
                  ! WVRR	7       Rp\        P                  ! \        VR7      ;_uu_ 4        \        P
                  ! VV VRR	7       R
R
R
4       \        P
                  ! VV VRRR7       \        W@R7      RR.8X  g   Q h\        P
                  ! VV VRRR7      ^8X  g   Q h\        W@R7      . RO8X  g   Q h\        W04       \        P
                  ! VV VRRR7      ^8X  g   Q h\        W@R7      RR.8X  g   Q h\        P
                  ! VV VRRR7      ^8X  g   Q h\        W@R7      . RO8X  g   Q h\        W04       R
#   + '       g   i     ELk; i  + '       g   i     EL; i)r  r  r   r   table_if_existsr  z*'notvalidvalue' is not valid for if_existsr  notvalidvalue)r   rp   r   r  Nr  z&Table 'table_if_exists' already existsr  F)r   rp   r   r  r   r  r   rI  )r   r   Er  r  )r  r   r  r   r   rZ  )r  r  r[  r\  r]  )r   r  r  r  r   r  r  r"  )r~  df_if_exists_1df_if_exists_2r   
sql_selectr  s   &     r-   test_xsqlite_if_existsra    s   Ac
CDN	6?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   GG%G"	%G6	)ra  rc  r_  )rg  ri  re  )rm  ro  rk  ))r  r  )r   rC   )r  r  )r<   fallback))NNr   )Nother_labelrc  )r  Nr  )r  rc  rc  )r   N0)Nr   rd  )int8SMALLINT)Int8rf  )uint8rf  )UInt8rf  )int16rf  )Int16rf  )uint16r  )UInt16r  )r  r  )Int32r  )uint32r-  )UInt32r-  )r   r-  )r  r-  )r  r#   r"   r'  (*  
__future__r   rz  rO   r   r   r   r   decimalr   r   r	   pathlibr   rz   typingr   rF  r  r   r  pandas._configr   pandas._libsr   pandas.compatr   pandas.compat._optionalr   pandas.util._test_decoratorsutil_test_decoratorstdpandasr  r   r   r   r   r   r   r   r   r   r   pandas._testing_testingr   pandas.util.versionr   	pandas.ior   pandas.io.sqlr   r   r   r    r!   r"   r#   r<   r  filterwarnings
single_cpu
pytestmarkfixturer.   r@   r\   r_   rq   r}   r   r   r   r   r   r   r   r   r   r   r   r   r  r
  r  r  r%  r)  r,  r/  r2  r4  r:  r<  r?  rA  rH  rQ  rW  rY  r[  r_  ra  rc  re  rg  ri  rk  rm  ro  rr  rt  rw  r~  r  r  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  r3  r;  rA  rJ  rO  rQ  rX  rZ  r\  r^  rb  rd  rg  rm  rp  rt  r|  r  r  r  r  r  r  r  r  r  r  r  r  rv  rR   r  r  r  r  r  r  r  r  r  r
  r  r  r  r  r  r"  r,  r>   r   r0  r4  r7  skip_if_installedr;  rA  rF  rJ  rM  rO  ri  rl  rn  rv  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r2  r;  rG  rX  infr`  rx  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.  r4  r6  r>  rB  rD  rJ  rV  ra  r+   r,   r-   <module>r     s   "  
           -  . > ) )     '     KKG KK	
  82D> "&D<2(*MZ-;8  
  6 , ,   ,  ,F , ,2230.&".           
  
  
  
   & & & &
  
    $     
  
 $ $
    
      
    
  
    "  *       LL'v{{~~>
LL%V[[^^<  LL,FKKNNC
LL*&++..A  LL-V[[^^D
LL+6;;>>B  LL-V[[^^D
LL+6;;>>B  LL2&++..I
LL0G  LL36;;>>J
LL1H  
    +-CCFXX  88;RR 
 ::=UU 
 
LL'v{{~~>  LL'v{{~~>  LL(?  Q*P,<P?OP   !   1O 2O 1L 2L 1Q 2QB 1M 2M( 1D'?3> 4 2> 1MM 2M 1J 2J !56. 7. !56. 7.$ !<= >6 !56! 7!& !<=! >! !<=	! >	! !78> 9>" !67F 8F> !23!$ 4!$H !78)Az?;", < 9",J !7865 965r 1- 2-. !2315 415h !78 , 9 ,F,2= !56! 7!$ !56! 7!& !56! 7!$ !56! 7! !56	= 7	= 1. 2. 1G 2G 1# 2#" 1# 2#$ 1	/ 2	/ 1	, 2	, 1/ 2/$ 1/ 2/* !56< 7< !674 84n !677H"56	,.HI	w/!&	

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