gL ic43ddlmZddlZddlmZddlZddlmZmZmZmZddl m Z ddl m Z ddl Z ddlmZddlZddlZddlZddlmZdd lmZdd lmZmZdd lmZddlmcmZ ddl!Z"dd l!m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,ddl-m.Z/dd l0m1Z1ddl2m3Z3ddl4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;erddlZnejd?Zoejd@ZpejdAZqejdBZrejdCZsejdDZtejdEZuejdFejzjGejdHejzjGgZxejdIejzjGejdJejzjGgZyejdKejzjGejdLejzjGgZzejdMejzjGejdNejzjGgZ{ejdOejzjGejdPejzjGgZ|ejdQejzjGejdRejzjGgZ}gdSZ~gdTZgdUZexe{ze~zZeye|zezZeze}zezZdVejdWejzjGgZejdXejzjGdYgZejdZejzjGd[gZed\gzezZed]gzezZed^gzezZejzjd%ed_Zejzjd%ed`Zejzjd%edaZejzjd%edbZejzjd%eejzjdcdddgdeZejzjd%eejzjdfdgdhgdiZejzjd%edjZejzjd%edkZejzjd%edlZejzjd%edmZejzjd%ednZejzjd%edoZejzjd%edpZejzjd%edqZejzjd%edrZejzjd%exdsZejzjd%e{ejzjdtdudvgdwZejzjd%e{dxZejzjd%edyZejzjd%exdzZejzjd%e{d{Zd|Zd}Zd~ZdZejzjd%edZejzjd%edZejzjd%edZejzjd%edZejzjd%edZejzjd%edZejzjd%edZejzjd%edZejzjd%edZejzjd%edZejzjd%edZejzjd%edZejzjd%edZejzjd%edZejzjd%edZejzjd%eejzjdgdejzjde3jfddfe3jfddfe3jtddfe3jvddfgdZejzjd%edZejzjd%edZejzjd%edZejzjd%eejzjdgddZejzjd%edZejzjd%edZejzjd%eejzjddeeeedgdZejzjd%edZejzjd%edZejzjd%edZejzjd%edZejzjd%edZejzjd%edZejzjd%edZejzjd%edZejzjd%edZejzjd%edZejzjd%edZejzjd%edZejzjd%edZdZejzjd%edZejzjd%edZejzjd%eejzjdddddddddddddddeejejdk(rdndfgdĄZejzjd%eejzjdddgdȄZejzjd%edɄZe jdʫejzjd%ed˄Zejzjd%ed̄Zejzjd%ed̈́Zejzjd%ed΄ZdτZe jddЄZe jddфZd҄ZdӄZdԄZejzjd%edՄZejzjd%edքZejzjd%edׄZejzjd%ed؄Zejzjd%edلZejzjd%edڄZejzjd%edۄZejzjd%ed܄Zejzjd%ed݄Zejzjd%edބZejzjd%e{ejzjdddggdZejzjd%e{dZejzjd%e{dZejzjd%edZejzjd%edZejzjd%edZejzjd%edZejzjd%edZejzjd%edZejzjd%edZejzjd%edZejzjd%edZejzjd%edZejzjd%edZejzjd%edZejzjd%edZejzjd%edZejzjd%edZejzjd%edZejzjd%edZejzjd%edZejzjd%edZejzjd%edZejzjd%eejzjddejgidej giej gdgdgdZejzjd%edZejzjd%edZejzjd%edZejzjd%edZejzjd%edZdZdZejzjd%eejzjdddgdZejzjd%eejzjdddgd Z ejzjd%eejzjdgd d Z ejd9d Z ejd Z ejzjd%edZ ejzjd%eejzjdejdgejzjdddgdZdZdZdZdZdZdZejdZdZejzjdZejzjdZdZdZejzjddd gd!Zd"Zd#Zd$Zd%Z d&Z!d:d'Z"d(Z#d)Z$d*Z%d+Z&d,Z'd-Z(d.Z)d/Z*d0Z+y(;) annotationsN)closing)datedatetimetime timedelta)StringIOPath) TYPE_CHECKING)using_string_dtype)lib)pa_version_under13p0pa_version_under14p1)import_optional_dependency) DataFrameIndex MultiIndexSeries Timestampconcat date_rangeisna to_datetime to_timedelta)Version)sql)SQLAlchemyEngine SQLDatabaseSQLiteDatabase get_enginepandasSQL_builderread_sql_queryread_sql_tablez=ignore:Passing a BlockManager to DataFrame:DeprecationWarningc&dddddddddd d dd S) Nz1SELECT * FROM iris WHERE Name=? AND SepalLength=?z7SELECT * FROM iris WHERE `Name`=%s AND `SepalLength`=%sz7SELECT * FROM iris WHERE "Name"=%s AND "SepalLength"=%s)sqlitemysql postgresqlz] SELECT * FROM iris WHERE Name=:name AND SepalLength=:length zw SELECT * FROM iris WHERE `Name`=%(name)s AND `SepalLength`=%(length)s zw SELECT * FROM iris WHERE "Name"=%(name)s AND "SepalLength"=%(length)s z&SELECT * FROM iris WHERE Name LIKE '%'z(SELECT * FROM iris WHERE `Name` LIKE '%'z(SELECT * FROM iris WHERE "Name" LIKE '%')read_parametersread_named_parametersread_no_parameters_with_percentr,^/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/pandas/tests/io/test_sql.py sql_stringsr/FsAJNS  " ??F, ' r-cddl}ddlm}m}m}m}m}m}t|jtdk\r|n|}|}|d||d||d||d||d||d |d } | S) Nr)ColumnDoubleFloatMetaDataStringTablez2.0.0iris SepalLength SepalWidth PetalLength PetalWidthName) sqlalchemyr1r2r3r4r5r6r __version__) r>r1r2r3r4r5r6dtypemetadatar7s r.iris_table_metadatarBcsj4459IIFuEzH }e$|U#}e$|U#vvc{# D Kr-c d}|j}|j||jdd5}tj|}t |d}g}|Dcgc]<}t |dt |dt |dt |d|d f>}}|j||ddd|j|jycc}w#1swY/xYw) NzCREATE TABLE iris ( "SepalLength" REAL, "SepalWidth" REAL, "PetalLength" REAL, "PetalWidth" REAL, "Name" TEXT )utf-8newlineencodingz&INSERT INTO iris VALUES(?, ?, ?, ?, ?)r) cursorexecuteopencsvreadernextfloat executemanyclosecommit)conn iris_filestmtcurcsvfilerPrecordsrows r.create_and_load_iris_sqlite3r]|s D ++-CKK w 7'7G$ V 7   c!f c!f c!f c!f A       g&#'$IIKKKM  ''s)C# AC!C#C##C,c d}|j5}|j||jdd5}tj|}t |d}|Dcgc]<}t |dt |dt |dt |d|d f>}}|j||dddddd|jycc}w#1swY'xYw#1swY+xYw) NzCREATE TABLE iris ( "SepalLength" DOUBLE PRECISION, "SepalWidth" DOUBLE PRECISION, "PetalLength" DOUBLE PRECISION, "PetalWidth" DOUBLE PRECISION, "Name" TEXT )rDrEz+INSERT INTO iris VALUES($1, $2, $3, $4, $5)rrHrIrJrK) rLrMrNrOrPrQrRrSrU)rVrWrXrYrZrPr\r[s r.create_and_load_iris_postgresqlr_s D +# D ^^D7^ ; +wZZ(F L@D"  #a&M#a&M#a&M#a&MF  G  OOD' *! ++( KKM   + +++s5%C&'CAC C4C&CC# C&&C/c ddlm}t}|jdd5}t j |}t |}|Dcgc]}tt||}}||j|} |j5} |j| d|j| | j| ddddddycc}w#1swYxYw#1swYyxYw)NrinsertrDrET checkfirstbind)r>rbrBrNrOrPrQdictzipvaluesbegindropcreaterM) rVrWrbr7rZrPheaderr\paramsrXcons r.create_and_load_irisrps!  D w 77G$f4:;S$s63'(;;d|""6* ZZ\ S IIcdI + KKSK ! KK   <   s5%C' C%)C'7CC'C'C$ C''C0cd}t|tjr"|j}|j |yt dd}|rQt||jr;|j5}|j |ddd|j yddlm}||}|j5}|j |dddy#1swYSxYw#1swYyxYw)Nz+CREATE VIEW iris_view AS SELECT * FROM irisadbc_driver_manager.dbapiignoreerrorsrtext) isinstancesqlite3 ConnectionrLrMrrUr>rwrj)rVrXrYadbcrwros r.create_and_load_iris_viewr|s 8D$**+kkm D)*EhW JtT__5 "# D! " KKM ':D " D! " " " " " "s4C=C$C!$C-cddlm}m}m}m}m}m}m}m}|dk(r|n|} |dk(r|n|} |} |d| |d||d| |d||d||d ||d ||d | |d ||d |  } | S)Nr)TEXTBooleanr1DateTimer3Integerr4r6r&typesTextColDateCol IntDateColIntDateOnlyColFloatColIntColBoolColIntColWithNullBoolColWithNull) r>r~rr1rr3rr4r6) dialectr~rr1rr3rr4r6 date_type bool_typerArs r.types_table_metadatars    8+I"h.GIzH y$y)$|W%)z5!x!y)$) ), E Lr-cXd}d}t|tjr4|j}|j ||j ||y|j5}|j ||j ||ddd|j y#1swYxYw)NaCREATE 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(?, ?, ?, ?, ?, ?, ?, ?, ?) )rxryrzrLrMrSrU)rV types_datarXins_stmtrYs r.create_and_load_types_sqlite3rs DH $**+kkm D *- [[] 2c KK  OOHj 1 2  2 2s #$B  B)c|j5}d}|j|d}|j||ddd|jy#1swYxYw)NaCREATE 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) )rLrMrSrU)rVrrYrXs r. create_and_load_types_postgresqlrsY *#  D j)'** KKM+**s (AAc0ddlm}ddlm}t |}||j |}t ||ri|j5}|j5|j|d|j||j|ddddddy|j5|j|d|j||j|dddy#1swYbxYw#1swYyxYw#1swYyxYw)NrraEngineTrcre) r>rbsqlalchemy.enginerrrirxconnectrjrkrlrM)rVrrrbrrrXs r.create_and_load_typesr6s!(  )E %=   +D$ \\^ #t # 4D 1 $ ' T" # # # ZZ\  JJtJ - LLdL # LL     # # # #   s0 D7C4D47D 4C= 9DD  Dc ddlm}m}m}m}m}ddlm}|}|d||d|d}ddidd ig} ||j| } t||ri|j5}|j5|j|d |j| |j| ddddddnO|j5|j|d |j| |j| dddtd d tdd g} t!| dS#1swYxYw#1swYr1rr4r6rbrrrirxrrjrkrlrMrr) rVr1rr4r6rbrrAr datetz_datarX expected_datas r.create_and_load_postgres_datetzrJsY)zH 8XvoxQU?V'W XF 8  8 K &>  -D$ \\^ #t # DT 2 4 ( T" # # # ZZ\  KKK . MMtM $ LL   'E2'E2M -o 66' # # # #   s0/E 7D>7E 7E>E E  EEc|jjdj}|jd}t|tj sJt j|tgd|jd|jdvsJy)Nrffffff@g @gffffff?皙? Iris-setosa)indexr)))r) dtypesiloctype issubclassnpfloatingtmassert_series_equalrcolumnsshape)framepytyper\s r.check_iris_framerwst \\  q ! & &F **Q-C fbkk ** * V7u}}ST U ;;, ,, ,r-cd|}tdd}t|tjr2|j }|j |j dS|rTt||jr>|j 5}|j ||j dcdddSddlm}ddl m }t|trR ||}|j5}|j|jcddd|jSt||r9|j5}|j|jcdddS|j|jS#1swYyxYw#1swYnxYw |jy#jwxYw#1swYyxYw)Nz SELECT count(*) AS count_1 FROM rrrsrtr) create_enginer)rrxryrzrLrMfetchoner>rrrstrrexec_driver_sql scalar_onedispose)rV table_namerXr{rYrrengines r. count_rowsrs -j\ :D %&A( SD$**+kkm{{4 ))+A.. *T4??3 [[] %c KK <<>!$ % % -, dC  !&t,^^%C//5@@BCC f % ?4++D1<<> ? ?''-88: :% % %CCC   ? ?s<$FF1*F F1?GFFF11GGc.|dddd}t|S)NiodatarOziris.csvr )datapath iris_paths r.rrsvuj9I  ?r-c 2dddddddddd dd d d dddddd gS) Nfirst2000-01-03 00:00:00iwi2g333333$@rHF rrrrrrrrr2000-01-04 00:00:00i'Pi\2r,r,r-r.rrsP,#&$ ,$&"#  r-c tdddddddddd }t|}||jj|S)Nrint64rRr)rkeysastype)rrdfs r.types_data_framersN!!" F : B fkkm  # #F ++r-c,gd}gd}t||S)N)rABCD))rgN\^?g9\x`| @g%TO׿g(nI)rg}C?c^Vg~q"BĿg4?)2000-01-05 00:00:00gGͿ?2r¹e?g>ݦ4gёR?)2000-01-06 00:00:00g?{mX?$?gnk3Am?g S?rrrrs r. test_frame1rs+G D< T7 ++r-c,gd}gd}t||S)N)rrr))rigZ)rir)ri Nr)ri͏rrrrs r. test_frame3rs!G D T7 ++r-ct|tjr2|jd}|j Dcgc]}|d c}St dd}|rt||jrtg}|j jj}|D]?}|d|dD]0}|d|d D]!}|d d k(s |d } |j| #2A|Sdd l m } | |jScc}w)Nz0SELECT name FROM sqlite_master WHERE type='view'rrrrsrt catalog_namecatalog_db_schemasdb_schema_namedb_schema_tables table_typeviewrinspect) rxryrzrMfetchallradbc_get_objectsread_all to_pylistappendr>rget_view_names) rVcrr{resultsinfocatalogschematable view_namers r. get_all_viewsrs $**+ LLK L$%JJL1DQ11)*EhW JtT__5G((*335??AD 6'%&:;6F+,!'(:!;6 .&8(-l(;I#NN9566 6N *4=//1 1'2s Dct|tjr2|jd}|j Dcgc]}|d c}St dd}|rt||jrjg}|j jj}|D]5}|dD]+}|dD]!}|dd k(s |d }|j|#-7|Sdd l m } | |jScc}w) Nz1SELECT name FROM sqlite_master WHERE type='table'rrrrsrtrrrrrr) rxryrzrMrrrrrrr>rget_table_names) rVrrr{rrrrrrs r.get_all_tablesrs$**+ LLL M&'jjl3Ua33)*EhW JtT__5G((*335??AD 7%&:;7F!'(:!;7 .'9).|)rxryrzrMrrrUrrLrridentifier_preparerquote_identifierrwrj)rrVr>r{rY quoted_viewrXros r. drop_viewr Ds $**+ +C,F,Fy,Q+RST )*EhW JtT__5 B# 3I;a@A B B++--AARRK#:??%9+#GHD " D! " " B B " "s D?D&D#&D/c#Ktjd}tjd}|jdd|jjj i|j j}|t|D]}t||t|D]}t|||jyw)Nr>pymysqlz*mysql+pymysql://root@localhost:3306/pandas client_flag) connect_args poolclass) pytest importorskipr constantsCLIENTMULTI_STATEMENTSpoolNullPoolrr rrr)r>r rrtbls r.mysql_pymysql_enginer[s$$\2J!!),G %Z % %4#W%6%6%=%=%N%NO//**F Lf% $ f% 3  NNsCCc#BKt||t||ywNrpr|)rrs r.mysql_pymysql_engine_irisrls -y923 c#.Kt||d|yw)Nr'r)rrs r.mysql_pymysql_engine_typesr!ss. GD c#^K|j5}|dddy#1swYyxYwwrr)rrVs r.mysql_pymysql_connr%ys-  % % '4 -! -*-c#^K|j5}|dddy#1swYyxYwwrr$)rrVs r.mysql_pymysql_conn_irisr(s- " * * , r&c#^K|j5}|dddy#1swYyxYwwrr$)r!rVs r.mysql_pymysql_conn_typesr*- # + + - r&c#HKtjd}tjd|jd|jj}|t |D]}t ||t|D]}t|||jyw)Nr>psycopg2z=postgresql+psycopg2://postgres:postgres@localhost:5432/pandasr rrrrrrr rrr)r>rrrs r.postgresql_psycopg2_enginer0s$$\2J  # %Z % %G//**F Lf% $ f% 3  NNsB B"c#BKt||t||ywrr)r0rs r.postgresql_psycopg2_engine_irisr2s 3Y?89 $$rc#.Kt||d|yw)Npostgresr )r0rs r. postgresql_psycopg2_engine_typesr5s4j*M $$r"c#^K|j5}|dddy#1swYyxYwwrr$)r0rVs r.postgresql_psycopg2_connr7r+r&c#TKtjdtjdddlm}d}|j |5}|t |D]}t ||t|D]}t|||jdddy#1swYyxYww)Npyarrowadbc_driver_postgresqlrdbapiz4postgresql://postgres:postgres@localhost:5432/pandas) rrr:r<rrr rrrU)r<urirVrrs r.postgresql_adbc_connr>s  " 01, @C s t !$' "D dD ! "!$' "C sD ! " sAB(A B B(B%!B(c#*Kddl}|} |jd |jd|y#|j$r|jt ||YDwxYw#|j$r|jt |YbwxYwwNrr7 iris_view)adbc_driver_manageradbc_get_table_schemaProgrammingErrorrollbackr_r|)r>rmgrrVs r.postgresql_adbc_irisrGs% D9 ""6*( "";/ J   9 'i89   ( !$'(BB2A#B+A BA  B#*B BBBc#Kddl}|} |jd|y#|j$rK|j|Dcgc]}t |j ncc}w}}t ||Y^wxYww)Nrr)rBrCrDrEtuplerir)r>rrFrVentrynew_datas r.postgresql_adbc_typesrMsr% D9 ""7+ J   9 7ABeE%,,.)BBB(x8 9s1A= A=#A: A$#A:7A=9A::A=c#^K|j5}|dddy#1swYyxYwwrr$)r2rVs r.postgresql_psycopg2_conn_irisrOs- ( 0 0 2d r&c#^K|j5}|dddy#1swYyxYwwrr$)r5rVs r.postgresql_psycopg2_conn_typesrQs- ) 1 1 3t r&c#Ktjdtj5}d|dddy#1swYyxYww)Nr> sqlite:///)rrr ensure_cleanrs r. sqlite_strrUsA  %  "d4&!!"""s*A = A AA c#Ktjd}|j||jj}|t |D]}t ||t|D]}t|||jyw)Nr>r.r/)rUr>rrrs r. sqlite_enginerWs$$\2J %Z % %jJOO)rrrrpr|r)rUrr>rs r.sqlite_str_irisr[sF$$\2J %Z % %j 1F+f% NN r-c#BKt||t||ywrr)rWrs r.sqlite_engine_irisr]s 2m, rc#^K|j5}|dddy#1swYyxYwwrr$)r]rVs r.sqlite_conn_irisr_s-  # # % r&ctjd}|j|}t||d|j |S)Nr>r&)rrrrr)rUrr>rs r.sqlite_str_typesras@$$\2J %Z % %j 1F&*h7 NN r-c#.Kt||d|yw)Nr&r )rWrs r.sqlite_engine_typesrc's-X> r"c#^K|j5}|dddy#1swYyxYwwrr$)rcrVs r.sqlite_conn_typesre-s-  $ $ &$ r&c#Ktjdtjdddlm}t j 5}d|}|j |5}|t|D]}t||t|D]}t|||jddddddy#1swYxYw#1swYyxYww)Nr9adbc_driver_sqliterr;zfile:) rrrgr<rrTrrr rrrU)r<rr=rVrrs r.sqlite_adbc_connrh3s  " ,-(  ddVn ]]3  4J%d+ &$% &%d+ &3% & KKM    s7ACCA B<+C3 C<C CC Cc#*Kddl}|} |jd |jd|y#|j$r|jt ||YDwxYw#|j$r|jt |YbwxYwwr@)rBrCrDrEr]r|)rhrrFrVs r.sqlite_adbc_irisrjDs% D6 ""6*( "";/ J   6 $T956   ( !$'(rHc#vKddl}|} |jd|y#|j$r|jg}|D]Q}t |d|d<|dt |d|d<|j t |jSt|||jYwxYww)Nrrrr) rBrCrDrEintrrJrirrU)rhrrFrVrLrKs r.sqlite_adbc_typesrmVs% D  ""7+ J      3E"5#34E) &'3+.u5F/G+H'( OOE%,,.1 2  3 &dH5  s&B9 B9BB63B95B66B9c#Ktjtjd5}|5}|ddddddy#1swYxYw#1swYyxYww)N:memory:) contextlibrryr closing_connrVs r.sqlite_buildinrslsW   GOOJ7 8L  TJ   s1)AAAA AA AAAc#BKt||t||ywr)r]r|)rsrs r.sqlite_buildin_irisruss ;n- rc#K|Dcgc]}t|j}}t|||ycc}wwr)rJrir)rsrrKs r.sqlite_buildin_typesrwzs:5?@E% '@J@!.*= As ? :?r)marksr%rr(r!r*r0r7r2rOr5rQ)rWrYrU)r]r_r[)rcrerarhr>rGrjrMrmrsrurwcP|j|}|jd|ddy)NtestrFrro if_existsr)getfixturevalueto_sql)rVrrequests r.test_dataframe_to_sqlrs+  " "4 (DFNr-c|dk(rCts9|jjtjj d|j |}|jdd}|jd|ddy) Nr>z=postgres ADBC driver < 1.2 cannot insert index with null typereasonrrzrFr{) r node add_markerrmarkxfailr}rr~)rVrrempty_dfs r.test_dataframe_to_sql_emptyrsu %%.@.B  KK  V     " "4 (D#H OOTXUOKr-c tjdttjdgdtjt dddgdtjt dddgdtjtdgdtjd gd d }d |vr,|d k(r|jdg}tr t}d}n d}d}nt}d}|j|}tj||d5|jd|dddddy#1swYyxYw)Nr9rHz int8[pyarrow]r@timestamp[ns][pyarrow]zdate32[day][pyarrow]zduration[ns][pyarrow]azstring[pyarrow])rlrrrstringr{rhrrzis_sparse is deprecatedzthe 'timedelta'F)matchcheck_stacklevel test_arrowreplacer{)rrrpdarrayrrrrkrDeprecationWarning UserWarningr}rassert_produces_warningr~)rVrr exp_warningmsgs r."test_dataframe_to_sql_arrow_dtypesrs&  " 88QC7$1%&.FHHd4A./7MN9Q<.8OPhhu,=>  B~ % %+/B ,K+CKC!   " "4 (D # #KsU SQ |% PQQQs D44D=c tjdtdtjt ddd|gdi}|j |}|jd|dd y) Nr9rrrHrrrrFr{)rrrrrrr}r~)rVr nulls_fixturers r.*test_dataframe_to_sql_arrow_dtypes_missingrsi  "  $1%}5=U  B  " "4 (DIId|vr:|jjtjj dd|j |}t |d5}|j|d||jdsJ dddt|dt|k(sJy#1swY$xYw) Nrr{z)'method' not implemented for ADBC driversTrstrictneed_transaction test_framer) rrrrrr}r"r~ has_tablerlen)rVrrr pandasSQLs r. test_to_sqlrsVt^  KK  B4    " "4 (D 4$ 719l6B""<0001 dL )S-= == =11s "(B..B7zmode, num_row_coef)rrH)rrIc|j|}t|d5}|j|dd|j|d||jdsJ dddt |d|t |zk(sJy#1swY'xYw)NTrrfailr|r}r"r~rrr)rVmode num_row_coefrrrs r.test_to_sql_existr.s  " "4 (D 4$ 719lfEldC""<0001 dL )\C r4r6rrrxrr#rr) rVrr4r6rrrA autoload_conr7rs r..test_read_iris_query_expression_with_parameterrds ~  KK  E    " "4 (DzH*4T3*?=&TL  >Dt dMS#IJZ $r-c4d|vr:|jjtjj dd|dj D] \}}||vs nt d|d|j|}t||d }t|y) Nr{rTrr)z No part of z( found in sql_strings['read_parameters']rrr) rrrrritemsKeyErrorr}r#r)rVrr/rqueryrs r.*test_read_iris_query_string_with_parameterrs ~  KK  E   !!2399;U E : UTF*RSTT  " "4 (Dt4HIJZ r-c|j|}td|}t|tjd|}t|y)Nr7)r}r$rrrrs r.test_read_iris_tablers@  " "4 (D-JZ VT*JZ r-c<d|vr9|jjtjj d|j |}t td|d}t|t tjd|d}t|y)Nr{+chunksize argument NotImplemented with ADBCrr7rr) rrrrrr}rr$rrrrs r.test_read_iris_table_chunksizers} ~  KK  %R  S   " "4 (DvtqABJZ  FDA>?JZ r-c|j|}gfd}t|d5}|j|d||jdsJ ddddgk(sJt |dt |k(sJy#1swY,xYw)Nc jd|Dcgc]}tt||}}|j|jj |ycc}w)NrH)rrgrhrMrrb)pd_tablerVr data_iterr\rchecks r.samplez$test_to_sql_callable..samplesL Q09:Ss^$:: X^^**,d3;sA TrrrrHr)rVrrrrrs @r.test_to_sql_callablers  " "4 (D E4 4$ 719l6B""<0001 QC<< dL )S-= == = 11s (A;;Bc|}|dk(r/|jtjjd|j |}t j d|}t|jjjtjsJt|jjjtjsJd|vr:t|jjjtj srwrrrr~rxrrjrMrr#rassert_frame_equalr) rVrrwrrproc engine_connres1res2s r.test_read_procedurers  " "4 (D  ( 9 :BII.psql_insert_copys__    7CJEZZ&F   Y ' JJqMii4 8a1QCq 89G|| % ~Quzzl; "ZZ  |2gY6KLI OO O 6 7!9 7sAC"/ C .insert_on_conflict2sj09:Ss^$:: 5;;  VD\ # #C5 # 9 d#;sA3zx CREATE TABLE test_insert_conflict ( a integer PRIMARY KEY, b numeric, c text ); rH@rabcrtest_insert_conflictrFr{rHg @rrrorr|rTr)r}sqlalchemy.dialects.postgresqlrbrrsqlalchemy.sqlrwrxrrjrMrlistr~rr$rrrr) rVrrrwr create_sqlror df_insertinsertedrrrbs @r.,test_insertion_method_on_conflict_do_nothingr%)s  " "4 (D5(# J$ \\^ (s ( J' ( ( (ZZ\ % LL $ %-$u+>H OO #=/4;?I # !  H   6 =F&(+ q==  5534551 ( ( ( ( % %*55<E:E.1E:FF.E7 3E::FFFcTd|vsd|vr/|jtjjd|j |}t gdgdgt d}|jd |d d d tjd |d }tj||y)Nr&r'z2test for public schema only specific to postgresqlrr)rIg@rrrtest_public_schemarFpublic)rror|rrr) rrrrr}rr!r~rr$rr)rVr test_datadf_outs r.test_to_sql_on_public_schemar-cs47d? KK  K    " "4 (D=-8$u+NI  !     4d8 LF)V,r-c< |j|}ddlm ddlm}ddlm} fd}|d}t||rD|j5}|j5|j|ddddddn*|j5|j|dddtgdgtd }|jd |d d tgdgtd }|jd |d d |} tjd |} t!j"| || dk(sJtj$|d5} | j'd dddy#1swYxYw#1swYxYw#1swYxYw#1swYyxYw)Nrrarrvc D|Dcgc]}tt||}}|jj|}|j |j j |j j}|j|}|jScc}w)N)rr) rgrhrrion_duplicate_key_updater$rrrMrrs r.rzDtest_insertion_method_on_conflict_update..insert_on_conflicts|09:Ss^$::ekk"))$/++dmmoo+Qd# ;sBzv CREATE TABLE test_insert_conflict ( a INT PRIMARY KEY, b FLOAT, c VARCHAR(10) ); rrrrrFr{rrrITr)r}sqlalchemy.dialects.mysqlrbrrr rwrxrrjrMrr!r~rr$rrrr) rVrrrwrr"rorrr$rrrbs @r.(test_insertion_method_on_conflict_updater2{s  " "4 (D0(# J$ \\^ (s ( J' ( ( (ZZ\ % LL $ % M?DK 8BII)txuIU-$u+>H # ! H   6 =F&(+ q==  553455- ( ( ( ( % %&55r&c |j|}ddlm}ddlm}dt j j}dt j j}|d|d|d|d |d }t||rD|j5}|j5|j|ddddddn*|j5|j|dddt||}td gd d } tj|| y#1swYnxYw#1swYGxYw#1swYSxYw)Nrrrvgroup_ group_view_z CREATE TABLE zF ( group_id INTEGER, name TEXT ); INSERT INTO z- VALUES (1, 'name'); CREATE VIEW z AS SELECT * FROM z; rHrgroup_idr)r}rrr rwuuiduuid4hexrxrrjrMr$rrr) rVrrrwrrsql_stmtrorrs r.test_read_view_postgresr<s>  " "4 (D(#$**,**+,Jdjjl../0I   ,  H$ \\^ &s & H% & & &ZZ\ # LL " # It ,Fqc6:;H&(+ & & & & # #s0D-"D!4D-D9!D* &D--D69Ecd}d}d}|j||j||j|tjd|}tdgdd}t j ||y)Nz< CREATE TABLE groups ( group_id INTEGER, name TEXT ); z, INSERT INTO groups VALUES (1, 'name'); z1 CREATE VIEW group_view AS SELECT * FROM groups; zSELECT * FROM group_viewrHrr6)rMrrrrr)rs create_table insert_into create_viewrrs r.test_read_view_sqliterAsuL KK <(;';' [[3^ DFqc6:;H&(+r-ctjtd5tjt d5t jd|ddddddy#1swYxYw#1swYyxYw)Nz+pandas.io.sql.execute requires a connectionrP`pandas.io.sql.execute` is deprecated and will be removed in the future version.select * from iris)rr TypeErrorrr FutureWarningrrM)r]s r.test_execute_typeerrorrGsq y(U VB  ' ' 5  B KK,.@ A  BBB B BBBs"A,A A, A) %A,,A5ctjtd5tjd|dddy#1swYyxYw)NrCrrD)rrrFrrM)r_s r.test_execute_deprecatedrIs? # #1 < (*:; <<d|vr9|jjtjj d|j |}d}t j||d}t j||}tjt||y)Nr{rrz1SELECT * FROM iris_view WHERE "SepalLength" < 0.0rr) rrrrrr}rr#rrr)rVrr with_batch without_batchs r.*test_api_read_sql_with_chunksize_no_resultr\Ms ~  KK  %R  S   " "4 (D ?E##E41=J&&ud3M&,mB!**,+  0 0rkc2|}|j|}tjd|r1tj|d5}|j ddddtj |d|tj d|}d|vr|jddi }|j|_|jdd |jjtd|j_ tj||y#1swYxYw) Ntest_frame_roundtripTrro"SELECT * FROM test_frame_roundtripr{__index_level_0__level_0rinplace)r}rrrrr~r#renamer set_indexrrlrrrrVrrrrrs r.test_api_roundtriprsI  " "4 (D }}+T2 __TD 9 9Y  !7 8 9JJ{2=    D$ OF(;Y'GH$$FL Y- LLFLL&+. 9 9s D  Dcd|vr9|jjtjj d|j |}t jd|r1t j|d5}|jddddt j|d|dd t jd | }tj||y#1swYQxYw) Nr{rrryTrFrI)rorrr{rz)rrrrrr}rrrrr~r#rr)rVrrrrs r.test_api_roundtrip_chunksizers ~  KK  %R  S   " "4 (D }}+T2 __TD 9 9Y  !7 8 9JJ     D$ OF&+. 9 9s <CC'c|j|}tj|5}|jd}|j }|j dddt gdk(sJy#1swYxYwNrr)r}rr"rMrrTr!)rVr pandas_sql iris_resultsr\s r.test_api_execute_sqlrsy  " "4 (D  t $ !))*>? ##% 9; ;; ; s 2A44A=c l|}|j|}tjd|}d|vs>d|vs:t|jj j tjrJtjd|dg}t|jj j tjsJ|jjtdddd d d tddd d d d gk(sJtjd|dd i}t|jj j tjsJ|jjtdddd d d tddd d d d gk(sJtjd|d g}t|jj j tjsJ|jjtd ddd d d tdddd d d gk(sJtjd|d di}t|jj j tjsJ|jjtd ddd d d tdddd d d gk(sJtjd|ddi}t|jj j tjsJ|jjtdtdgk(sJy)NSELECT * FROM typesr'r4r parse_datesirHrJrrK%Y-%m-%d %H:%M:%Sri irurz%Y%m%dz 2010-10-10z 2010-12-12) r}rr#rrr@rr datetime64tolistrrrrs r.test_api_date_parsingrsI  " "4 (D  14 8B y J)$;bjj..33R]]CCC  14i[ QB bjj&&++R]] ;; ; ::   $1aA&$1aA&#      34 B bjj&&++R]] ;; ; ::   $1aA&$1aA&#    14l^ TB bmm)).. >> > ==   !$B1a($1aA&&    t,1D B bmm)).. >> > ==   !$B1a($1aA&&     %x0 B b''--22BMM BB B   # # %,,*  r-error)rsraisecoercezread_sql, text, moder)r>fallbackrr>c|}|j|}|dk(r4|dk(r/|jtjj d|j ddi}|||dd|ii} d |vr6| d j t | d <| d j t| d <|d k(r2|j d d d d}ts|dj d|d<tj| |y)Nrrwz failing combination of argumentsrrdatetime64[ns]ru)rorr4rrrMint32)rrrzdatetime64[us]) r}rrrrrrlrRrrr) rVrrrwrrrrrrs r.!test_api_custom_dateparsing_errorr!s$I  " "4 (D w9(>> KK  %G  H  && 3C'DEH   %( FY"9-44S9y$*+<$=$D$DU$K !++??%")!  $"*9"5"<"<=M"NHY &(+r-cD|j|}tjd|dddg}t|jj j tjsJt|jj j tjsJy)Nrrr) index_colr) r}rr#rrr@rrrrrVrrs r.test_api_date_and_indexrXs}  " "4 (D    -  B bhhnn))2== 99 9 bmm)).. >> >r-c f|}|j|}tjd|r1tj|d5}|j ddddt t ddgdj}|dk(r9|jjtjjd d |vrtrt}n d}nt}t!j"|d 5|j%d|}ddddk(sJtj&d|}|dk(r>t t)j*ddddt)j*ddddgd}n|dj-d}t!j.|d|y#1swYIxYw#1swYxYw)Ntest_timedeltaTrz00:00:01z00:00:03foorrhz.sqlite ADBC driver doesn't implement timedeltarr{F)rrrorIzSELECT * FROM test_timedeltar>ri@B)monthsdays microseconds nanosecondsi-r)r}rrrrrrrtrrrrrrrrrrr~r#r DateOffsetrr) rVrrrrrrrrs r.test_api_timedeltargsI  " "4 (D }}%t, __TD 9 3Y  !1 2 3 fj*5EB C L L NB&&  KK  G    ,KK! # #K% HByy&6DyA B 1      > EF** QQWRST QQWRST   e9##G,6%=(3M 3 3(BBsF0F'F$'F0c|}|j|}tdddgi}d|vrd}nd}tjt|5|j d| J dddy#1swYyxYw) Nry??y@r{zdatatypes not supportedzComplex datatypes not supportedr test_complexrz)r}rrrrr~)rVrrrrs r.test_api_complex_raisesrsxI  " "4 (D C&"& 'B '/ z -;yyTy2:::;;;s A''A0zindex_name,index_label,expected))NNr)N other_labelr) index_nameNr)rrr)rN0)Nrrcd|vr9|jjtjj d|j |}t jd|r1t j|d5}|jddddtdtdi}||j_ d }t j|d|| t j||}|j d |k(sJy#1swYvxYw) Nr{-index_label argument NotImplemented with ADBCrtest_index_labelTrr rKSELECT * FROM test_index_label) index_labelr)rrrrrr}rrrrrrangerrr~r#r) rVrrrrr temp_framerrs r.test_api_to_sql_index_labelrs&~  KK  %T  U   " "4 (D }}'. __TD 9 5Y  !3 4 5FE!H-.J&J ,EJJz-tM   ud +E == x '' ' 5 5s <DD c|}d|vr1|jtjjddn=d|vr9|jj tjjd|j |}tjd|r1tj|d 5}|jddddd }td td itjd dg}tj|d|}||k(sJtj d|}|j"ddk(sJ|j"ddk(sJtj|d|dddg}||k(sJtj d|}|j"ddj%ddgk(sJddg|j&_tj|d|d}||k(sJtj d|}|j"ddj%ddgk(sJtj|d|dddg}||k(sJtj d|}|j"ddj%ddgk(sJd}tj*t,|5tj|d|dddddy#1swYxYw#1swYyxYw)Nr'z/MySQL can fail using TEXT without length as keyFrr{rrrTrrKr )A0A1)B0B1rnrrr}rHlevel_1rrr)r|rrIrrrzALength of 'index_label' should match number of levels, which is 2r)rrrrrrr}rrrrrrr from_productr~r#rrrnamesrr) rVrrrexpected_row_countrrrrs r.&test_api_to_sql_index_label_multiindexrsI) KK  HQV   9   KK  %T  U   " "4 (D }}'. __TD 9 5Y  !3 4 5 q%%|\&BCJ ZZ $6 =F ' '' '   ? FE == y (( ( == y (( (ZZ #J F ' '' '   ? FE ==!  # # %#s 33 3"3ZJ ZZ $6 RF ' '' '   ? FE ==!  # # %#s 33 3ZZ #J F ' '' '   ? FE ==!  # # %#s 33 3 MC z -        a 5 5`  s3KK K  Kc|j|}tjd|r1tj|d5}|j ddddt j ddggdddg }|jd| tjd |ddg }tj||d y#1swYmxYw)Ntest_multiindex_roundtripTrrHrline1rI?line2rrrrrrrrz'SELECT * FROM test_multiindex_roundtriprcheck_index_type) r}rrrrr from_recordsr~r#rr)rVrrrrs r.test_api_multiindex_roundtriprs  " "4 (D }}0$7 __TD 9 >Y  !< = >    -.Cj B II.DI9   14C:F"ft< > >s B==Cr@rrc|}|j|}tjd|r1tj|d5}|j ddddt ddgddggdd g }|j d| d k(sJ|j|}d |vrd}nd}tj|||}tj||y#1swYxYw)Ntest_dtype_argumentTr333333?g333333 @ffffff@g333333@rrrrrIr4z(SELECT "A", "B" FROM test_dtype_argumentz$SELECT A, B FROM test_dtype_argumentror@) r}rrrrrr~rr#rr) rVrr@rrrrrrs r.test_api_dtype_argumentr&sI  " "4 (D }}*D1 __TD 9 8Y  !6 7 8 S#Jc +c3Z @B 99/T9 :a ?? ?yyHY:6   4u =F&(+ 8 8s CCc|j|}tddgddggddg}tj|d|d y) NrHrIrJrKrrtest_frame_integer_col_namesrr)r}rrr~rs r.test_api_integer_col_namesrFsB  " "4 (D QFQF#aV 4BJJr149Mr-cd|vr:|jjtjj dd|j |}t j|d|}d|vsJy)Nr{-'get_schema' not implemented for ADBC driversTrrzrzCREATErrrrrr}r get_schemarVrrr"s r.test_api_get_schemarMsj ~  KK  F    " "4 (D V>J z !! !r-cd|vr:|jjtjj dd|j |}t j|d|d}d|vsJy) Nr{rTrrzpypi)rorzCREATE TABLE pypi.rrs r.test_api_get_schema_with_schemar[sn~  KK  F    " "4 (D VfMJ : -- -r-c8d|vr:|jjtjj dd|}|j |}t ddgddgd }|d k(rd }nd d lm}|}tj|d|d|i}d|vsJd |vsJy)Nr{rTr皙?rr皙@rrsINTEGERr)rrzrrr) rrrrrr}rr>rrr)rVrr float_framer@rr"s r.test_api_get_schema_dtypesrjs ~  KK  F   I  " "4 (D3*C:>?K$$& Vc5\RJ z !! !  "" "r-cnd|vr:|jjtjj dd|}|j |}t ddgddgd }tj|d |d }d |vrd}nd}||vsJtj|d |ddg }d |vrd}nd}||vsJy)Nr{rTrrrrr)Col1Col2rzr)rorr'z'CONSTRAINT test_pk PRIMARY KEY (`Col1`)z'CONSTRAINT test_pk PRIMARY KEY ("Col1")rrz)CONSTRAINT test_pk PRIMARY KEY (`A`, `B`)z)CONSTRAINT test_pk PRIMARY KEY ("A", "B")) rrrrrr}rrr)rVrrrrr"constraint_sentences r.test_api_get_schema_keysrs ~  KK  F   I  " "4 (D SzC:> ?Ev4fEJ)GG * ,, , VS#JOJ)II * ,, ,r-chd|vr9|jjtjj d|}|j |}t jd|r1t j|d5}|jddddttjjdjdtd  }|j!d|d t j"d |}t}d}gd}t j"d |dD])} t%|| gd}t'| ||k(sJ|dz }+t)j*|||dk(r=tj,t.d5t j0d|ddddyt} d}gd}t j0d|dD])} t%| | gd} t'| ||k(sJ|dz }+t)j*|| y#1swYxYw#1swYyxYw)Nr{rrtest_chunksizeTrrI)rabcderFrzselect * from test_chunksizer)rrrrrIrr ignore_indexrHrsrr)rrrrrr}rrrrrrrandom default_rngstandard_normalr!r~r#rrrrrNotImplementedErrorr$) rVrrrrrrisizeschunkres3s r.test_api_chunksize_readrs ~  KK  %R  S I  " "4 (D }}%t, __TD 9 3Y  !1 2 3  a 0094= BII#UI;   HH(H%(H1c|dk(rjtdd}|[t|jtdkr:|jj t j jdd|j|}tjd |r1tj|d 5}|jd dddtgd gd d }|j}|djd|d<|j!d |dtj"d|}t%j&||y#1swYxYw)Nr>r:rsrtz0.9.0z:categorical dtype not implemented for ADBC postgres driverTrtest_categoricalrr) John P. Doez Jane Dover) person_id person_namercategoryFrzSELECT * FROM test_categorical)rrr?rrrrrr}rrrrrcopyrr~r#rr)rVrr{rrdf2ress r.test_api_categoricalrs- %%)*B8T  (8(8 9GGC JJ&DJ>  =t DC#r" 5 5s .EE c|j|}tjd|r1tj|d5}|j ddddt ddgddggdd g }|j d|d y#1swY3xYw) N test_unicodeTrrHrIrJrKérrFr)r}rrrrrr~)rVrrrs r.test_api_unicode_column_namer s  " "4 (D }}^T* __TD 9 1Y   0 1 QFQF#fc] ;BII>t5I9  1 1s BB c|}|j|}tjd|r1tj|d5}|j ddddt gddt jdgd}|jd|d d |vrd }nd }tj||}tj||y#1swYtxYw) Nzd1187b08-4943-4c8d-a7f6TrrrHrIrrrFrr4z'SELECT * FROM "d1187b08-4943-4c8d-a7f6"z'SELECT * FROM `d1187b08-4943-4c8d-a7f6`) r}rrrrrrnanr~r#rr)rVrrrrrrs r.test_api_escaped_table_namersI  " "4 (D }}.5 __TD 9 z!pyarrow->pandas throws ValueErrorTr test_tablerrrrHrrrFrz)SELECT a, b, a +1 as a, c FROM test_table)rHrrIrH)rIrrJrH)rJrrKrH)rrrrr)rrrr?rrrrr}rrrrrr~rrrr)rVrparrrrs r.#test_api_read_sql_duplicate_columnsr s~   + BNN #wv 6DD LL # # !!>t"   " "4 (D }}\4( __TD 9 /Y   . / qA BBII> "d ** *r-cL|}|dk(r/|jtjjd|j |}t j |d|t jd|d}|jjdgk(sJt jd|ddg}|jjddgk(sJt jd|ddgd d g }|jjddgk(sJ|jjd d gk(sJy) Nrsrrrrrrrrr)rr) rrrrr}rr~r$rrrr)rVrrrrs r.test_read_table_index_colr@ sI$$FKK--5F-GH  " "4 (DJJ{L$/    dg FF <<  ' ** *    dsCj IF <<  #s ++ +   dsCj3*F <<  #s ++ + >> "sCj 00 0r-c|dk(r/|jtjjd|j |}t j d|}t jd|}tj||t jd|}t jd|}tj||y)Nrurrrr7) rrrrr}rr#rrrr$)rVr iris_frame1 iris_frame2s r.test_read_sql_delegaterW s $$ KK  T    " "4 (D$$%94@K,,3T:K+{3$$VT2K,,vt,K+{3r-c6|}ddlm}ddlm}|d|dg}|D]|}t ||rD|j 5}|j 5|j|ddddddS|j 5|j|ddd~tjd5tjd|tjd|dddy#1swYxYw#1swYxYw#1swYxYw#1swYyxYw)Nrrvrz,CREATE TABLE invalid (x INTEGER, y UNKNOWN);z0CREATE TABLE other_table (x INTEGER, y INTEGER); other_tablezSELECT * FROM other_table) r>rwrrrxrrjrMrrrr$r#)rYrVrwr query_listrs r.test_not_reflect_all_tablesr#j s D( ;< ?@J $ dF # (4ZZ\(LL'( ( ( $ U# $ $ $ # #D )> =$/ 6=>> (( ( ( $ $>>s<C7C+#C7D5-D+C4 0C77D D Dc|}|dk(sd|vr/|jtjjd|j |}t j td5tj|5}|jddddddddt j d5|jd | dddy#1swYCxYw#1swYGxYw#1swYyxYw) Nrsr{zDoes not raise warningrzThe 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.rTABLE1r CaseSensitiver) rrrrr}rrrrrcheck_case_sensitiver~)rVrrrrs r.(test_warning_case_insensitive_table_namer( sI$$)(;FKK--5M-NO  " "4 (D # # J  2__T " 2b  # #Hb 1 2 2 # #D );T:;;  2 2 2 2;;s0'C=CC5C*C CC'*C3cJ|j|}ddlm}tdt ddgdi}t j |5}t jd|| }t|jjdj|sJ dddy#1swYyxYw) Nr) TIMESTAMPr2014-12-12 01:542014-12-11 02:54Tutc test_typer) r}r>r*rrrrSQLTablerxrrr)rVrr*rrrs r.test_sqlalchemy_type_mappingr2 s  " "4 (D$  02DE4PQ B  A" ["B7%++--/44i@@@AAAs ABB"zinteger, expected)int8SMALLINT)Int8r4)uint8r4)UInt8r4)int16r4)Int16r4)uint16r)UInt16r)rr)Int32r)uint32BIGINT)UInt32r>)rr>)Int64r>rr>rc@|j|}tddgdg|}tj|5}tjd||}t |j jjj}ddd|k(sJy#1swYxYw)NrrHrrr@r/r0) r}rrrr1rrrrr)rVrrrrrrrs r.test_sqlalchemy_integer_mappingrC s.  " "4 (D Aq6C5 8B  +" ["B7U[[]]__))*+ X   ++s A BBruint64UInt64c,|j|}tddgdg|}tj|5}t j t d5tjd||ddddddy#1swYxYw#1swYyxYw) NrrHrrBz1Unsigned 64 bit integer datatype is not supportedrr/r0)r}rrrrrrr1)rVrrrrs r.(test_sqlalchemy_integer_overload_mappingrG s  " "4 (D Aq6C5 8B  4" ]] Q  4 LLb 3 444 4 444s#B A>-B >B B  Bctjd|j|}tj5}d|z}d}|j ||ddt j||}t j||}d}t j||} dddtj|tj|tj| y#1swYLxYw)Nr>rSr7rFr{r) rrr}rrTr~rrr$r#r) rVrrrdb_urirr`rrris r.test_database_uri_stringrJ s  %  " "4 (D  8d$6YeTll5&1 ((7 $((7 8+{3+{3+{388s A!C''C0pg8000ctjd|j|}d}tjtd5t j d|dddy#1swYyxYw)Nr>z)postgresql+pg8000://user:pass@host/dbnamerKrzselect * from table)rrr}r ImportErrorrr)rVrrIs r.(test_pg8000_sqlalchemy_passthrough_errorrN s[  %  " "4 (D9F {( 34 *F3444s A$$A-c|}|j|}ddlm}d|vr |d}n|d}tj||ddi}t |d }|dhk(sJy) Nrrvr4z%select * from iris where "Name"=:namez#select * from iris where name=:namerzIris-versicolorrr<)r}r>rwrrset)rVrrrw name_textiris_df all_namess r.test_query_by_text_objrT srI  " "4 (DY@A >? ll9dFrVrrBwhererr<rrrP)rVrrVrr7 name_selectrRrSs r.test_query_by_select_objrY s|  " "4 (D  D,$$TVV[[If4E%EFKll;fm5LMGGFO$I  '' 'r-c6|}|dk(r/|jtjjd|j |}t gdgdd}|j d|d tjd|}tj||y) NrsrrrrJrKr)rz %_variationtest_column_percentageFr) rrrrr}rr~rr$rr)rVrrrrs r.test_column_with_percentager] sI$$FKK--5F-GH  " "4 (D 9= >BII+UIC  5t *D 9C {# .1 )40111s AA cGdd}tj|d5}tjt5t j d|ddddddy#1swYxYw#1swYyxYw)Nc eZdZddZdZdZy)htest_con_unknown_dbapi2_class_does_not_error_without_sql_alchemy_installed..MockSqliteConnectionc8tj|i||_yr)ryrzrV)selfargskwargss r.__init__zqtest_con_unknown_dbapi2_class_does_not_error_without_sql_alchemy_installed..MockSqliteConnection.__init__A s**D;F;DIr-c.t|j|Sr)getattrrV)rgrs r. __getattr__zttest_con_unknown_dbapi2_class_does_not_error_without_sql_alchemy_installed..MockSqliteConnection.__getattr__D s499d+ +r-c8|jjyr)rVrT)rgs r.rTzntest_con_unknown_dbapi2_class_does_not_error_without_sql_alchemy_installed..MockSqliteConnection.closeG s IIOO r-N)returnNone)__name__ __module__ __qualname__rjrmrTr,r-r.MockSqliteConnectionre@ s < , r-rtrozSELECT 1)rprrrrrr)rtrVs r.Jtest_con_unknown_dbapi2_class_does_not_error_without_sql_alchemy_installedru> so   0< =+  ' ' 4 + LLT * +++ + +++s#A4A(A4(A1 -A44A=c0|}tjd|}tjd|}tj||d}t j tj|5tjd|dddy#1swYyxYw)Nrz9Execution failed on sql 'iris': near "iris": syntax errorrr7)rr#rrrrr DatabaseError)rurVrrrs r.test_sqlite_read_sql_delegaterxO sw D$$%94@K,,3T:K+{3 GC s(( 4# VT"###s ,B  Bc<tj|d}d|vsJy)Nrzr)rr)rr"s r.test_get_schema2rzZ s  V4J z !! !r-c^|}tdtddgdi}tj|}tjd||}|j }|j dD]@}|j d jd dk(s)|j d d k(r@Jy) Nrr+r,Tr-r/r0 rrrHr*)rrrr SQLiteTable sql_schemasplitstrip)rsrVrrrrcols r.test_sqlite_type_mappingr` s D  02DE4PQ B  D !B OOK2 6E    F||D!1 99;q>   $ .99;q>[0 001r-c|dk(rtjd|j|}ddlm}t gdgdd}t j|d 5}|j|d d k(sJ ddd||}|jd sJt j|d 5}|jd dddy#1swYVxYw#1swYyxYw) NrU#sqlite_str has no inspection systemrr?@@@rrrronetwoTrrrK) rskipr}r>rrrrr~rrrVrrrrinsps r.test_create_tablerr s | 9:  " "4 (D"#7@TUVJ  5? L9Q>>>? 4=D >>, '' '  5+\*++??++sC .C CCcb|dk(rtjd|j|}ddlm}t gdgdd}t j|5}|j5|j|dd k(sJ ddd||}|jdsJ|j5|jdddd |j|jdrJ dddy#1swY|xYw#1swYCxYw#t$rY@wxYw#1swYyxYw) NrUrrrrrrrrK)rrr}r>rrrrrOr~rr clear_cacheAttributeErrorrs r.test_drop_tabler s* | 9:  " "4 (D"#7@TUVJ   0)  & & ( C##J =B BB Ct}~~l+++  & & ( /   . /     >>,//// 0 0 C C  / /    0 0s`D%*C>3D%6D D%D!D%>D D% D D% D"D%!D""D%%D.c|dk(rtjd|}|j|}t|}|j 5|j |ddk(sJ|j d}dddd|vrjddi }jdd d|j_ tj||y#1swY\xYw) NrUrryrKr{r{r|r}rTr~) rrr}r"rOr~rPrrrrrrrs r.test_roundtripr s | 9:I  " "4 (D!$'I  " " $L -CDIII%%&JKL(;Y'GH Y-FLL&+.LLs )C  Cc6|j|}t|5}|j5|jd}|j }|j ddddddt gdk(sJy#1swY$xYw#1swY(xYwr)r}r"rOrMrrTr!)rVrrrr\s r.test_execute_sqlr s  " "4 (D 4 !I  & & ( !$,,-ABL'')C     !! 9; ;; ;  ! !!!s"B2B BB BBcj|j|}tjd|}t|y)Nr7rz)r}rr$rrs r.test_sqlalchemy_read_tabler s,  " "4 (D##F5JZ r-c|j|}tjd|ddg}tj|j t ddgy)Nr7r8)rorSepalLength__1)r}rr$rassert_index_equalrrrs r."test_sqlalchemy_read_table_columnsr sQ  " "4 (D##D=-"@J*,,e]DT4U.VWr-c|j|}d}tjt|5t j d|dddy#1swYyxYw)Nz!Table this_doesnt_exist not foundrthis_doesnt_existrz)r}rrrrr$)rVrrs r.test_read_table_absent_raisesr sK  " "4 (D -C z -: .D9:::s AAc*|}|dk(rtjdn7d|vsd|vr/|jtjj d|j |}t jd|}t|jjjtjsJt|jjjtjsJt|j jjtj"sJt|j$jjtjsJt|j&jjt(sJy)NrU.types tables not created in sqlite_str fixturer'r&z#boolean dtype not inferred properlyrr)rrrrrr}rr$rrr@rrrrrrrrrrrs r.'test_sqlalchemy_default_type_conversionr s'IL  DE I Y!6 KK  %J  K   " "4 (D  GT *B bkk'',,bkk :: : biioo**BJJ 77 7 bjj&&++RXX 66 6 b''--22BKK @@ @ b((..33V << r-c|}|j|}tjd|}d|vrtntj }t |jjj|sJtjd|dg}t |jjjtj sJtjd|ddi}t |jjjtj sJtjd|dddii}t |jjjtj sJtjd|dg}t |jjjtj sJtjd|ddi}t |jjjtj sJtjd|dd dii}t |jjjtj sJy) Nrr&rrrformatrruunit) r}rr$rrrrrr@rr)rVrrr expected_types r.test_date_parsingrg sI  " "4 (D  GT *B&)3FM 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-cD|}|j|}ttddtjdd}|j d|dk(sJt jd|}|jdd }tj||t jd |}|jdd }d |vrGt|jd tsJt|d|d<tj||ytj||y)NrrJrrr test_datetimerrrH)axisSELECT * FROM test_datetimer&rr)r}rrrrsr~rr$rkrrr#rxrrrrVrrrrs r.rr sI  " "4 (D .:3P B 99/t9 4 99 9   6F [[q[ )F&"%   =t DF [[q[ )F9&**V,c222!&+.s  fb) fb)r-c8|}|j|}ttddtjdd}tj |j d<|jd|d dk(sJtjd|}tj||tjd |}d |vrIt|j d tsJt|d d|d <tj||ytj||y)NrrJrrrrHrrFrrr&rrrrt)r}rrrrsrrr~rr$rrr#rxrrrs r.test_datetime_NaTr sI  " "4 (D .:3P BVVBFF6N 99/t59 AQ FF F   6F&"%   =t DF9&**V,c222!&+h?s  fb) fb)r-c|j|}ttdddtdddgdg}|jd|ddk(sJt d|}|d}t |d}t j||y) NrHrIrr test_dateFr)r}rrr~r$rrr)rVrrrrrs r.test_datetime_dater s  " "4 (D Dq!$d4A&67# GB 99+4u9 = BB B d +C XF2c7#H68,r-c|}|j|}ttdddtdddgdg}|jd|d d k(sJt d|}t j |||}tj|d |d d k(sJtjd |}|jd}t j ||tj|d|d d k(sJd|vr>tjd|}|jd}t j ||tjd|}t j ||y)N rrHrr test_timeFrrI test_time2rnzSELECT * FROM test_time2c$|jdSNz %H:%M:%S.%fstrftime_s r.z$test_datetime_time.. s1::m4r- test_time3r&zSELECT * FROM test_time3c$|jdSrrrs r.rz$test_datetime_time.. sqzz-8r-) r}rrr~r$rrrr#map)rVrrsrrrrYrefs r.test_datetime_timer sDI  " "4 (D DAqM41b>2SE BB 99+4u9 = BB B d +C#r"!K ::b, 5 AQ FF F  7 EC &&4 5C#s# ::b,E :a ?? ?9  !;TBff89 c3'  \4 0C"c"r-c>|j|}tdtj}tdtj}t ||d}|j d|ddk(sJtjd|}tj||dd y) Nirg)s1rvtest_read_writeFrrHT) check_dtype check_exact) r}rrrfloat32rr~rr$rr)rVrrrvrrs r.test_mixed_dtype_insertr s  " "4 (D   *B 2:: &B "B' (B 99+U9 Cq HH H  . 5C"cu$Gr-cJ|j|}tgddtjdgd}|j d|ddk(sJt j d|}tj||t jd |}tj||y) Nrrrrtest_nanFrrJSELECT * FROM test_nan) r}rrrr~rr$rrr#rs r.test_nan_numericr s  " "4 (D #rvvs);< =B 99*$e9 < AA A   D 1F&"%   8$ ?F&"%r-c|j|}tgdtjtjtjgd}|j d|ddk(sJt j d|}tj|||djd|d<d|d<t jd |}tj||y) NrrrFrrJrrr) r}rrrr~rr$rrrr#rs r.test_nan_fullcolumnr s  " "4 (D "&&"&&"&&)AB CB 99*$e9 < AA A   D 1F&"%gnnX&BsGBsG    8$ ?F&"%r-ch|j|}tgdddtjgd}|j d|ddk(sJd|j d <t jd|}tj||t jd |}tj||y) NrrrrrFrrJrIrr) r}rrrr~rrr$rrr#rs r.test_nan_stringr s  " "4 (D #sBFF);< =B 99*$e9 < AA ABFF6N   D 1F&"%   8$ ?F&"%r-cd|vr:|jjtjj dd|}|j |}t jddggddg }d }t|5}|j5|j||d k(sJ dddddd|d vrqtjd |d|}g}|jD]E}tjd|d|} |j| jjGn1ddlm} | |} | j%|}|D cgc]} | d }} |dggk(sJy#1swYxYw#1swYxYwcc} w)Nr{z)ADBC implementation does not create indexTrrrrrrtest_to_sql_saves_indexrI>rUrszASELECT * FROM sqlite_master WHERE type = 'index' AND tbl_name = ''zPRAGMA index_info()rr column_names)rrrrrr}rrr"rOr~rr#rrrr>r get_indexes) rVrrrtbl_namerixsix_colsix_nameix_inforrrs r.test_to_sql_save_indexr $ s ~  KK  B4   I  " "4 (D    -.PSu B)H 4 7I  & & ( 7##B1Q6 66 7744   'j +   xx 2G((+=gYa)H$OG NN7<<..0 1 2 't}x(.121^$22 ug  + 7 777(3s*<E2 E&&E2 E>&E/ +E22E;c|}|j|}d}|dk7rd|vrddlm}||}t|5}|j 5}|j |ddddddy#1swYxYw#1swYyxYw)N'CREATE TABLE test_trans (A INT, B TEXT)rsr{rrv)r}r>rwr"rOrM)rVrrrXrwrtranss r.test_transactionsrL sI  " "4 (D 4D$$y)@#Dz 4  I  & & ( E MM$        s#A8 A,A8,A5 1A88Bcf|}|j|}t|5}|j5}d}d|vst|tr|j |nddlm}||}|j |dddGddt}d}t|trddlm}||} |j5}|j ||d#1swYcxYw#1swYnxYwn #|$rYnwxYw|j5|jd } dddn #1swYnxYwt dk(sJ|j5}|j ||jd } dddn #1swYnxYwt d k(sJ dddy#1swYyxYw) Nrr{rrvc eZdZy)1test_transaction_rollback..DummyExceptionN)rqrrrsr,r-r.DummyExceptionrk s r-rz/INSERT INTO test_trans (A,B) VALUES (1, 'blah')rzSELECT * FROM test_transrH) r}r"rOrxr rMr>rw ExceptionrrPr) rVrrrrrXrwrins_sqlrrs r.test_transaction_rollbackr\ sI  " "4 (D 4 #I  & & ( $ErwrrrrrrxrrjrMr$rr) rVrrrwrrr" blank_test_dfnewcon returned_dfs r.rr s  | KK  %O  P   " "4 (D( (C Sd;J$$Ra(Mj!J$ \\^ +v +z* + + + Z $$S$/K+}uM  + + + +s$D0DDD DD(cP|dk(rtjd|j|}ddlm}m}ddlm}ddg}dd g}t|| }|jd | d k(sJ|jd|d|id k(sJ|}|j||jdjdj} t| |sJd} tjt | 5|jd|dt"iddd|jd|d|did k(sJ|j||jdjdj} t| |sJ| j$dk(sJ|jd||d k(sJ|j||jdjdj} |jdjdj} t| |sJt| |sJy#1swYxYw)NrUrr)r~r5r4rrg?Tg?Nr dtype_testrrI dtype_test2rror@rez&The type of B is not a SQLAlchemy typerr dtype_test3 single_dtype_test)rrr}r>r~r5sqlalchemy.schemar4rr~reflecttablesrrrxrrrr) rVrr~r5r4rrrmetasqltypersqltypeasqltypebs r. test_dtyper. s | 9:  " "4 (D+ :D  %D 4 &B 99,D9 1Q 66 6 99-T#t9 E JJ J :DLLdLkk-(005::G gt $$ $ 2C z -< wDc ;< 99-T#vbz9J9 Kq PP PLLdLkk-(005::G gv && & >>R   99-4t9 D II ILLdL{{./77<AAH{{./77<AAH h %% % h %% %!<rrr3rr'r4rrrr~rr$r(r)rrxr)rVrrrrr3rr4rrrrr*my_typecol_dicts r.test_notna_dtyper8 s_ | 9:I  " "4 (D +d|$q!,d34q$ix0d $  D 4B C 99#49 (A -- - 3%A :DLLdL I-g7G{{3''H hv&++W 55 5 hv&++X 66 6 huo**G 44 4 hw',,e 44 4r-c |dk(rtjd|j|}ddlm}m}m}ddlm}d}tt|gdt|gd t|gd td gd td gd d }|jd|ddd|didk(sJtjd|}tj|dj ddtj|dj ddk(sJ|} | j#|| j$dj&} t)| dj*t)| dj*k(sJt-| dj*|sJt-| dj*|sJt-| dj*|sJt-| dj*|sJy)NrUrr) BigIntegerr3rrgYB?rrfloat64rrr)f32f64 f64_as_f32i32r test_dtypesFrr>) precision)rrorr|r@rHr=rer<r?r)rrr}r>r:r3rr'r4rrr~rr$rroundrr(r)rrrrx) rVrr:r3rr4Vrrr*r7s r.test_double_precisionrF s | 9:  " "4 (D +A 1#Y/1#Y/ !I61#W-1#W-   B !45         ]D 1C 88BuINN1%r *bhhs5zq7I2.N NN N :DLLdL{{=)11H x## $H\,B,G,G(H HH H huo**E 22 2 huo**E 22 2 huo**G 44 4 huo**J 77 7r-c|j|}ddlmddfdfd}tdgdij d| d k(sJ||y) Nrrc4d}tj||S)Nz'SELECT test_foo_data FROM test_foo_datarz)rr#)rrs r. test_selectz3test_connectable_issue_example..test_select/ s9!!%Z88r-c,|jd|dy)N test_foo_datar)rror|)r~)rrs r. test_appendz3test_connectable_issue_example..test_append3 s jH Mr-c(|}||yrr,)rVfoo_datarLrIs r.test_connectablez8test_connectable_issue_example..test_connectable6 st$D(#r-ct|r;|j5}|j5|ddddddy|y#1swYxYw#1swYyxYwr)rxrrj) connectablerVrrOs r.mainz,test_connectable_issue_example..main< se k6 *$$& +$ZZ\+$T*+ + + [ )++ + +s!A AAA AA'rKrrrJ)r}rrrr~)rVrrRrrLrOrIs @@@@r.test_connectable_issue_examplerS' sh  " "4 (D)9N$ * ?I./66OQU6V    Jr-inputrbar)rinfe0cJt|}|}|j|}d|vrtjd}t |j t dkr?d|j vr1tjjd}|j|d}tjt|5|jd |d dddy|jd |d d k(sJtjd |}tj ||y#1swYyxYw) Nr'r z1.0.3rVzGH 36465rzinf cannot be used with MySQLrfoobarFrrH)rr}rrrr?rrrrrrr~rr$r assert_equal) rVrrTrrr rrrs r.test_to_sql_with_negative_npinfrZK s 5 BI  " "4 (D) %%i0 7&& '''*: :w"**?T;;$$J$7D    %- ]]:S 1 < II8UI ; < <yyhDy>!CCC  40 C  < .Temporary temp_testprefixes TEMPORARYT primary_keyrF)nullableN)rqrrrs __tablename____table_args__idr_)r1rr\sr. Temporaryra s0# ${m4 G .gbkE2r-rk)r_)rro)rrr}r>r1rr\rsqlalchemy.ormr]r^rrjr __table__rladdflushrr#r_rr)rVrrr]r^r+rBaserksessionrr1rr\s @@@r.test_temporary_tablerrk s | <=  " "4 (D   I&9+./H  D33D3 J' ]]_ J%%'D    & &t , KK y1 2 MMO##y~~(>DIB  JJ"h'  J JJJs%1D0A;D$=D0$D- )D00D9cb|dk(sd|vr/|jtjjd|j |}d}t |5}tj t|5|j|dd ddddddy#1swYxYw#1swYyxYw) Nrsr{z9SQLiteDatabase/ADBCDatabase does not raise for bad enginerz*engine must be one of 'auto', 'sqlalchemy'rr bad_enginer) rrrrr}r"rrr~)rVrrrrs r.test_invalid_enginerv s 6T> KK  R    " "4 (D 6C 4 NI ]]:S 1 N   [-  M NNN N NNNs$B%3BB%B" B%%B.cF|j|}t|5}|j5|j|dddk(sJ|j dsJ ddddddt |}t |d}||k(sJy#1swY0xYw#1swY4xYw)z `to_sql` with the `engine` paramrautorurKN)r}r"rOr~rrrrds r.test_to_sql_with_sql_enginery s  " "4 (D 4 6I  & & ( 6##Kv#NRSS SS&&}5 55 66 k"K$ .H { "" "  6 666s"B-B B B BB c|j|}tjdd5t|5}|j 5|j |ddk(sJ|j dsJ ddddddt|}t|d}||k(sJ dddy#1swY9xYw#1swY=xYw#1swYyxYw)N io.sql.enginer>rrK r}roption_contextr"rOr~rrrrds r.test_options_sqlalchemyr~ s  " "4 (D  ?L 9' t $ : **, : '' ]CqHHH **=999 : : +& dM2;&&&'' : : : :'': CB5+B)1B59&C)B2 .B55B> :CC c|j|}tjdd5t|5}|j 5|j |ddk(sJ|j dsJ ddddddt|}t|d}||k(sJ dddy#1swY9xYw#1swY=xYw#1swYyxYw)Nr{rxrrKr|rds r.test_options_autor s  " "4 (D  ?F 3' t $ : **, : '' ]CqHHH **=999 : : +& dM2;&&&'' : : : :''rctjdttdtsJt j dd5ttdtsJttdtsJ dddt j dd5ttdtsJttdtsJ dddy#1swY`xYw#1swYyxYw)Nr>r{rx)rrrxr!rrr}r,r-r.test_options_get_enginer s  % j.0@ AA A  ?L 9F*V,.>???*\24DEEEF  ?F 3F*V,.>???*\24DEEEFF FFFFs7C7C*C'*C3cyrr,r,r-r."test_get_engine_auto_error_messager s r-funcrr#cp|}|j|}d}|} | j||ddtjd|5t t|d|||} ||||} dddt j   d|vr/|jtjjd tjd|5t t|d|||d } ||||} | D]} t j | |  dddy#1swYxYw#1swYyxYw) NrzFrrrorr|mode.string_storageSelect * from  dtype_backendr{z(adbc does not support chunksize argumentrrJ)rorr) r}r~rr}rlrrrrrr rVrstring_storagerrdtype_backend_datadtype_backend_expectedrrrrriterators r.test_read_sql_dtype_backendr sRI  " "4 (D E BII5d%9IE  0. AT"T"UG $d- *.-S T &(+  KK  %O  P   0. A 4$72t$UG $'   *.-S 4F  ! !&( 3 4 4 4TT 4 4s'D AD, D),D5r$cvd|vr3d|vr/|jtjjd|}|j |}d}|} | j ||ddt jd |5tt |||| } ||||} dddtj  d|vryt jd |5tt ||||d } ||||} | D]} tj| |  dddy#1swYxYw#1swYyxYw) Nr&r{zhSQLite actually returns proper boolean values via read_sql_table, but before pytest refactor was skippedrrzFrrrrrJ)rr) rrrrr}r~rr}rlrrrs r.!test_read_sql_dtype_backend_tablersX4F$. KK  M   I  " "4 (D E BII5d%9IE  0. AT"T"5$mL).-ST&(+   0. A 4$72t$  '   *.-S 4F  ! !&( 3 4 4 4TT 4 4s:$D#AD/#D,/D8)rr$r#c|j|}d}|}|j||ddd}tjt|5t t |||ddddy#1swYyxYw) NrzFrrzPdtype_backend numpy is invalid, only 'numpy_nullable' and 'pyarrow' are allowed.rnumpyr)r}r~rrrrlr)rVrrrrrrs r.)test_read_sql_invalid_dtype_backend_tabler>sv  " "4 (D E BII5d%9IE ! z ->D%W=>>>s A++A4c ttdtjdgdtgddtdtjdgdtgd dgd gd gd gd dS)NrHrJr@rrr@Float64rrr)TFNTFTrrrNrrrdefgh)rrrrr,r-r.rrNs] BFFAg6 1bffc*)<y9$$ !   r-cdd}|S)Nc 2|dk(r9tjd}tj|j }ntj |}t tdtjdgdtgddtdtjdgd tgd d td d tjgd tgdd tgd|tgd|d}|dk(rYtjd}ddl m }t |jDcic]}|||j||d !c}}d|vsd|vr/|dk(r|jddd}|S|jddd}|Scc}w)Nr9rHrJr@rrrrrrTFbooleanrrrrr)ArrowExtensionArray) from_pandasr'r&numpy_nullable)rrzint64[pyarrow])rrr ArrowDtyper StringDtyperrrrNA pandas.arraysrrrr)rrrr string_dtyperrrs r.rz$dtype_backend_expected..func`sq I %$$Y/B==5L>>.9L QN':IW5S"&&#.i@O9=T5"%%0 B/yAO<@,LA    I %$$Y/B 9 "zz,RXXbg4X-PQQB i 8y#8 00YYW7;< YY%5 )T49 =>>>s A&&A/c|}tdddgid}|jd|ddk(sJtjd5t j d|dddy#1swYyxYw) NrrHrIrrtest_bigintwarningFr)rr~rrrr$rWrVrs r.test_bigint_warningrsm D C!Q= 0B 99.D9 F! KK K # #D )7 /6777s A""A+c|}tddgddgd}tjtd5|j d|d d dddy#1swYyxYw) NrHrIrJrKr r zEmpty table name specifiedrrrFr{)rrrrr~rs r.test_valueerror_exceptionrsZ D QFQF3 4B z)E FG rty FGGGs AAc: |}ddlm m m ddlm}m}|}G fdd|}|j5|jj|ddd||}|5}tddgdd gd }|jd |d d dk(sJ|j|j|j|j} t| }dddt!j"ddgk(sJy#1swYxYw#1swY2xYw)Nrr1rr5)r^ sessionmakercJeZdZdZWWdZWWdZy),test_row_object_is_named_tuple..TestrTre2N)rqrrrsrhrj string_columnrsr.Testrs"$ G .vbz* r-rrerHhelloworld)rjrrFrrrIrjr)r>r1rr5rlr^rrjrA create_allrr~rUrrjrr!r) rWrVr^r BaseModelrr]rqr test_queryr1rr5s @@@r.test_row_object_is_named_tuplers D   !"I++y+ ,%%d+,%G #g q!f7IJ K II,>? z "#  o6 66 6,,##sD2A.DDDcr|}d}tdddgi}|j||ddtjdd 5t ||}dddtj t j }tdddgi|tdg|  }tj|y#1swYbxYw) NrzrxyFr)rorr|zfuture.infer_stringT)na_valuer)r@r) rr~rr}r$rrrrrr)rWrVrrrr@rs r.test_read_sql_string_inferencers D E C#s$ %BIIeUiI@  0$ 7-t,- NNBFF +E sCjse50IH&(+--s B--B6c |}tdtddddgid}|jd|dd tjd |j d }|d k(sJyNtirrrrzrF)r|rselect * from testrrz2020-12-31 12:00:00.000000)rrr~rrr)rWrVrrs r.test_roundtripping_datetimesrsf D C(4R456>N OBIIfdiuI= [[-t 4 9 9$ ?F 1 11 1r-c#Ktjtjdtj5}|5}|ddddddy#1swYxYw#1swYyxYww)Nro) detect_types)rprryrPARSE_DECLTYPESrqs r.sqlite_builtin_detect_typesrsc    1H1HI    TJ   s39A,A AA  A,A A  A)%A,c |}tdtddddgid}|jd|dd tjd |j d }|t d k(sJyr)rrr~rrrr)rrVrrs r.)test_roundtripping_datetimes_detect_typesr'sk &D C(4R456>N OBIIfdiuI= [[-t 4 9 9$ ?F Y;< << rorrrrs r.test_self_join_date_columnsr{s &D#  L &3 YY[ & KK % && S[[D )F Yv% ( )A -.|8Lq8PH&(+  5'X&'' & &&&''s.C#CC#<C/C C##C,/C8c|}tgdgdd}tj|5}|j5|j |ddk(sJ ddd|j dsJ|j5|j dddd|j drJ dddy#1swYcxYw#1swY2xYw#1swYyxYw)Nrrrdrop_test_framerK)rrrrOr~rr)rWrVrrs r.test_create_and_drop_tablers D#7@TUVJ   :)  & & ( H##J0ABaG GG H""#4555  & & ( 4  !2 3 4&&'89999 : : H H  4 4 : :s:CB6+C?CC6B? ;CC CCc|}ttdddtdddgdg}|jd|ddk(sJtd |}t j ||j ty) NrrHrIrrrFrzSELECT * FROM test_date)rrr~r#rrrr)rsrVrrs r.test_sqlite_datetime_datersn D Dq!$d4A&67# GB 99+4u9 = BB B 2D 9C#ryy~.r-tz_awareFTcf|}|stdddtdddg}n7tddd}t|jj d }t |d g }|j d |d dk(sJtd|}|j d}tj||y)NrrrHrrrIrrc"|jSr)timetz)rs r.rz+test_sqlite_datetime_time..s  r-rrrFrzSELECT * FROM test_timec$|jdSrrrs r.rz+test_sqlite_datetime_time..s = 9r-) rrr to_pydatetimerrr~r#rr)rrsrVtz_timestz_dtrrrs r.test_sqlite_datetime_timers D AqM41b>20! M%--/0445KL 8cU +B 99+4u9 = BB B 2D 9Cvv9:H#x(r-c~|jd|d}|D]\}}}}}} ||k(s|cStd|d|d)NzPRAGMA table_info(rzTable z , column z not found)rMr) rVrcolumnrecscidrctypenot_nulldefaultpks r.get_sqlite_column_typers^ <<,UG15 6D37/T5(GR 6>L veWIfXZ@ AAr-c|}ddg}ddg}t||}|jd|dk(sJ|jd |dd i dk(sJt|ddd k(sJt|d dd k(sJd }tjt |5|jd|dt i ddd|jd|d dk(sJt|ddd k(sJt|ddd k(sJy#1swYGxYw)Nrrrr rr!rrIr"STRINGr#rz!B \(\) not a stringrrr&)rr~rrrrbool)rsrVrrrrs r.test_sqlite_test_dtypers  D :D  %D 4 &B 99,D9 1Q 66 6 99-T#x9 IQ NN N "$ c :i GG G !$ s ;x GG G .C z -= wDd <= 99-4x9 HA MM M !$(;S AX MM M !$(;S AX MM M ==s C--C6cb|}tddgttddddgtddgdtddgd}t|}d }|j|| d k(sJt ||d d k(sJt ||ddk(sJt ||dd k(sJt ||ddk(sJy)NTr0rrHrrrr1r5rrIr2rr3r*r4r3REAL)rrrr~r)rsrVrrrs r.test_sqlite_notna_dtypers Dd|$q!,d34q$ix0d $  D 4B C 99#49 (A -- - !$V 4 AA A !$V 4 CC C !$U 3y @@ @ !$W 5 ?? ?r-c|}tddgddggddg}d}tjt| 5|j d | dddt gd D]|\}}|j || dk(sJt j||tddgddggd|g}d |d}|j || dk(sJt j||~y#1swYxYw)NrHrIrJrKrrrz$Empty table or column name specifiedrrr) ztest_weird_name]ztest_weird_name[ztest_weird_name`ztest_weird_name"ztest_weird_name'z_b.test_weird_name_01-30z"_b.test_weird_name_01-30"99beginswithnumber12345r test_weird_col_namer)rrrrr~ enumerater table_exists)rsrVrrndx weird_namerc_tbls r.test_sqlite_illegal_namesrs D QFQF#c3Z 8B 0C z -% rt $%%  &Zyyjdy3q888 T*!Q!Q(3 2CD%c!W-zzu$z/1444 %)&%%s CC'ctdjtdjtjdjt djt djtdjtddtjdjtdji }g}|D]D}t|t r t|rd}|t|}|j||F|t|zS)Nz'{}'z{:.8f}z{:d}cy)NNULLr,)rs r.rzformat_query..#sr-z{:.10f}z'{!s}')rrrrstr_bytesrRrlrr;rrxrrrJ)rrh _formattersprocessed_argsarg formatters r. format_queryrs&-- V]]  v}} x V]] T $ I$$ hoo KN. c5 !d3iCS * in- . ~& &&r-ctj|5}|j|j}ddddSt |S#1swYxYw)z#Replace removed sql.tquery functionN)rr"rMrr!)rrorrs r.tqueryr2sS  s #3z  '0023;4-DI-33s A  Ac 4ttjjdj dt t dtddd}tj|d |d dk(sJtjd |}|j|_ |}tj||d gt|z|d<|j}t tj t|tj"dz}|j|d<tj|d|d dk(sJtjd|d}|j}||_ d|j_tj||y)NrIr%rKABCD 2000-01-01r%rrrrFrzselect * from test_tablertxtrIdx test_table2zselect * from test_table2r)rrrrrrr!rrr~rrrrrrrsrr)rsrrrframe2new_idxs r.test_xsqlite_basicr'9sD  a 009d6l#r< E ::e,N% PTV VV V \\4n EF;;FLH&%(53u:%E%L ZZ\FBIIc&k*"((;b@GLLNF5M ::f=nE RVX XX X \\5~QV WFzz|HHNHNN(F+r-c bttjjdj dt t dtddd}tj|jd <tj|d }|j}|j|d }|jD]\}}t|g|}t!||  |j#tj$d | }|j&|_t)j*||dy)NrIrr r!r%rrrrrzz(INSERT INTO test VALUES (%s, %s, %s, %s)rzrgMbP?)rtol)rrrrrrr!rrrrrrLrMiterrowsrrrUrrrr) rsrr"rYinsrr\fmt_sqlrs r.test_xsqlite_write_row_by_rowr-Ts  a 009d6l#r< E vvEJJtv.J    !CKK  4C..",3s)S)wN+, \\.N CF;;FL&%d3r-c tttjjdj dt t dtddd}tj|d }|j}|j|d }|jd }tj|5}|j|t|ddd|jtj d |}|j"dd |_t%j&||dd y#1swY]xYw)NrIrr r!r%rrrrzz$INSERT INTO test VALUES (?, ?, ?, ?)rrrH)rrrrrrr!rrrrLrMrr"rJrUrrrr)rsrr"rYr+r\rrs r.test_xsqlite_executer/ks  a 009d6l#r< E v.J    !CKK  0C **Q-C  ~ .,*3c +, \\. ?F;;r?FL&%), ,,s 6D..D7c ttjjdj dt t dtddd}tj|d }|j}|D]5}|jd }t|dk(s#|d d k(s,|d dk(r5Jtj|d d dg}|j}d|vsJ|j}|j|y)NrIrr r!r%rrrrz rrrHDATETIME)rzPRIMARY KEY ("A", "B"))rrrrrrr!rrr splitlinesrrrLrM)rsrr"lineslinetokensrYs r.test_xsqlite_schemar7s  a 009d6l#r< E v.J  ! ! #E+C v;! q S 0!9 * **+ vS#J?J  ! ! #E #z 11 1    !CKK r-cxd}|j}|j|tj|5}|jd|jdt j tj d5|jdddddddy#1swYxYw#1swYyxYw)Nc CREATE TABLE test ( a TEXT, b TEXT, c REAL, PRIMARY KEY (a, b) ); ,INSERT INTO test VALUES('foo', 'bar', 1.234)z,INSERT INTO test VALUES('foo', 'baz', 2.567)zExecution failed on sqlrz(INSERT INTO test VALUES('foo', 'bar', 7))rLrMrr"rrrw)rsr"rYrs r.test_xsqlite_execute_failr;sJ    !CKK   ~ .K*IJIJ ]]3,,4M N K   I J K KK K K KKs$AB0B$B0$B- )B00B9cd}tjtjd5}|j }|j |t j|5}|j dddddddd}tjtj|5tddddy#1swYOxYw#1swYSxYw#1swYyxYw)Nr9ror:z$Cannot operate on a closed database.rrrz) rprryrrLrMrr"rrrDr)r"rVrYrrs r.&test_xsqlite_execute_closed_connectionr=sJ   GOOJ7 8ODkkm J  " "4 ( OJ   M N O O 1C w//s ;/#.//  O O OO//s/7C"C4C+CC CCC#ctdtjdi}tj||dddk(sJy)NFromr testkeywordsFrorr)rronesrr~)rsrs r.$test_xsqlite_keyword_as_column_namesrCs7 FBGGAJ' (B ::bn> OST TT Tr-c tddgdg}tj||dddk(sJ|}td|j d D}|d k(sJtj d |}t j||y) NrHrIc0rmono_dfFrAc3&K|] }|d yw)rNr,).0my_c0s r. z4test_xsqlite_onecolumn_of_integer..sOu%(Oszselect * from mono_dfrJ)rrr~sumrMrrr)rsrFcon_xthe_sumrs r.!test_xsqlite_onecolumn_of_integerrNsA/G ::g>  OST TT T EO 6M(NOOG a<< \\15 9F&'*r-ctddgddgd}tgdgdd}d}d |}d }tjt| 5t j |||d dddt ||t j |||d d}tjt| 5t j |||d dddt j |||ddt||ddgk(sJt j |||dddk(sJt||gdk(sJt ||t j |||dddk(sJt||ddgk(sJt j |||dddk(sJt||gdk(sJt ||y#1swYNxYw#1swYxYw)NrHrIrrrr[)rrEtable_if_existszSELECT * FROM z*'notvalidvalue' is not valid for if_existsr notvalidvalue)rrorr|rz&Table 'table_if_exists' already existsrF)rrorr|rrzrrrJ)rJrrKrrrPr)rrrSrTrU)rrrrrr~rr)rsdf_if_exists_1df_if_exists_2r sql_selectrs r.test_xsqlite_if_existsrYsAc CDN ?KLN"J!*.J 6C z -   %   z>*JJ.zV 3C z -      JJ    *. 1h5I II I         *. 15S SS Sz>*         *. 1h5I II I         *. 16  z>*Q    s F/-F</F9<G)rWr )rr)r list[dict])rrZrr)rr)rr)rrrVLsqlite3.Connection | sqlalchemy.engine.Engine | sqlalchemy.engine.Connection)rrrVr[rr(, __future__rrprrOrrrrrr pathlibr rytypingr r8rrrpandas._configr pandas._libsr pandas.compatrrpandas.compat._optionalrpandas.util._test_decoratorsutil_test_decoratorstdpandasrrrrrrrrrrrpandas._testing_testingrpandas.util.versionr pandas.ior pandas.io.sqlrrr r!r"r#r$r>rfilterwarnings single_cpu pytestmarkfixturer/rBr]r_rpr|rrrrrrrrrrrrrrrr rrr!r%r(r*r0r2r5r7r>rGrMrOrQrUrWrYr[r]r_rarcrerhrjrmrsrurwparamrmysql_connectablemysql_connectable_irismysql_connectable_typespostgresql_connectablepostgresql_connectable_irispostgresql_connectable_typessqlite_connectablesqlite_connectable_irissqlite_connectable_typessqlalchemy_connectablesqlalchemy_connectable_irissqlalchemy_connectable_typesadbc_connectableadbc_connectable_irisadbc_connectable_typesall_connectableall_connectable_irisall_connectable_types parametrizerrrrrrrrrrrrrrrrrr%r-r2r<rArGrIrKrRrTrVrXr\r^rargrjrorwrrrrrrrrrrrrrlrRrrrrrrrrr rrrrrr#r(r2r@rrCrGrJskip_if_installedrNrTrYr]r`rbrurxrzrrrrrrrrrrrrrrrrrrrrrrrrrrr rrrr.r8rFrSinfrZrrrvryr~rrrrrrrrr no_defaultrrrrrrrrrrrrrrrrrrrrr'r-r/r7r;r=rCrNrYr,r-r.rs"    -?))   ' KKG KK  82D>  "&><2(*7Z-;8 6 , ,  , ,F,,2230.. V.&"" V".          %% %%    $     ""         "*  FLL'v{{~~>FLL%V[[^^< FLL,FKKNNCFLL*&++..A FLL-V[[^^DFLL+6;;>>B FLL-V[[^^DFLL+6;;>>B FLL2&++..IFLL0 G FLL36;;>>JFLL1H     +-CCFXX88;RR ::=UU FLL'v{{~~> FLL'v{{~~> FLL( ? ),<+==@PP #8"99TT 1O2O 1 L2 L1Q2QB1 M2 M1D'?3 >42 >1- /NOMP2M1J2J!56.7.!56.7.$!<=>6!56!7!&!<=!>!!<= !> !!78>9>"!67F8F>!23!$4!$H!78)Az?;",<9",J!7865965r1-2-.!2315415h!78 ,9 ,F,2B<=!56!7!$!56!7!&!56 !7 !$!56!7! !56 =7 =1.2.1 G2 G1#2#"1#2#$1 /2 /1 ,2 ,1/2/(1/2/*!56<7<!67484n!67"?@ ,.HI w/    ! &  W|5  %, A8%,P!67 ?8 ?1+42+4\1 ;2 ;1% "(#2$($1F 2F R1=2=&1     ,2,,1N2N 1 "2 "1 .2 .1#2#.1-2-81-*2-*`1#2#@1:2:1#2#(1,2,:1 +2 +1121,!56474$>21;2;.!78 A9 A!78 ("((3-,,7hYG()9*!78Xx$894:941424(h142 4!<= ,> ,!<= (> (1 #2 # /l#1$1l# +$ + #" 1$!78+9+(!7809021/2/*!56<7<!<=!>! !<=X>X!<=:>:!=>=?=,!78&9&!=> <? <!78/@(AB *C9 *!78 *9 *!78797!78,9,<!78,9,!78 ?9 ?!=>???>!78*9*0!78*9*.!78 -9 -!78#9#4!78 H9 H!78 &9 &!78&9&"!78&9&$1$2$N1  2  1&2&R!78N9N:!78&&9&&R!78!59!5H!7808908f!78 9 F!78  bffX"&& *bffWI,PQ! 9 !6!78"(9"(J1 N2 N1 #2 #!78 '9 '1 '2 ' F 1*.>!?@'4A2'4T1*.>!?@+4A2+4\1!QR >S2 >  ))X1020*13>>;K*LM*.>!?@,AN2,2 >7G$7N,$2=GDGDT ' 'F :/eT]3)4)$BN,@&&@'..,64.-*(K*/,U + O+r-