Ë
    ômxic4 ã                  óž3  — d dl mZ d dlZd dlmZ d dlZd dlmZmZmZmZ d dl	m
Z
 d dlmZ d dlZd dlmZ d dlZd dlZd dlZd dlmZ d d	lmZ d d
lmZmZ d dlmZ d dlmc mZ  d dl!Z"d dl!m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z, d dl-m.Z/ d dl0m1Z1 d dl2m3Z3 d dl4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z; erd dl<Z<ejz                  j}                  d«      ejz                  j~                  gZ@ej‚                  d„ «       ZBd„ ZC�d1d„ZD�d1d„ZE�d1d„ZFd„ ZG�d2d„ZH�d3d„ZI�d3d„ZJ�d4d„ZKd„ ZL�d5d„ZM�d6d„ZNej‚                  d„ «       ZOej‚                  d„ «       ZPej‚                  d „ «       ZQej‚                  d!„ «       ZRej‚                  d"„ «       ZSd#„ ZTd$„ ZU	 	 	 	 �d7d&„ZV	 	 	 	 �d8d'„ZWej‚                  d(„ «       ZXej‚                  d)„ «       ZYej‚                  d*„ «       ZZej‚                  d+„ «       Z[ej‚                  d,„ «       Z\ej‚                  d-„ «       Z]ej‚                  d.„ «       Z^ej‚                  d/„ «       Z_ej‚                  d0„ «       Z`ej‚                  d1„ «       Zaej‚                  d2„ «       Zbej‚                  d3„ «       Zcej‚                  d4„ «       Zdej‚                  d5„ «       Zeej‚                  d6„ «       Zfej‚                  d7„ «       Zgej‚                  d8„ «       Zhej‚                  d9„ «       Ziej‚                  d:„ «       Zjej‚                  d;„ «       Zkej‚                  d<„ «       Zlej‚                  d=„ «       Zmej‚                  d>„ «       Znej‚                  d?„ «       Zoej‚                  d@„ «       Zpej‚                  dA„ «       Zqej‚                  dB„ «       Zrej‚                  dC„ «       Zsej‚                  dD„ «       Ztej‚                  dE„ «       Zu ejì                  dFejz                  jî                  ¬G«       ejì                  dHejz                  jî                  ¬G«      gZx ejì                  dIejz                  jî                  ¬G«       ejì                  dJejz                  jî                  ¬G«      gZy ejì                  dKejz                  jî                  ¬G«       ejì                  dLejz                  jî                  ¬G«      gZz ejì                  dMejz                  jî                  ¬G«       ejì                  dNejz                  jî                  ¬G«      gZ{ ejì                  dOejz                  jî                  ¬G«       ejì                  dPejz                  jî                  ¬G«      gZ| ejì                  dQejz                  jî                  ¬G«       ejì                  dRejz                  jî                  ¬G«      gZ}g dS¢Z~g dT¢Zg dU¢Z€exe{z   e~z   Z�eye|z   ez   Z‚eze}z   e€z   ZƒdV ejì                  dWejz                  jî                  ¬G«      gZ„ ejì                  dXejz                  jî                  ¬G«      dYgZ… ejì                  dZejz                  jî                  ¬G«      d[gZ†e�d\gz   e„z   Z‡e‚d]gz   e…z   Zˆeƒd^gz   e†z   Z‰ejz                  �j                  d%e‡«      d_„ «       Z‹ejz                  �j                  d%e‡«      d`„ «       ZŒejz                  �j                  d%e‡«      da„ «       Z�ejz                  �j                  d%e‡«      db„ «       ZŽejz                  �j                  d%e‡«      ejz                  �j                  dcdddg«      de„ «       «       Z�ejz                  �j                  d%e‡«      ejz                  �j                  dfdgdhg«      di„ «       «       Z�ejz                  �j                  d%e‡«      dj„ «       Z‘ejz                  �j                  d%eˆ«      dk„ «       Z’ejz                  �j                  d%eˆ«      dl„ «       Z“ejz                  �j                  d%e‚«      dm„ «       Z”ejz                  �j                  d%eˆ«      dn„ «       Z•ejz                  �j                  d%e‚«      do„ «       Z–ejz                  �j                  d%e‚«      dp„ «       Z—ejz                  �j                  d%e�«      dq„ «       Z˜ejz                  �j                  d%e‰«      dr„ «       Z™ejz                  �j                  d%ex«      ds„ «       Zšejz                  �j                  d%e{«      ejz                  �j                  dtdudvg«      dw„ «       «       Z›ejz                  �j                  d%e{«      dx„ «       Zœejz                  �j                  d%e‡«      dy„ «       Z�ejz                  �j                  d%ex«      dz„ «       Zžejz                  �j                  d%e{«      d{„ «       ZŸd|„ Z d}„ Z¡d~„ Z¢d„ Z£ejz                  �j                  d%eˆ«      d€„ «       Z¤ejz                  �j                  d%eˆ«      d�„ «       Z¥ejz                  �j                  d%eˆ«      d‚„ «       Z¦ejz                  �j                  d%eˆ«      dƒ„ «       Z§ejz                  �j                  d%eˆ«      d„„ «       Z¨ejz                  �j                  d%e‡«      d…„ «       Z©ejz                  �j                  d%e‡«      d†„ «       Zªejz                  �j                  d%e‡«      d‡„ «       Z«ejz                  �j                  d%e‡«      dˆ„ «       Z¬ejz                  �j                  d%e‡«      d‰„ «       Z­ejz                  �j                  d%e‡«      dŠ„ «       Z®ejz                  �j                  d%e‡«      d‹„ «       Z¯ejz                  �j                  d%e‡«      dŒ„ «       Z°ejz                  �j                  d%eˆ«      d�„ «       Z±ejz                  �j                  d%e‰«      dŽ„ «       Z²ejz                  �j                  d%e‰«      ejz                  �j                  d�g d�¢«      ejz                  �j                  d‘e3�jf                  d’d“fe3�jf                  d”d•fe3jt                  d’d“fe3jv                  d”d•fg«      d–„ «       «       «       Z´ejz                  �j                  d%e‰«      d—„ «       Zµejz                  �j                  d%e‡«      d˜„ «       Z¶ejz                  �j                  d%e‡«      d™„ «       Z·ejz                  �j                  d%e‡«      ejz                  �j                  dšg d›¢«      dœ„ «       «       Z¸ejz                  �j                  d%e‡«      d�„ «       Z¹ejz                  �j                  d%e‡«      dž„ «       Zºejz                  �j                  d%e‡«      ejz                  �j                  dŸde»e¼e»e¼d œg«      d¡„ «       «       Z½ejz                  �j                  d%e‡«      d¢„ «       Z¾ejz                  �j                  d%e‡«      d£„ «       Z¿ejz                  �j                  d%e‡«      d¤„ «       ZÀejz                  �j                  d%e‡«      d¥„ «       ZÁejz                  �j                  d%e‡«      d¦„ «       ZÂejz                  �j                  d%e‡«      d§„ «       ZÃejz                  �j                  d%e‡«      d¨„ «       ZÄejz                  �j                  d%e‡«      d©„ «       ZÅejz                  �j                  d%e‡«      dª„ «       ZÆejz                  �j                  d%e‡«      d«„ «       ZÇejz                  �j                  d%e‡«      d¬„ «       ZÈejz                  �j                  d%e‡«      d­„ «       ZÉejz                  �j                  d%eˆ«      d®„ «       ZÊd¯„ ZËejz                  �j                  d%e‡«      d°„ «       ZÌejz                  �j                  d%e�«      d±„ «       ZÍejz                  �j                  d%e�«      ejz                  �j                  d²d³d´dµd¶d·d¸d¹dºd»d¼d½d¾d¿dÀe» e�jœ                  e»«      �jž                  dÁk(  rdÂndÃfg«      dÄ„ «       «       ZÐejz                  �j                  d%e�«      ejz                  �j                  dÅdÆdÇg«      dÈ„ «       «       ZÑejz                  �j                  d%e‡«      dÉ„ «       ZÒ e �j¦                  dÊ«      ejz                  �j                  d%e‡«      dË„ «       «       ZÔejz                  �j                  d%e‚«      dÌ„ «       ZÕejz                  �j                  d%e‚«      dÍ„ «       ZÖejz                  �j                  d%e‡«      dÎ„ «       Z×dÏ„ ZØ e �j¦                  d•«      dÐ„ «       ZÙ e �j¦                  d•«      dÑ„ «       ZÚdÒ„ ZÛdÓ„ ZÜdÔ„ ZÝejz                  �j                  d%e�«      dÕ„ «       ZÞejz                  �j                  d%e�«      dÖ„ «       Zßejz                  �j                  d%e‡«      d×„ «       Zàejz                  �j                  d%eˆ«      dØ„ «       Záejz                  �j                  d%e‚«      dÙ„ «       Zâejz                  �j                  d%e‚«      dÚ„ «       Zãejz                  �j                  d%e‚«      dÛ„ «       Zäejz                  �j                  d%eƒ«      dÜ„ «       Zåejz                  �j                  d%e�«      dÝ„ «       Zæejz                  �j                  d%eƒ«      dÞ„ «       Zçejz                  �j                  d%e{«      ejz                  �j                  dßddàgg«      dá„ «       «       Zèejz                  �j                  d%e{«      dâ„ «       Zéejz                  �j                  d%e{«      dã„ «       Zêejz                  �j                  d%e�«      dä„ «       Zëejz                  �j                  d%e�«      då„ «       Zìejz                  �j                  d%e�«      dæ„ «       Zíejz                  �j                  d%eƒ«      dç„ «       Zîejz                  �j                  d%e�«      dè„ «       Zïejz                  �j                  d%e�«      dé„ «       Zðejz                  �j                  d%e�«      dê„ «       Zñejz                  �j                  d%e�«      dë„ «       Zòejz                  �j                  d%e�«      dì„ «       Zóejz                  �j                  d%e�«      dí„ «       Zôejz                  �j                  d%e�«      dî„ «       Zõejz                  �j                  d%e�«      dï„ «       Zöejz                  �j                  d%e‡«      dð„ «       Z÷ejz                  �j                  d%e‡«      dñ„ «       Zøejz                  �j                  d%e‡«      dò„ «       Zùejz                  �j                  d%e�«      dó„ «       Zúejz                  �j                  d%e�«      dô„ «       Zûejz                  �j                  d%e�«      dõ„ «       Züejz                  �j                  d%e�«      dö„ «       Zýejz                  �j                  d%e�«      d÷„ «       Zþejz                  �j                  d%e�«      ejz                  �j                  dødùe�jþ                  gidùe�jþ                   gie�jþ                   gdúgdûœg«      dü„ «       «       �Z ejz                  �j                  d%e�«      dý„ «       �Zejz                  �j                  d%e‡«      dþ„ «       �Zejz                  �j                  d%e‡«      dÿ„ «       �Zejz                  �j                  d%e�«      �d „ «       �Zejz                  �j                  d%e‡«      �d„ «       �Z�d„ �Z�d„ �Zejz                  �j                  d%e‡«      ejz                  �j                  �d�d�dg«      �d„ «       «       �Zejz                  �j                  d%e‡«      ejz                  �j                  �d�d�dg«      �d	„ «       «       �Z	ejz                  �j                  d%e‡«      ejz                  �j                  �dg �d
¢«      �d„ «       «       �Z
ej‚                  �d9�d„«       �Zej‚                  �d„ «       �Zejz                  �j                  d%e‡«      �d„ «       �Zejz                  �j                  d%e‡«      ejz                  �j                  �de�j                  �dg«      ejz                  �j                  �d�d�dg«      �d„ «       «       «       �Z�d„ �Z�d„ �Z�d„ �Z�d„ �Z�d„ �Z�d„ �Zej‚                  �d„ «       �Z�d„ �Zejz                  jî                  �d„ «       �Zejz                  jî                  �d„ «       �Z�d„ �Z�d„ �Zejz                  �j                  �d�d�d g«      �d!„ «       �Z�d"„ �Z�d#„ �Z�d$„ �Z�d%„ �Z �d&„ �Z!�d:�d'„�Z"�d(„ �Z#�d)„ �Z$�d*„ �Z%�d+„ �Z&�d,„ �Z'�d-„ �Z(�d.„ �Z)�d/„ �Z*�d0„ �Z+y(;  é    )ÚannotationsN)Úclosing)ÚdateÚdatetimeÚtimeÚ	timedelta)ÚStringIO©ÚPath)ÚTYPE_CHECKING)Úusing_string_dtype)Úlib)Úpa_version_under13p0Úpa_version_under14p1)Úimport_optional_dependency)
Ú	DataFrameÚIndexÚ
MultiIndexÚSeriesÚ	TimestampÚconcatÚ
date_rangeÚisnaÚto_datetimeÚto_timedelta)ÚVersion)Úsql)ÚSQLAlchemyEngineÚSQLDatabaseÚSQLiteDatabaseÚ
get_engineÚpandasSQL_builderÚread_sql_queryÚread_sql_tablez=ignore:Passing a BlockManager to DataFrame:DeprecationWarningc                 ó&   — ddddœddddœdd	d
dœdœS )Nz1SELECT * FROM iris WHERE Name=? AND SepalLength=?z7SELECT * FROM iris WHERE `Name`=%s AND `SepalLength`=%sz7SELECT * FROM iris WHERE "Name"=%s AND "SepalLength"=%s)ÚsqliteÚmysqlÚ
postgresqlz]
                SELECT * FROM iris WHERE Name=:name AND SepalLength=:length
                zw
                SELECT * FROM iris WHERE
                `Name`=%(name)s AND `SepalLength`=%(length)s
                zw
                SELECT * FROM iris WHERE
                "Name"=%(name)s AND "SepalLength"=%(length)s
                z&SELECT * FROM iris WHERE Name LIKE '%'z(SELECT * FROM iris WHERE `Name` LIKE '%'z(SELECT * FROM iris WHERE "Name" LIKE '%')Úread_parametersÚread_named_parametersÚread_no_parameters_with_percent© r,   ó    úO/home/htdocs/ttos/venv/lib/python3.12/site-packages/pandas/tests/io/test_sql.pyÚsql_stringsr/   F   sA   € ð JØNØSñ
ðððñ"
ð ?Ø?ØFñ,
ñ'ð r-   c                 óô   — dd l } ddl m}m}m}m}m}m} t        | j                  «      t        d«      k\  r|n|} |«       } |d| |d|«       |d|«       |d|«       |d|«       |d	 |d
«      «      «      }	|	S )Nr   )ÚColumnÚDoubleÚFloatÚMetaDataÚStringÚTablez2.0.0ÚirisÚSepalLengthÚ
SepalWidthÚPetalLengthÚ
PetalWidthÚNameéÈ   )	Ú
sqlalchemyr1   r2   r3   r4   r5   r6   r   Ú__version__)
r>   r1   r2   r3   r4   r5   r6   ÚdtypeÚmetadatar7   s
             r.   Úiris_table_metadatarB   c   sƒ   € Û÷÷ ô ˜j×4Ñ4Ó5¼ÀÓ9IÒI‰FÈu€EÙ‹z€HÙØØÙˆ}˜eÓ$Ùˆ|˜UÓ#Ùˆ}˜eÓ$Ùˆ|˜UÓ#Ùˆv‘v˜c“{Ó#ó€Dð €Kr-   c                óÞ  — d}| j                  «       }|j                  |«       |j                  d d¬«      5 }t        j                  |«      }t        |«       d}g }|D �cg c]<  }t        |d   «      t        |d   «      t        |d   «      t        |d   «      |d	   f‘Œ> }}|j                  ||«       d d d «       |j                  «        | j                  «        y c c}w # 1 sw Y   Œ/xY w)
Nz³CREATE TABLE iris (
            "SepalLength" REAL,
            "SepalWidth" REAL,
            "PetalLength" REAL,
            "PetalWidth" REAL,
            "Name" TEXT
        )úutf-8©ÚnewlineÚencodingz&INSERT INTO iris VALUES(?, ?, ?, ?, ?)r   é   é   é   é   )
ÚcursorÚexecuteÚopenÚcsvÚreaderÚnextÚfloatÚexecutemanyÚcloseÚcommit)ÚconnÚ	iris_fileÚstmtÚcurÚcsvfilerP   ÚrecordsÚrows           r.   Úcreate_and_load_iris_sqlite3r]   |   sç   € ð€Dð �+‰+‹-€CØ‡K�K�ÔØ	�‰ ¨wˆÓ	7ð '¸7Ü—‘˜GÓ$ˆÜˆVŒØ7ˆàˆð ö	
ð ô �c˜!‘f“Ü�c˜!‘f“Ü�c˜!‘f“Ü�c˜!‘f“Ø�A‘òð	
ˆð 	
ð 	�‰˜˜gÔ&÷#'ð$ ‡I�I„Kà‡K�K…Mùò	
÷'ð 'ús   ·)C#Á ACÂ!C#ÃC#Ã#C,c                óä  — d}| j                  «       5 }|j                  |«       |j                  d d¬«      5 }t        j                  |«      }t        |«       d}|D �cg c]<  }t        |d   «      t        |d   «      t        |d   «      t        |d   «      |d	   f‘Œ> }}|j                  ||«       d d d «       d d d «       | j                  «        y c c}w # 1 sw Y   Œ'xY w# 1 sw Y   Œ+xY w)
NzãCREATE TABLE iris (
            "SepalLength" DOUBLE PRECISION,
            "SepalWidth" DOUBLE PRECISION,
            "PetalLength" DOUBLE PRECISION,
            "PetalWidth" DOUBLE PRECISION,
            "Name" TEXT
        )rD   rE   z+INSERT INTO iris VALUES($1, $2, $3, $4, $5)r   rH   rI   rJ   rK   )	rL   rM   rN   rO   rP   rQ   rR   rS   rU   )rV   rW   rX   rY   rZ   rP   r\   r[   s           r.   Úcreate_and_load_iris_postgresqlr_   ž   sî   € ð€Dð 
�‰‹ð +˜#Ø�‰�DÔØ�^‰^ D°7ˆ^Ó;ð 	+¸wÜ—Z‘Z Ó(ˆFÜ�ŒLØ@ˆDð "ö	ð ô ˜#˜a™&“MÜ˜#˜a™&“MÜ˜#˜a™&“MÜ˜#˜a™&“MØ˜‘Fòð	ˆGð 	ð �O‰O˜D 'Ô*÷!	+÷+ð( 	‡K�K…Mùò	÷	+ð 	+ú÷+ð +ús5   “%C&¸'CÁACÂ CÂ4C&ÃCÃC#	ÃC&Ã&C/c           
     óæ  — ddl m} t        «       }|j                  d d¬«      5 }t	        j
                  |«      }t        |«      }|D �cg c]  }t        t        ||«      «      ‘Œ }} ||«      j                  |«      }	| j                  «       5 }
|j                  |
d¬«       |j                  |
¬«       |
j                  |	«       d d d «       d d d «       y c c}w # 1 sw Y   ŒxY w# 1 sw Y   y xY w)Nr   ©ÚinsertrD   rE   T©Ú
checkfirst©Úbind)r>   rb   rB   rN   rO   rP   rQ   ÚdictÚzipÚvaluesÚbeginÚdropÚcreaterM   )rV   rW   rb   r7   rZ   rP   Úheaderr\   ÚparamsrX   Úcons              r.   Úcreate_and_load_irisrp   ½   sÒ   € Ý!äÓ €Dà	�‰ ¨wˆÓ	7ð ¸7Ü—‘˜GÓ$ˆÜ�f“ˆØ4:Ö;¨S”$”s˜6 3Ó'Õ(Ð;ˆÐ;Ù�d‹|×"Ñ" 6Ó*ˆØ�Z‰Z‹\ð 	˜SØ�I‰I�c dˆIÔ+Ø�K‰K˜SˆKÔ!Ø�K‰K˜Ô÷	÷ð ùò <÷	ð 	ú÷ð ús5   ¤%C'Á	CÁ%)C'Â7CÃC'ÃC'ÃC$	Ã C'Ã'C0c                óà  — d}t        | t        j                  «      r"| j                  «       }|j	                  |«       y t        dd¬«      }|rQt        | |j                  «      r;| j                  «       5 }|j	                  |«       d d d «       | j                  «        y ddlm}  ||«      }| j                  «       5 }|j	                  |«       d d d «       y # 1 sw Y   ŒSxY w# 1 sw Y   y xY w)Nz+CREATE VIEW iris_view AS SELECT * FROM irisúadbc_driver_manager.dbapiÚignore©Úerrorsr   ©Útext)
Ú
isinstanceÚsqlite3Ú
ConnectionrL   rM   r   rU   r>   rw   rj   )rV   rX   rY   Úadbcrw   ro   s         r.   Úcreate_and_load_iris_viewr|   Í   s½   € Ø8€DÜ�$œ×*Ñ*Ô+Ø�k‰k‹mˆØ�‰�DÕä)Ð*EÈhÔWˆÙ”J˜t T§_¡_Ô5Ø—‘“ð " #Ø—‘˜DÔ!÷"à�K‰K�Må'á˜“:ˆDØ—‘“ð " Ø—‘˜DÔ!÷"ð "÷"ð "ú÷"ð "ús   Á4CÂ=C$ÃC!Ã$C-c                ó  — ddl m}m}m}m}m}m}m}m} | dk(  r|n|}	| dk(  r|n|}
 |«       } |d| |d|«       |d|	«       |d|«       |d|«       |d	|«       |d
|«       |d|
«       |d|«       |d|
«      «      }|S )Nr   )ÚTEXTÚBooleanr1   ÚDateTimer3   ÚIntegerr4   r6   r&   ÚtypesÚTextColÚDateColÚ
IntDateColÚIntDateOnlyColÚFloatColÚIntColÚBoolColÚIntColWithNullÚBoolColWithNull)	r>   r~   r   r1   r€   r3   r�   r4   r6   )Údialectr~   r   r1   r€   r3   r�   r4   r6   Ú	date_typeÚ	bool_typerA   r‚   s                r.   Útypes_table_metadatar�   à   sª   € ÷	÷ 	ó 	ð   8Ò+‘°€IØ" hÒ.‘°G€IÙ‹z€HÙØØÙˆy˜$ÓÙˆy˜)Ó$Ùˆ|˜WÓ%ÙÐ Ó)Ùˆz˜5Ó!Ùˆx˜Ó!Ùˆy˜)Ó$ÙÐ Ó)ÙÐ  )Ó,ó€Eð €Lr-   c                óX  — d}d}t        | t        j                  «      r4| j                  «       }|j	                  |«       |j                  ||«       y | j                  «       5 }|j	                  |«       |j                  ||«       d d d «       | j                  «        y # 1 sw Y   ŒxY w)Na”  CREATE TABLE types (
                    "TextCol" TEXT,
                    "DateCol" TEXT,
                    "IntDateCol" INTEGER,
                    "IntDateOnlyCol" INTEGER,
                    "FloatCol" REAL,
                    "IntCol" INTEGER,
                    "BoolCol" INTEGER,
                    "IntColWithNull" INTEGER,
                    "BoolColWithNull" INTEGER
                )ze
                INSERT INTO types
                VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)
                )rx   ry   rz   rL   rM   rS   rU   )rV   Ú
types_datarX   Úins_stmtrY   s        r.   Úcreate_and_load_types_sqlite3r“   ÿ   sŒ   € ð
€Dð€Hô
 �$œ×*Ñ*Ô+Ø�k‰k‹mˆØ�‰�DÔØ�‰˜ *Õ-à�[‰[‹]ð 	2˜cØ�K‰K˜ÔØ�O‰O˜H jÔ1÷	2ð 	�‰�÷		2ð 	2ús   Á#$B Â B)c                ó¼   — | j                  «       5 }d}|j                  |«       d}|j                  ||«       d d d «       | j                  «        y # 1 sw Y   ŒxY w)NaÍ  CREATE TABLE types (
                        "TextCol" TEXT,
                        "DateCol" TIMESTAMP,
                        "IntDateCol" INTEGER,
                        "IntDateOnlyCol" INTEGER,
                        "FloatCol" DOUBLE PRECISION,
                        "IntCol" INTEGER,
                        "BoolCol" BOOLEAN,
                        "IntColWithNull" INTEGER,
                        "BoolColWithNull" BOOLEAN
                    )zy
                INSERT INTO types
                VALUES($1, $2::timestamp, $3, $4, $5, $6, $7, $8, $9)
                )rL   rM   rS   rU   )rV   r‘   rY   rX   s       r.   Ú create_and_load_types_postgresqlr•     sY   € Ø	�‰‹ð *˜#ð
ˆð 	�‰�DÔðˆð
 	�‰˜˜jÔ)÷'*ð* 	‡K�K…M÷+*ð *ús   ‘(AÁAc                ó0  — ddl m} ddlm} t	        |«      } ||«      j                  |«      }t        | |«      ri| j                  «       5 } | j                  «       5  |j                  | d¬«       |j                  | ¬«       | j                  |«       d d d «       d d d «       y | j                  «       5  |j                  | d¬«       |j                  | ¬«       | j                  |«       d d d «       y # 1 sw Y   ŒbxY w# 1 sw Y   y xY w# 1 sw Y   y xY w)Nr   ra   ©ÚEngineTrc   re   )r>   rb   Úsqlalchemy.enginer˜   r�   ri   rx   Úconnectrj   rk   rl   rM   )rV   r‘   rŒ   rb   r˜   r‚   rX   s          r.   Úcreate_and_load_typesr›   6  sì   € Ý!Ý(ä  Ó)€Eá�%‹=×Ñ 
Ó+€DÜ�$˜ÔØ�\‰\‹^ð 	#˜tØ—‘“ñ #Ø—
‘
˜4¨D�
Ô1Ø—‘ $�Ô'Ø—‘˜TÔ"÷#÷	#ð 	#ð �Z‰Z‹\ñ 	Ø�J‰J�t¨ˆJÔ-Ø�L‰L˜dˆLÔ#Ø�L‰L˜Ô÷	ð 	÷#ð #ú÷	#ð 	#ú÷	ð 	ús0   ÁD Á7C4ÂD Â47DÃ4C=	Ã9D Ä D	ÄDc           
     óÄ  — ddl m}m}m}m}m} ddlm}  |«       } |d| |d |d¬«      «      «      }ddidd	ig}	 ||«      j                  |	«      }
t        | |«      ri| j                  «       5 } | j                  «       5  |j                  | d¬
«       |j                  | ¬«       | j                  |
«       d d d «       d d d «       nO| j                  «       5  |j                  | d¬
«       |j                  | ¬«       | j                  |
«       d d d «       t        dd¬«      t        dd¬«      g}t!        |d¬«      S # 1 sw Y   ŒˆxY w# 1 sw Y   Œ<xY w# 1 sw Y   ŒHxY w)Nr   )r1   r€   r4   r6   rb   r—   ÚdatetzÚDateColWithTzT)Útimezonez2000-01-01 00:00:00-08:00z2000-06-01 00:00:00-07:00rc   re   z2000-01-01 08:00:00ÚUTC©Útzz2000-06-01 07:00:00©Úname)r>   r1   r€   r4   r6   rb   r™   r˜   ri   rx   rš   rj   rk   rl   rM   r   r   )rV   r1   r€   r4   r6   rb   r˜   rA   r�   Údatetz_datarX   Úexpected_datas               r.   Úcreate_and_load_postgres_datetzr§   J  sY  € ÷õ õ )á‹z€HÙ�8˜X¡v¨o¹xÐQUÔ?VÓ'WÓX€Fð Ð8ð	
ð Ð8ð	
ð	€Kñ �&‹>× Ñ  Ó-€DÜ�$˜ÔØ�\‰\‹^ð 	#˜tØ—‘“ñ #Ø—‘˜D¨T�Ô2Ø—‘ 4�Ô(Ø—‘˜TÔ"÷#÷	#ð 	#ð �Z‰Z‹\ñ 	Ø�K‰K˜¨ˆKÔ.Ø�M‰M˜tˆMÔ$Ø�L‰L˜Ô÷	ô 	Ð'¨EÔ2ÜÐ'¨EÔ2ð€Mô �- oÔ6Ð6÷'#ð #ú÷	#ð 	#ú÷	ð 	ús0   Á/E
Â 7D>Â7E
Ã7EÄ>E	ÅE
Å
EÅEc                ó  — | j                   j                  d   j                  }| j                  d   }t        |t        j
                  «      sJ ‚t        j                  |t        g d¢| j                  d¬«      «       | j                  dv sJ ‚y )Nr   ©çffffff@g      @gffffffö?çš™™™™™É?úIris-setosa)Úindexr¤   ))é–   é   )é   r¯   )ÚdtypesÚilocÚtypeÚ
issubclassÚnpÚfloatingÚtmÚassert_series_equalr   ÚcolumnsÚshape)ÚframeÚpytyper\   s      r.   Úcheck_iris_framer½   w  st   € Ø�\‰\×Ñ˜qÑ!×&Ñ&€FØ
�*‰*�Q‰-€CÜ�fœbŸk™kÔ*Ð*Ð*Ü×ÑØŒVÒ7¸u¿}¹}ÐSTÔUôð �;‰;Ð,Ñ,Ð,Ñ,r-   c                ó¤  — d|› �}t        dd¬«      }t        | t        j                  «      r2| j	                  «       }|j                  |«      j                  «       d   S |rTt        | |j                  «      r>| j	                  «       5 }|j                  |«       |j                  «       d   cd d d «       S ddlm} ddl	m
} t        | t        «      rR	  || «      }|j                  «       5 } | j                  |«      j                  «       cd d d «       |j                  «        S t        | |«      r9| j                  «       5 } | j                  |«      j                  «       cd d d «       S | j                  |«      j                  «       S # 1 sw Y   y xY w# 1 sw Y   nxY w	 |j                  «        y # j                  «        w xY w# 1 sw Y   y xY w)Nz SELECT count(*) AS count_1 FROM rr   rs   rt   r   )Úcreate_enginer—   )r   rx   ry   rz   rL   rM   Úfetchoner>   r¿   r™   r˜   Ústrrš   Úexec_driver_sqlÚ
scalar_oneÚdispose)rV   Ú
table_namerX   r{   rY   r¿   r˜   Úengines           r.   Ú
count_rowsrÇ   �  s�  € Ø-¨j¨\Ð:€DÜ%Ð&AÈ(ÔS€DÜ�$œ×*Ñ*Ô+Ø�k‰k‹mˆØ�{‰{˜4Ó ×)Ñ)Ó+¨AÑ.Ð.Ù	”*˜T 4§?¡?Ô3Ø�[‰[‹]ð 	%˜cØ�K‰K˜ÔØ—<‘<“> !Ñ$÷	%ñ 	%õ 	-Ý,ä�dœCÔ ð!Ù& tÓ,�Ø—^‘^Ó%ð C¨Ø×/Ñ/°Ó5×@Ñ@ÓB÷Cð Cð —‘Õ Ü˜˜fÔ%Ø—‘“ð ? 4Ø×+Ñ+¨DÓ1×<Ñ<Ó>÷?ñ ?ð ×'Ñ'¨Ó-×8Ñ8Ó:Ð:÷%	%ð 	%ú÷Cð Cúð Cð —‘Õ ø�—‘Õ ú÷?ð ?ús<   Â$FÃF1 Ã*FÄ		F1 Ä?GÆFÆFÆF1 Æ1GÇGc                ó.   —  | dddd«      }t        |«      S )NÚioÚdatarO   ziris.csvr
   )ÚdatapathÚ	iris_paths     r.   rÌ   rÌ   �  s   € á˜˜v u¨jÓ9€IÜ�	‹?Ðr-   c                 ó2   — ddddddddddœ	dd	d
ddddd d dœ	gS )NÚfirstú2000-01-03 00:00:00i wði’·2g333333$@rH   F©	rƒ   r„   r…   r†   r‡   rˆ   r‰   rŠ   r‹   ú2000-01-04 00:00:00i 'âPi\¸2r,   r,   r-   r.   r‘   r‘   £  sP   € ð Ø,Ø#Ø&ØØØØØ$ñ
	
ð Ø,Ø$Ø&ØØØØ"Ø#ñ
	
ðð r-   c           
     ót   — ddddddddddœ	}t        | «      }||j                  «          j                  |«      S )NrÁ   Úint64rR   rÐ   )r   ÚkeysÚastype)r‘   r±   Údfs      r.   Útypes_data_framer×   ¿  sN   € ð ØØØ!ØØØØ!Ø"ñ
€Fô 
�:Ó	€BØˆf�k‰k‹mÑ×#Ñ# FÓ+Ð+r-   c                 ó,   — g d¢} g d¢}t        || ¬«      S )N)r­   ÚAÚBÚCÚD))rÏ   gNÿ\^ï?g9\›x`|@g%Ú TO×¿gá(nIŽò¿)rÑ   gî}ÒCÄð?çc×^ÜV¥¿g~q"B¶Ä¿gˆ”æÐ4Ë?)ú2000-01-05 00:00:00gGà Í¿èß?ç2rÂ¹eç?gˆŽ>Ý¦4á¿gÑ‘öÙRŠõ?)ú2000-01-06 00:00:00gÔ?{mXìñ?ç$ôó­ùù?gnk3¥AÓm?gØ
S«›å?©r¹   ©r   ©r¹   rÊ   s     r.   Útest_frame1rå   Ð  s   € â+€Gò€Dô< �T 7Ô+Ð+r-   c                 ó,   — g d¢} g d¢}t        || ¬«      S )N)r­   rÙ   rÚ   ))rÏ   iÿÿÿgZØÓÍÿ¿)rÑ   iãÿÿÿrÝ   )rÞ   i N  rß   )rà   iÍ�ûÿrá   râ   rã   rä   s     r.   Útest_frame3rç   ô  s   € â!€Gò€Dô �T 7Ô+Ð+r-   c                ó  — t        | t        j                  «      r2| j                  d«      }|j	                  «       D �cg c]  }|d   ‘Œ	 c}S t        dd¬«      }|rŠt        | |j                  «      rtg }| j                  «       j                  «       j                  «       }|D ]?  }|d    |d   D ]0  }|d    |d	   D ]!  }|d
   dk(  sŒ|d   }	|j                  |	«       Œ# Œ2 ŒA |S ddl
m}
  |
| «      j                  «       S c c}w )Nz0SELECT name FROM sqlite_master WHERE type='view'r   rr   rs   rt   Úcatalog_nameÚcatalog_db_schemasÚdb_schema_nameÚdb_schema_tablesÚ
table_typeÚviewrÅ   ©Úinspect)rx   ry   rz   rM   Úfetchallr   Úadbc_get_objectsÚread_allÚ	to_pylistÚappendr>   rð   Úget_view_names)rV   Úcrî   r{   ÚresultsÚinfoÚcatalogÚschemaÚtableÚ	view_namerð   s              r.   Úget_all_viewsrþ      s  € Ü�$œ×*Ñ*Ô+Ø�L‰LÐKÓLˆØ$%§J¡J£LÖ1˜D��Q“Ò1Ð1ä)Ð*EÈhÔWˆÙ”J˜t T§_¡_Ô5ØˆGØ×(Ñ(Ó*×3Ñ3Ó5×?Ñ?ÓAˆDØò 6�Ø˜Ò'Ø%Ð&:Ñ;ò 6�FØÐ+Ò,Ø!'Ð(:Ñ!;ò 6˜Ø  Ñ.°&Ó8Ø(-¨lÑ(;˜IØ#ŸN™N¨9Õ5ñ6ñ6ð6ð ˆNå*á˜4“=×/Ñ/Ó1Ð1ùò' 2s   ¾Dc                óú  — t        | t        j                  «      r2| j                  d«      }|j	                  «       D �cg c]  }|d   ‘Œ	 c}S t        dd¬«      }|r€t        | |j                  «      rjg }| j                  «       j                  «       j                  «       }|D ]5  }|d   D ]+  }|d   D ]!  }|d   d	k(  sŒ|d
   }|j                  |«       Œ# Œ- Œ7 |S ddl
m}	  |	| «      j                  «       S c c}w )Nz1SELECT name FROM sqlite_master WHERE type='table'r   rr   rs   rt   rê   rì   rí   rü   rÅ   rï   )rx   ry   rz   rM   rñ   r   rò   ró   rô   rõ   r>   rð   Úget_table_names)
rV   r÷   rü   r{   rø   rù   rú   rû   rÅ   rð   s
             r.   Úget_all_tablesr    sü   € Ü�$œ×*Ñ*Ô+Ø�L‰LÐLÓMˆØ&'§j¡j£lÖ3˜U��a“Ò3Ð3ä)Ð*EÈhÔWˆá”J˜t T§_¡_Ô5ØˆGØ×(Ñ(Ó*×3Ñ3Ó5×?Ñ?ÓAˆDØò 7�Ø%Ð&:Ñ;ò 7�FØ!'Ð(:Ñ!;ò 7˜Ø  Ñ.°'Ó9Ø).¨|Ñ)<˜JØ#ŸN™N¨:Õ6ñ7ñ7ð7ð ˆNå*á˜4“=×0Ñ0Ó2Ð2ùò% 4s   ¾C8rV   c                ó(  — t        |t        j                  «      r8|j                  dt	        j
                  | «      › �«       |j                  «        y t        dd¬«      }|rEt        ||j                  «      r/|j                  «       5 }|j                  d| › d�«       d d d «       y |j                  «       5 }t	        j                  |«      5 }|j                  | «       d d d «       d d d «       y # 1 sw Y   y xY w# 1 sw Y   ŒxY w# 1 sw Y   y xY w)NzDROP TABLE IF EXISTS rr   rs   rt   zDROP TABLE IF EXISTS "ú")rx   ry   rz   rM   r   Ú_get_valid_sqlite_namerU   r   rL   rj   r   Ú
drop_table)rÅ   rV   r{   rY   ro   Údbs         r.   r  r  1  sò   € ô �$œ×*Ñ*Ô+Ø�‰Ð,¬S×-GÑ-GÈ
Ó-SÐ,TÐUÔVØ�‰�ô *Ð*EÈhÔWˆÙ”J˜t T§_¡_Ô5Ø—‘“ð D #Ø—‘Ð4°Z°LÀÐBÔC÷Dð Dð —‘“ð . Ü—_‘_ SÓ)ð .¨RØ—M‘M *Ô-÷.÷.ð .÷Dð Dú÷.ð .ú÷.ð .ús0   ÂC0Â7DÃC<ÃDÃ0C9Ã<D	ÄDÄDc                ód  — dd l }t        |t        j                  «      r8|j	                  dt        j                  | «      › �«       |j                  «        y t        dd¬«      }|rEt        ||j                  «      r/|j                  «       5 }|j	                  d| › d�«       d d d «       y |j                  j                  j                  j                  | «      } |j                  d|› �«      }|j                  «       5 }|j	                  |«       d d d «       y # 1 sw Y   y xY w# 1 sw Y   y xY w)Nr   zDROP VIEW IF EXISTS rr   rs   rt   zDROP VIEW IF EXISTS "r  )r>   rx   ry   rz   rM   r   r  rU   r   rL   rÆ   rŒ   Úidentifier_preparerÚquote_identifierrw   rj   )rý   rV   r>   r{   rY   Úquoted_viewrX   ro   s           r.   Ú	drop_viewr  D  s  € ó ä�$œ×*Ñ*Ô+Ø�‰Ð+¬C×,FÑ,FÀyÓ,QÐ+RÐSÔTØ�‰�ä)Ð*EÈhÔWˆÙ”J˜t T§_¡_Ô5Ø—‘“ð B #Ø—‘Ð3°I°;¸aÐ@ÔA÷Bð Bð Ÿ+™+×-Ñ-×AÑA×RÑRØóˆKð #�:—?‘?Ð%9¸+¸Ð#GÓHˆDØ—‘“ð " Ø—‘˜DÔ!÷"ð "÷Bð Bú÷"ð "ús   ÂDÃ?D&ÄD#Ä&D/c               #  óŠ  K  — t        j                  d«      } t        j                  d«      } | j                  dd|j                  j                  j
                  i| j                  j                  ¬«      }|–— t        |«      D ]  }t        ||«       Œ t        |«      D ]  }t        ||«       Œ |j                  «        y ­w)Nr>   Úpymysqlz*mysql+pymysql://root@localhost:3306/pandasÚclient_flag)Úconnect_argsÚ	poolclass)ÚpytestÚimportorskipr¿   Ú	constantsÚCLIENTÚMULTI_STATEMENTSÚpoolÚNullPoolrþ   r  r  r  rÄ   )r>   r  rÆ   rî   Útbls        r.   Úmysql_pymysql_enginer  [  s¯   è ø€ ä×$Ñ$ \Ó2€JÜ×!Ñ! )Ó,€GØ%ˆZ×%Ñ%Ø4Ø# W×%6Ñ%6×%=Ñ%=×%NÑ%NÐOØ—/‘/×*Ñ*ô€Fð
 ‚LÜ˜fÓ%ò  ˆÜ�$˜Õð ä˜fÓ%ò  ˆÜ�3˜Õð à
‡N�NÕùs   ‚CCc              #  óB   K  — t        | |«       t        | «       | –— y ­w©N©rp   r|   )r  rÌ   s     r.   Úmysql_pymysql_engine_irisr  l  s    è ø€ äÐ-¨yÔ9ÜÐ2Ô3Ø
Óùó   ‚c              #  ó.   K  — t        | |d«       | –— y ­w)Nr'   ©r›   )r  r‘   s     r.   Úmysql_pymysql_engine_typesr!  s  s   è ø€ äÐ.°
¸GÔDØ
Óùó   ‚c              #  ó^   K  — | j                  «       5 }|–— d d d «       y # 1 sw Y   y xY w­wr  ©rš   )r  rV   s     r.   Úmysql_pymysql_connr%  y  s-   è ø€ à	×	%Ñ	%Ó	'ð ¨4ØŠ
÷÷ ñ üó   ‚-“!˜	-¡*¦-c              #  ó^   K  — | j                  «       5 }|–— d d d «       y # 1 sw Y   y xY w­wr  r$  )r  rV   s     r.   Úmysql_pymysql_conn_irisr(    s-   è ø€ à	"×	*Ñ	*Ó	,ð °ØŠ
÷÷ ñ ür&  c              #  ó^   K  — | j                  «       5 }|–— d d d «       y # 1 sw Y   y xY w­wr  r$  )r!  rV   s     r.   Úmysql_pymysql_conn_typesr*  …  ó-   è ø€ à	#×	+Ñ	+Ó	-ð °ØŠ
÷÷ ñ ür&  c               #  óH  K  — t        j                  d«      } t        j                  d«        | j                  d| j                  j                  ¬«      }|–— t        |«      D ]  }t        ||«       Œ t        |«      D ]  }t        ||«       Œ |j                  «        y ­w)Nr>   Úpsycopg2z=postgresql+psycopg2://postgres:postgres@localhost:5432/pandas©r  ©
r  r  r¿   r  r  rþ   r  r  r  rÄ   )r>   rÆ   rî   r  s       r.   Úpostgresql_psycopg2_enginer0  ‹  s“   è ø€ ä×$Ñ$ \Ó2€JÜ
×Ñ˜
Ô#Ø%ˆZ×%Ñ%ØGØ—/‘/×*Ñ*ô€Fð ‚LÜ˜fÓ%ò  ˆÜ�$˜Õð ä˜fÓ%ò  ˆÜ�3˜Õð à
‡N�NÕùs   ‚B B"c              #  óB   K  — t        | |«       t        | «       | –— y ­wr  r  )r0  rÌ   s     r.   Úpostgresql_psycopg2_engine_irisr2  ›  s    è ø€ äÐ3°YÔ?ÜÐ8Ô9Ø
$Ó$ùr  c              #  ó.   K  — t        | |d«       | –— y ­w)NÚpostgresr   )r0  r‘   s     r.   Ú postgresql_psycopg2_engine_typesr5  ¢  s   è ø€ äÐ4°jÀ*ÔMØ
$Ó$ùr"  c              #  ó^   K  — | j                  «       5 }|–— d d d «       y # 1 sw Y   y xY w­wr  r$  )r0  rV   s     r.   Úpostgresql_psycopg2_connr7  ¨  r+  r&  c               #  óT  K  — t        j                  d«       t        j                  d«       ddlm}  d}| j	                  |«      5 }|–— t        |«      D ]  }t        ||«       Œ t        |«      D ]  }t        ||«       Œ |j                  «        d d d «       y # 1 sw Y   y xY w­w)NÚpyarrowÚadbc_driver_postgresqlr   ©Údbapiz4postgresql://postgres:postgres@localhost:5432/pandas)
r  r  r:  r<  rš   rþ   r  r  r  rU   )r<  ÚurirV   rî   r  s        r.   Úpostgresql_adbc_connr>  ®  s—   è ø€ ä
×Ñ˜	Ô"Ü
×ÑÐ0Ô1Ý,à
@€CØ	�‰�sÓ	ð ˜tØŠ
Ü! $Ó'ò 	"ˆDÜ�d˜DÕ!ð	"ä! $Ó'ò 	"ˆCÜ�s˜DÕ!ð	"à�‰Œ÷÷ ñ üs   ‚AB(ÁABÂ	B(ÂB%Â!B(c              #  ó*  K  — dd l }| }	 |j                  d«       	 |j                  d«       |–— y # |j                  $ r |j                  «        t	        ||«       Y ŒDw xY w# |j                  $ r |j                  «        t        |«       Y Œbw xY w­w©Nr   r7   Ú	iris_view)Úadbc_driver_managerÚadbc_get_table_schemaÚProgrammingErrorÚrollbackr_   r|   )r>  rÌ   ÚmgrrV   s       r.   Úpostgresql_adbc_irisrG  ¾  s‹   è ø€ ã%à€Dð9Ø×"Ñ" 6Ô*ð(Ø×"Ñ" ;Ô/ð ƒJøð ×Ñò 9Ø�‰ŒÜ'¨¨iÖ8ð9ûð
 ×Ñò (Ø�‰ŒÜ! $Ö'ð(üóB   ‚BŠ2 œA# ­B²+A ÁBÁA Á BÁ#*BÂBÂBÂBc              #  óþ   K  — dd l }| }	 |j                  d«       |–— y # |j                  $ rK |j                  «        |D �cg c]  }t	        |j                  «       «      ‘Œ nc c}w }}t        ||«       Y Œ^w xY w­w)Nr   r‚   )rB  rC  rD  rE  Útupleri   r•   )r>  r‘   rF  rV   ÚentryÚnew_datas         r.   Úpostgresql_adbc_typesrM  Ñ  sr   è ø€ ã%à€Dð9Ø×"Ñ" 7Ô+ð ƒJøð ×Ñò 9Ø�‰ŒØ7AÖB¨e”E˜%Ÿ,™,›.Õ)ÑBùÒBˆÐBä(¨¨xÖ8ð	9üs1   ‚A=Š  ›A= #A:Á A$Á#A:Á7A=Á9A:Á:A=c              #  ó^   K  — | j                  «       5 }|–— d d d «       y # 1 sw Y   y xY w­wr  r$  )r2  rV   s     r.   Úpostgresql_psycopg2_conn_irisrO  â  s-   è ø€ à	(×	0Ñ	0Ó	2ð °dØŠ
÷÷ ñ ür&  c              #  ó^   K  — | j                  «       5 }|–— d d d «       y # 1 sw Y   y xY w­wr  r$  )r5  rV   s     r.   Úpostgresql_psycopg2_conn_typesrQ  è  s-   è ø€ à	)×	1Ñ	1Ó	3ð °tØŠ
÷÷ ñ ür&  c               #  ó–   K  — t        j                  d«       t        j                  «       5 } d| › �–— d d d «       y # 1 sw Y   y xY w­w)Nr>   ú
sqlite:///)r  r  r·   Úensure_cleanr£   s    r.   Ú
sqlite_strrU  î  sA   è ø€ ä
×Ñ˜Ô%Ü	�‰Ó	ð "˜dØ˜4˜&Ð!Ò!÷"÷ "ñ "üs   ‚*A	¬=´	A	½AÁA	c              #  ó  K  — t        j                  d«      } |j                  | |j                  j                  ¬«      }|–— t        |«      D ]  }t        ||«       Œ t        |«      D ]  }t        ||«       Œ |j                  «        y ­w)Nr>   r.  r/  )rU  r>   rÆ   rî   r  s        r.   Úsqlite_enginerW  õ  s   è ø€ ä×$Ñ$ \Ó2€JØ%ˆZ×%Ñ% j¸J¿O¹O×<TÑ<TÔU€FØ
‚LÜ˜fÓ%ò  ˆÜ�$˜Õð ä˜fÓ%ò  ˆÜ�3˜Õð à
‡N�NÕùs   ‚BBc              #  ó^   K  — | j                  «       5 }|–— d d d «       y # 1 sw Y   y xY w­wr  r$  )rW  rV   s     r.   Úsqlite_connrY    s-   è ø€ à	×	Ñ	Ó	 ð  DØŠ
÷÷ ñ ür&  c                ó¢   — t        j                  d«      } |j                  | «      }t        ||«       t	        |«       |j                  «        | S )Nr>   )r  r  r¿   rp   r|   rÄ   )rU  rÌ   r>   rÆ   s       r.   Úsqlite_str_irisr[    sF   € ä×$Ñ$ \Ó2€JØ%ˆZ×%Ñ% jÓ1€FÜ˜ Ô+Ü˜fÔ%Ø
‡N�NÔØÐr-   c              #  óB   K  — t        | |«       t        | «       | –— y ­wr  r  )rW  rÌ   s     r.   Úsqlite_engine_irisr]    s   è ø€ ä˜¨	Ô2Ü˜mÔ,Ø
Óùr  c              #  ó^   K  — | j                  «       5 }|–— d d d «       y # 1 sw Y   y xY w­wr  r$  )r]  rV   s     r.   Úsqlite_conn_irisr_    s-   è ø€ à	×	#Ñ	#Ó	%ð ¨ØŠ
÷÷ ñ ür&  c                óŽ   — t        j                  d«      } |j                  | «      }t        ||d«       |j	                  «        | S )Nr>   r&   )r  r  r¿   r›   rÄ   )rU  r‘   r>   rÆ   s       r.   Úsqlite_str_typesra    s@   € ä×$Ñ$ \Ó2€JØ%ˆZ×%Ñ% jÓ1€FÜ˜& *¨hÔ7Ø
‡N�NÔØÐr-   c              #  ó.   K  — t        | |d«       | –— y ­w)Nr&   r   )rW  r‘   s     r.   Úsqlite_engine_typesrc  '  s   è ø€ ä˜-¨°XÔ>Ø
Óùr"  c              #  ó^   K  — | j                  «       5 }|–— d d d «       y # 1 sw Y   y xY w­wr  r$  )rc  rV   s     r.   Úsqlite_conn_typesre  -  s-   è ø€ à	×	$Ñ	$Ó	&ð ¨$ØŠ
÷÷ ñ ür&  c               #  ó¬  K  — t        j                  d«       t        j                  d«       ddlm}  t	        j
                  «       5 }d|› �}| j                  |«      5 }|–— t        |«      D ]  }t        ||«       Œ t        |«      D ]  }t        ||«       Œ |j                  «        d d d «       d d d «       y # 1 sw Y   ŒxY w# 1 sw Y   y xY w­w)Nr9  Úadbc_driver_sqliter   r;  zfile:)r  r  rg  r<  r·   rT  rš   rþ   r  r  r  rU   )r<  r¤   r=  rV   rî   r  s         r.   Úsqlite_adbc_connrh  3  sÃ   è ø€ ä
×Ñ˜	Ô"Ü
×ÑÐ,Ô-Ý(ä	�‰Ó	ð ˜dØ�d�VˆnˆØ�]‰]˜3Óð 	 4ØŠJÜ% dÓ+ò &�Ü˜$ Õ%ð&ä% dÓ+ò &�Ü˜3 Õ%ð&à�K‰KŒM÷	÷ð ÷	ð 	ú÷ð üs7   ‚ACÁCÁAB<Â+CÂ3	CÂ<C	ÃCÃCÃCc              #  ó*  K  — dd l }| }	 |j                  d«       	 |j                  d«       |–— y # |j                  $ r |j                  «        t	        ||«       Y ŒDw xY w# |j                  $ r |j                  «        t        |«       Y Œbw xY w­wr@  )rB  rC  rD  rE  r]   r|   )rh  rÌ   rF  rV   s       r.   Úsqlite_adbc_irisrj  D  s‹   è ø€ ã%à€Dð6Ø×"Ñ" 6Ô*ð(Ø×"Ñ" ;Ô/ð ƒJøð ×Ñò 6Ø�‰ŒÜ$ T¨9Ö5ð6ûð
 ×Ñò (Ø�‰ŒÜ! $Ö'ð(ürH  c              #  óv  K  — dd l }| }	 |j                  d«       |–— y # |j                  $ r‡ |j                  «        g }|D ]Q  }t	        |d   «      |d<   |d   �t	        |d   «      |d<   |j                  t        |j                  «       «      «       ŒS t        ||«       |j                  «        Y Œšw xY w­w)Nr   r‚   r‰   r‹   )
rB  rC  rD  rE  Úintrõ   rJ  ri   r“   rU   )rh  r‘   rF  rV   rL  rK  s         r.   Úsqlite_adbc_typesrm  V  s½   è ø€ ã%à€DðØ×"Ñ" 7Ô+ð ƒJøð ×Ñò 
Ø�‰ŒØˆØò 	3ˆEÜ" 5¨Ñ#3Ó4ˆE�)ÑØÐ&Ñ'Ð3Ü+.¨uÐ5FÑ/GÓ+H�Ð'Ñ(Ø�O‰OœE %§,¡,£.Ó1Õ2ð		3ô 	& d¨HÔ5Ø�‰Žð
üs&   ‚B9Š  ›B9 BB6Â3B9Â5B6Â6B9c               #  ó¼   K  — t        j                  t        j                  d«      «      5 } | 5 }|–— d d d «       d d d «       y # 1 sw Y   ŒxY w# 1 sw Y   y xY w­w)Nú:memory:)Ú
contextlibr   ry   rš   ©Úclosing_connrV   s     r.   Úsqlite_buildinrs  l  sW   è ø€ ä	×	Ñ	œGŸO™O¨JÓ7Ó	8ð ¸LØð 	˜TØŠJ÷	÷ð ÷	ð 	ú÷ð üs1   ‚)A«A®A³A»	AÁA	Á	AÁAÁAc              #  óB   K  — t        | |«       t        | «       | –— y ­wr  )r]   r|   )rs  rÌ   s     r.   Úsqlite_buildin_irisru  s  s   è ø€ ä  °Ô;Ü˜nÔ-Ø
Óùr  c              #  ó‚   K  — |D �cg c]  }t        |j                  «       «      ‘Œ }}t        | |«       | –— y c c}w ­wr  )rJ  ri   r“   )rs  r‘   rK  s      r.   Úsqlite_buildin_typesrw  z  s:   è ø€ à5?Ö@¨E”%˜Ÿ™›Õ'Ð@€JÐ@Ü! .°*Ô=Ø
Óùò Aùs   ‚?‡ :§?r  )Úmarksr%  r  r(  r!  r*  r0  r7  r2  rO  r5  rQ  )rW  rY  rU  )r]  r_  r[  )rc  re  ra  rh  r>  rG  rj  rM  rm  rs  ru  rw  c                óP   — |j                  | «      } |j                  d| dd¬«       y )NÚtestrõ   F©r¤   ro   Ú	if_existsr­   )ÚgetfixturevalueÚto_sql)rV   rå   Úrequests      r.   Útest_dataframe_to_sqlr€  Ö  s+   € ð ×"Ñ" 4Ó(€DØ×Ñ˜F¨¸ÈÐÕNr-   c                óþ   — | dk(  rCt        «       s9|j                  j                  t        j                  j                  d¬«      «       |j                  | «      } |j                  d d }|j                  d| dd¬«       y )	Nr>  z=postgres ADBC driver < 1.2 cannot insert index with null type©Úreasonr   rz  rõ   Fr{  )	r   ÚnodeÚ
add_markerr  ÚmarkÚxfailr}  r²   r~  )rV   rå   r  Úempty_dfs       r.   Útest_dataframe_to_sql_emptyr‰  Ý  su   € àÐ%Ò%Ô.@Ô.BØ�‰×ÑÜ�K‰K×ÑØVð ó ô	
ð ×"Ñ" 4Ó(€DØ×Ñ  Ð#€HØ‡O�O˜ T°XÀU€OÕKr-   c                ó€  — t        j                  d«       t        t        j                  dgd¬«      t        j                  t        ddd«      gd¬«      t        j                  t        ddd«      gd¬«      t        j                  t        d«      gd¬«      t        j                  d	gd
¬«      dœ«      }d| v r,| dk(  r|j                  dg¬«      }t        r	t        }d}nd }d}nt        }d}|j                  | «      } t        j                  ||d¬«      5  |j                  d| dd¬«       d d d «       y # 1 sw Y   y xY w)Nr9  rH   zint8[pyarrow]©r@   éç  útimestamp[ns][pyarrow]zdate32[day][pyarrow]zduration[ns][pyarrow]Úazstring[pyarrow])rl  r   r   r   Ústringr{   rh  r   râ   zis_sparse is deprecatedÚ zthe 'timedelta'F)ÚmatchÚcheck_stacklevelÚ
test_arrowÚreplacer{  )r  r  r   ÚpdÚarrayr   r   r   rk   r   ÚDeprecationWarningÚUserWarningr}  r·   Úassert_produces_warningr~  )rV   r  rÖ   Úexp_warningÚmsgs        r.   Ú"test_dataframe_to_sql_arrow_dtypesrœ  ì  s&  € ô ×Ñ˜	Ô"Ü	ä—8‘8˜Q˜C Ô7ÜŸ™Ü˜$  1Ó%Ð&Ð.Fôô —H‘Hœd 4¨¨AÓ.Ð/Ð7MÔNÜŸ™¤9¨Q£< .Ð8OÔPÜ—h‘h ˜uÐ,=Ô>ñ	
ó

€Bð ��~ØÐ%Ò%Ø—‘ + �Ó/ˆBÝÜ,ˆKØ+‰CàˆKØ‰Cä!ˆØˆà×"Ñ" 4Ó(€DÜ	×	#Ñ	# K°sÈUÔ	Sñ QØ
�	‰	�|¨¸È%ˆ	ÔP÷Q÷ Qñ Qús   ÄD4Ä4D=c           
     óØ   — t        j                  d«       t        dt        j                  t        ddd«      |gd¬«      i«      }|j                  | «      } |j                  d| dd	¬
«       y )Nr9  r   rŒ  rH   r�  r‹  r“  r”  Fr{  )r  r  r   r•  r–  r   r}  r~  )rV   r  Únulls_fixturerÖ   s       r.   Ú*test_dataframe_to_sql_arrow_dtypes_missingrŸ    si   € ô ×Ñ˜	Ô"Ü	àœŸ™Ü˜$  1Ó% }Ð5Ð=Uôð	
ó
€Bð ×"Ñ" 4Ó(€DØ‡I�I�< T°YÀe€IÕLr-   ÚmethodÚmultic                ót  — |dk(  r>d| v r:|j                   j                  t        j                  j	                  dd¬«      «       |j                  | «      } t        | d¬«      5 }|j                  |d|¬«       |j                  d«      sJ ‚	 d d d «       t        | d«      t        |«      k(  sJ ‚y # 1 sw Y   Œ$xY w)	Nr¡  r{   z)'method' not implemented for ADBC driversT©rƒ  Ústrict©Úneed_transactionÚ
test_frame©r   )r„  r…  r  r†  r‡  r}  r"   r~  Ú	has_tablerÇ   Úlen)rV   r   rå   r  Ú	pandasSQLs        r.   Útest_to_sqlr¬    s¸   € ð �Ò˜V t™^Ø�‰×ÑÜ�K‰K×ÑØBÈ4ð ó ô	
ð ×"Ñ" 4Ó(€DÜ	˜4°$Ô	7ð 1¸9Ø×Ñ˜ l¸6ÐÔBØ×"Ñ" <Ô0Ð0Ñ0÷1ô �d˜LÓ)¬S°Ó-=Ò=Ð=Ñ=÷1ð 1ús   Á"(B.Â.B7zmode, num_row_coef)r”  rH   )rõ   rI   c                ó  — |j                  | «      } t        | d¬«      5 }|j                  |dd¬«       |j                  |d|¬«       |j                  d«      sJ ‚	 d d d «       t	        | d«      |t        |«      z  k(  sJ ‚y # 1 sw Y   Œ'xY w)NTr¥  r§  Úfail©r|  ©r}  r"   r~  r©  rÇ   rª  )rV   ÚmodeÚnum_row_coefrå   r  r«  s         r.   Útest_to_sql_existr³  .  s”   € ð ×"Ñ" 4Ó(€DÜ	˜4°$Ô	7ð 1¸9Ø×Ñ˜ l¸fÐÔEØ×Ñ˜ l¸dÐÔCØ×"Ñ" <Ô0Ð0Ñ0÷1ô �d˜LÓ)¨\¼CÀÓ<LÑ-LÒLÐLÑL÷	1ð 1ús   Ÿ<BÂBc                óD  — |j                  | «      } t        | d¬«      5 }|j                  |dd¬«       |j                  d«      sJ ‚d}t	        j
                  t        |¬«      5  |j                  |dd¬«       d d d «       d d d «       y # 1 sw Y   ŒxY w# 1 sw Y   y xY w)NTr¥  r§  r®  r¯  z!Table 'test_frame' already exists©r‘  )r}  r"   r~  r©  r  ÚraisesÚ
ValueError)rV   rå   r  r«  r›  s        r.   Útest_to_sql_exist_failr¸  9  s§   € à×"Ñ" 4Ó(€DÜ	˜4°$Ô	7ð J¸9Ø×Ñ˜ l¸fÐÔEØ×"Ñ" <Ô0Ð0Ð0à1ˆÜ�]‰]œ:¨SÔ1ñ 	JØ×Ñ˜[¨,À&ÐÔI÷	J÷Jð J÷
	Jð 	Jú÷Jð Jús$   ŸABÁ$B
Á9BÂ
B	ÂBÂBc                ó  — |j                  | «      } t        d| «      }t        |«       t        j                  d| «      }t        |«       t        j                  d| «      }|j
                  dk(  sJ ‚d|j                  v sJ ‚y )NúSELECT * FROM irisúSELECT * FROM iris where 0=1©r   r¯   r9   )r}  r#   r½   r•  Úread_sqlrº   r¹   ©rV   r  Ú
iris_frames      r.   Útest_read_iris_queryrÀ  E  sy   € à×"Ñ" 4Ó(€DÜÐ 4°dÓ;€JÜ�ZÔ Ü—‘Ð1°4Ó8€JÜ�ZÔ Ü—‘Ð;¸TÓB€JØ×Ñ˜vÒ%Ð%Ð%Ø˜:×-Ñ-Ñ-Ð-Ñ-r-   c                óÂ  — d| v r:|j                   j                  t        j                  j	                  dd¬«      «       |j                  | «      } t        t        d| d¬«      «      }t        |«       t        t        j                  d| d¬«      «      }t        |«       t        t        j                  d| d¬«      «      }|j                  d	k(  sJ ‚d
|j                  v sJ ‚y )Nr{   ú,'chunksize' not implemented for ADBC driversTr£  rº  é   ©Ú	chunksizer»  r¼  r9   )r„  r…  r  r†  r‡  r}  r   r#   r½   r•  r½  rº   r¹   r¾  s      r.   Útest_read_iris_query_chunksizerÆ  Q  sÇ   € à��~Ø�‰×ÑÜ�K‰K×ÑØEØð ó ô	
ð ×"Ñ" 4Ó(€DÜœÐ';¸TÈQÔOÓP€JÜ�ZÔ ÜœŸ™Ð$8¸$È!ÔLÓM€JÜ�ZÔ ÜœŸ™Ð$BÀDÐTUÔVÓW€JØ×Ñ˜vÒ%Ð%Ð%Ø˜:×-Ñ-Ñ-Ð-Ñ-r-   c                ó˜  — d| v r:|j                   j                  t        j                  j	                  dd¬«      «       |j                  | «      } ddlm}m}m	}m
}  |«       }t        | t        «      r || «      n| } |d||¬«      }t         ||«      | d	d
dœ¬«      }	t        |	«       t        | t        «      r|j                  «        y y )Nr{   rÂ  Tr£  r   )r4   r6   r¿   Úselectr7   )Úautoload_withr¬   rª   ©r¤   Úlength©rn   )r„  r…  r  r†  r‡  r}  r>   r4   r6   r¿   rÈ  rx   rÁ   r#   r½   rÄ   )
rV   r  r4   r6   r¿   rÈ  rA   Úautoload_conr7   r¿  s
             r.   Ú.test_read_iris_query_expression_with_parameterrÎ  d  s¿   € à��~Ø�‰×ÑÜ�K‰K×ÑØEØð ó ô	
ð ×"Ñ" 4Ó(€D÷ó ñ ‹z€HÜ*4°T¼3Ô*?‘= Ô&ÀT€LÙ�˜°Ô>€DÜÙˆt‹�d¨MÀSÑ#Iô€Jô �ZÔ Ü�$œÔØ×ÑÕð r-   c                ó4  — d| v r:|j                   j                  t        j                  j	                  dd¬«      «       |d   j                  «       D ]  \  }}|| v sŒ n t        d| › d�«      ‚|j                  | «      } t        || d¬	«      }t        |«       y )
Nr{   rÂ  Tr£  r)   zNo part of z( found in sql_strings['read_parameters']©r¬   rª   rÌ  )
r„  r…  r  r†  r‡  ÚitemsÚKeyErrorr}  r#   r½   )rV   r  r/   r  Úqueryr¿  s         r.   Ú*test_read_iris_query_string_with_parameterrÔ  €  s¦   € à��~Ø�‰×ÑÜ�K‰K×ÑØEØð ó ô	
ð !Ð!2Ñ3×9Ñ9Ó;ò U‰	ˆˆEØ�Š:ÙðUô ˜ T FÐ*RÐSÓTÐTØ×"Ñ" 4Ó(€DÜ  tÐ4HÔI€JÜ�ZÕ r-   c                ó–   — |j                  | «      } t        d| «      }t        |«       t        j                  d| «      }t        |«       y )Nr7   )r}  r$   r½   r•  r½  r¾  s      r.   Útest_read_iris_tablerÖ  ”  s@   € ð ×"Ñ" 4Ó(€DÜ ¨Ó-€JÜ�ZÔ Ü—‘˜V TÓ*€JÜ�ZÕ r-   c                ó<  — d| v r9|j                   j                  t        j                  j	                  d¬«      «       |j                  | «      } t        t        d| d¬«      «      }t        |«       t        t        j                  d| d¬«      «      }t        |«       y )Nr{   ú+chunksize argument NotImplemented with ADBCr‚  r7   rÃ  rÄ  )r„  r…  r  r†  r‡  r}  r   r$   r½   r•  r½  r¾  s      r.   Útest_read_iris_table_chunksizerÙ  ž  s}   € à��~Ø�‰×ÑÜ�K‰K×ÑÐ%RÐÓSô	
ð ×"Ñ" 4Ó(€DÜœ v¨t¸qÔAÓB€JÜ�ZÔ ÜœŸ™ F¨D¸AÔ>Ó?€JÜ�ZÕ r-   c                ó  ‡— |j                  | «      } g Šˆfd„}t        | d¬«      5 }|j                  |d|¬«       |j                  d«      sJ ‚	 d d d «       ‰dgk(  sJ ‚t	        | d«      t        |«      k(  sJ ‚y # 1 sw Y   Œ,xY w)Nc           	     óÊ   •— ‰j                  d«       |D �cg c]  }t        t        ||«      «      ‘Œ }}|j                  | j                  j                  «       |«       y c c}w )NrH   )rõ   rg   rh   rM   rü   rb   )Úpd_tablerV   rÔ   Ú	data_iterr\   rÊ   Úchecks         €r.   Úsamplez$test_to_sql_callable.<locals>.sample±  sL   ø€ Ø�‰�QŒØ09Ö:¨””S˜˜s“^Õ$Ð:ˆÐ:Ø�‰�X—^‘^×*Ñ*Ó,¨dÕ3ùò ;s   —A Tr¥  r§  r¨  rH   r°  )rV   rå   r  rß  r«  rÞ  s        @r.   Útest_to_sql_callablerà  «  s“   ø€ à×"Ñ" 4Ó(€Dà€Eô4ô
 
˜4°$Ô	7ð 1¸9Ø×Ñ˜ l¸6ÐÔBØ×"Ñ" <Ô0Ð0Ñ0÷1ð �Q�CŠ<Ðˆ<Ü�d˜LÓ)¬S°Ó-=Ò=Ð=Ñ=÷	1ð 1ús   §(A;Á;Bc                óè  — | }|dk(  r/|j                  t        j                  j                  d¬«      «       |j	                  | «      } t        j                  d| «      }t        |j                  j                  j                  t        j                  «      sJ ‚t        |j                  j                  j                  t        j                  «      sJ ‚d|v r:t        |j                  j                  j                  t        j                   «      s<J ‚t        |j                  j                  j                  t        j                  «      sJ ‚t        |j"                  j                  j                  t        j                  «      sJ ‚d|v r1t        |j$                  j                  j                  t&        «      sJ ‚y t        |j$                  j                  j                  t        j                  «      sJ ‚y )Nrw  ú;sqlite_buildin connection does not implement read_sql_tabler‚  r‚   r(   )Úapplymarkerr  r†  r‡  r}  r   r$   r´   r‡   r@   r³   rµ   r¶   rˆ   Úintegerr‰   Úbool_rŠ   r‹   Úobject©rV   r  Ú	conn_namerÖ   s       r.   Útest_default_type_conversionré  ½  sn  € à€IØÐ*Ò*Ø×ÑÜ�K‰K×ÑØTð ó ô	
ð ×"Ñ" 4Ó(€DÜ	×	Ñ	˜G TÓ	*€Bä�b—k‘k×'Ñ'×,Ñ,¬b¯k©kÔ:Ð:Ð:Ü�b—i‘i—o‘o×*Ñ*¬B¯J©JÔ7Ð7Ð7ð �yÑ Ü˜"Ÿ*™*×*Ñ*×/Ñ/´·±Ô:Ð:Ð:ä˜"Ÿ*™*×*Ñ*×/Ñ/´·±Ô<Ð<Ð<ô �b×'Ñ'×-Ñ-×2Ñ2´B·K±KÔ@Ð@Ð@ð �yÑ Ü˜"×,Ñ,×2Ñ2×7Ñ7¼Ô@Ð@Ñ@ä˜"×,Ñ,×2Ñ2×7Ñ7¼¿¹ÔEÐEÑEr-   c                óŠ  — |j                  | «      } ddlm} ddlm} t        g d¢g d¢dœ«      }|j                  d| d¬	«       d
} ||«      }t        | |«      rD| j                  «       5 }|j                  «       5  |j                  |«       d d d «       d d d «       n*| j                  «       5  | j                  |«       d d d «       t        j                  d| «      }t        j                  ||«       t        j                  d| «      }t        j                  ||«       y # 1 sw Y   Œ•xY w# 1 sw Y   ŒnxY w# 1 sw Y   ŒzxY w)Nr   rv   r—   ©rH   rI   rJ   ©çš™™™™™¹?r«   ç333333Ó?©rŽ  Úbr§  F©r¤   ro   r­   z}DROP PROCEDURE IF EXISTS get_testdb;

    CREATE PROCEDURE get_testdb ()

    BEGIN
        SELECT * FROM test_frame;
    ENDzCALL get_testdb();)r}  r>   rw   r™   r˜   r   r~  rx   rš   rj   rM   r   r#   r·   Úassert_frame_equalr½  )	rV   r  rw   r˜   rÖ   ÚprocÚengine_connÚres1Úres2s	            r.   Útest_read_procedurer÷  Ý  s  € à×"Ñ" 4Ó(€Dõ
  Ý(ä	šªÑ9Ó	:€BØ‡I�I�< T°€IÔ7ð€Dñ �‹:€DÜ�$˜ÔØ�\‰\‹^ð 	*˜{Ø×"Ñ"Ó$ñ *Ø×#Ñ# DÔ)÷*÷	*ð 	*ð �Z‰Z‹\ñ 	Ø�L‰L˜Ô÷	ô ×ÑÐ2°DÓ9€DÜ×Ñ˜"˜dÔ#ô �<‰<Ð,¨dÓ3€DÜ×Ñ˜"˜dÕ#÷*ð *ú÷	*ð 	*ú÷	ð 	ús0   Á*D-Á;D!ÂD-Â.D9Ä!D*	Ä&D-Ä-D6Ä9EÚexpected_countrI   zSuccess!c                óø   ‡— ˆfd„}|j                  | «      } t        ddgddgddgdœ«      }|j                  d	| d
|¬«      }‰€|�	J ‚|‰k(  sJ ‚t        j                  d	| «      }t        j                  ||«       y )Nc           	     óÞ  •— |j                   }|j                  «       5 }t        «       }t        j                  |«      }|j                  |«       |j                  d«       dj                  |D �cg c]  }d|› d�‘Œ
 c}«      }	| j                  r| j                  › d| j                  › �}
n| j                  }
d|
› d|	› d�}|j                  ||¬«       d d d «       ‰S c c}w # 1 sw Y   ‰S xY w)	Nr   z, r  ú.zCOPY z (z) FROM STDIN WITH CSV)r   Úfile)Ú
connectionrL   r	   rO   ÚwriterÚ	writerowsÚseekÚjoinrû   r¤   Úcopy_expert)rü   rV   rÔ   rÝ  Ú
dbapi_connrY   Ús_bufrþ  Úkr¹   rÅ   Ú	sql_queryrø  s               €r.   Úpsql_insert_copyzBtest_copy_from_callable_insertion_method.<locals>.psql_insert_copy  sÛ   ø€ à—_‘_ˆ
Ø×ÑÓ ð 	7 CÜ“JˆEÜ—Z‘Z Ó&ˆFØ×Ñ˜YÔ'Ø�J‰J�qŒMà—i‘i°4Ö 8¨a 1 Q C q¢Ò 8Ó9ˆGØ�|Š|Ø %§¡˜~¨Q¨u¯z©z¨lÐ;‘
à"ŸZ™Z�
à 
˜|¨2¨g¨YÐ6KÐLˆIØ�O‰O 	°ˆOÔ6÷	7ð Ðùò !9÷	7ð Ðús   žAC"Á/C
Á<AC"ÃC"Ã"C,rH   rI   rí  r«   rŽ  Ún©Úcol1Úcol2Úcol3r§  F)r¤   ro   r­   r   ©r}  r   r~  r   r$   r·   rò  )rV   rø  r  r  ÚexpectedÚresult_countÚresults    `     r.   Ú(test_copy_from_callable_insertion_methodr    s˜   ø€ ôð& ×"Ñ" 4Ó(€DÜ 1 a &°3¸°*ÀsÈCÀjÑQÓR€HØ—?‘?Ø˜t¨5Ð9Ið #ó €Lð ÐØÐ#Ð#Ð#à˜~Ò-Ð-Ð-Ü×Ñ ¨dÓ3€FÜ×Ñ˜& (Õ+r-   c                ó<  ‡— |j                  | «      } ddlmŠ ddlm} ddlm} ˆfd„} |d«      }t        | |«      rD| j                  «       5 }|j                  «       5  |j                  |«       d d d «       d d d «       n*| j                  «       5  | j                  |«       d d d «       t        g d¢gt        d«      ¬	«      }|j                  d
| dd¬«       t        g d¢gt        d«      ¬	«      }|j                  d
| dd|¬«      }	t        j                  d
| «      }
t!        j"                  |
|«       |	dk(  sJ ‚t        j$                  | d¬«      5 }|j'                  d
«       d d d «       y # 1 sw Y   ŒþxY w# 1 sw Y   Œ×xY w# 1 sw Y   ŒãxY w# 1 sw Y   y xY w)Nr   ra   r—   rv   c           	     óð   •— |D �cg c]  }t        t        ||«      «      ‘Œ }} ‰| j                  «      j                  |«      j	                  dg¬«      }|j                  |«      }|j                  S c c}w )NrŽ  )Úindex_elements)rg   rh   rü   ri   Úon_conflict_do_nothingrM   Úrowcount©	rü   rV   rÔ   rÝ  r\   rÊ   rX   r  rb   s	           €r.   Úinsert_on_conflictzHtest_insertion_method_on_conflict_do_nothing.<locals>.insert_on_conflict2  sj   ø€ Ø09Ö:¨””S˜˜s“^Õ$Ð:ˆÐ:á�5—;‘;Óß‰V�D‹\ß#Ñ#°C°5Ð#Ó9ð 	ð
 —‘˜dÓ#ˆØ�‰Ðùò ;s   †A3zx
    CREATE TABLE test_insert_conflict (
        a  integer PRIMARY KEY,
        b  numeric,
        c  text
    );
    ©rH   çÍÌÌÌÌÌ @rŽ  Úabcrâ   Útest_insert_conflictrõ   Fr{  ©rH   gš™™™™™	@rð  ©r¤   ro   r­   r|  r   Tr¥  )r}  Úsqlalchemy.dialects.postgresqlrb   r™   r˜   Úsqlalchemy.sqlrw   rx   rš   rj   rM   r   Úlistr~  r   r$   r·   rò  r   r  )rV   r  r˜   rw   r  Ú
create_sqlro   r  Ú	df_insertÚinsertedr  r«  rb   s               @r.   Ú,test_insertion_method_on_conflict_do_nothingr%  )  s�  ø€ ð ×"Ñ" 4Ó(€Då5Ý(Ý#ôñ ð	ó€Jô �$˜ÔØ�\‰\‹^ð 	(˜sØ—‘“ñ (Ø—‘˜JÔ'÷(÷	(ð 	(ð �Z‰Z‹\ñ 	%Ø�L‰L˜Ô$÷	%ô š-˜´$°u³+Ô>€HØ‡O�OØ#¨¸Èð ô ô š=˜/´4¸³;Ô?€IØ×ÑØ#ØØØØ!ð  ó €Hô ×ÑÐ 6¸Ó=€FÜ×Ñ˜& (Ô+Ø�qŠ=Ðˆ=ô 
�‰˜°Ô	5ð 5¸Ø×ÑÐ3Ô4÷5ð 5÷1(ð (ú÷	(ð 	(ú÷	%ð 	%ú÷*5ð 5úó<   ÁE:ÁE.Á1E:ÂFÅFÅ.E7	Å3E:Å:FÆFÆFc                óT  — d| v sd| v r/|j                  t        j                  j                  d¬«      «       |j	                  | «      } t        g d¢g d¢gt        d«      ¬«      }|j                  d	| d
dd¬«       t        j                  d	| d¬«      }t        j                  ||«       y )Nr&   r'   z2test for public schema only specific to postgresqlr‚  r  )rI   gÍÌÌÌÌÌ@rð  r  râ   Útest_public_schemarõ   FÚpublic)r¤   ro   r|  r­   rû   ©rû   )rã  r  r†  r‡  r}  r   r!  r~  r   r$   r·   rò  )rV   r  Ú	test_dataÚdf_outs       r.   Útest_to_sql_on_public_schemar-  c  s¨   € à�4Ñ˜7 d™?Ø×ÑÜ�K‰K×ÑØKð ó ô	
ð ×"Ñ" 4Ó(€Däš=ª-Ð8Ä$ÀuÃ+ÔN€IØ×ÑØ!ØØØØð ô ô ×ÑÐ 4°dÀ8ÔL€FÜ×Ñ˜) VÕ,r-   c                ó<  ‡— |j                  | «      } ddlmŠ ddlm} ddlm} ˆfd„} |d«      }t        | |«      rD| j                  «       5 }|j                  «       5  |j                  |«       d d d «       d d d «       n*| j                  «       5  | j                  |«       d d d «       t        g d¢gt        d«      ¬	«      }|j                  d
| dd¬«       t        g d¢gt        d«      ¬	«      }|j                  d
| dd|¬«      }	t        j                  d
| «      }
t!        j"                  |
|«       |	dk(  sJ ‚t        j$                  | d¬«      5 }|j'                  d
«       d d d «       y # 1 sw Y   ŒþxY w# 1 sw Y   Œ×xY w# 1 sw Y   ŒãxY w# 1 sw Y   y xY w)Nr   ra   r—   rv   c           	     óD  •— |D �cg c]  }t        t        ||«      «      ‘Œ }} ‰| j                  «      j                  |«      }|j	                  |j
                  j                  |j
                  j                  ¬«      }|j                  |«      }|j                  S c c}w )N)rð  r÷   )
rg   rh   rü   ri   Úon_duplicate_key_updater$  rð  r÷   rM   r  r  s	           €r.   r  zDtest_insertion_method_on_conflict_update.<locals>.insert_on_conflict„  s|   ø€ Ø09Ö:¨””S˜˜s“^Õ$Ð:ˆÐ:Ù�e—k‘kÓ"×)Ñ)¨$Ó/ˆØ×+Ñ+¨d¯m©m¯o©oÀÇÁÇÁÐ+ÓQˆØ—‘˜dÓ#ˆØ�‰Ðùò	 ;s   †Bzv
    CREATE TABLE test_insert_conflict (
        a INT PRIMARY KEY,
        b FLOAT,
        c VARCHAR(10)
    );
    r  r  râ   r  rõ   Fr{  r  r  rI   Tr¥  )r}  Úsqlalchemy.dialects.mysqlrb   r™   r˜   r   rw   rx   rš   rj   rM   r   r!  r~  r   r$   r·   rò  r   r  )rV   r  r˜   rw   r  r"  ro   rÖ   r  r$  r  r«  rb   s               @r.   Ú(test_insertion_method_on_conflict_updater2  {  s„  ø€ ð ×"Ñ" 4Ó(€Då0Ý(Ý#ôñ ð	ó€Jô �$˜ÔØ�\‰\‹^ð 	(˜sØ—‘“ñ (Ø—‘˜JÔ'÷(÷	(ð 	(ð �Z‰Z‹\ñ 	%Ø�L‰L˜Ô$÷	%ô 
’M�?¬D°«KÔ	8€BØ‡I�IÐ)¨t¸xÈu€IÔUäš-˜´$°u³+Ô>€HØ�‰Ø#ØØØØ!ð ó €Hô ×ÑÐ 6¸Ó=€FÜ×Ñ˜& (Ô+Ø�qŠ=Ðˆ=ô 
�‰˜°Ô	5ð 5¸Ø×ÑÐ3Ô4÷5ð 5÷-(ð (ú÷	(ð 	(ú÷	%ð 	%ú÷&5ð 5úr&  c                óŠ  — |j                  | «      } ddlm} ddlm} dt        j                  «       j                  › �}dt        j                  «       j                  › �} |d|› d|› d|› d	|› d
�	«      }t        | |«      rD| j                  «       5 }|j                  «       5  |j                  |«       d d d «       d d d «       n*| j                  «       5  | j                  |«       d d d «       t        || «      }t        dgddœ«      }	t        j                  ||	«       y # 1 sw Y   ŒnxY w# 1 sw Y   ŒGxY w# 1 sw Y   ŒSxY w)Nr   r—   rv   Úgroup_Úgroup_view_z
    CREATE TABLE zF (
        group_id INTEGER,
        name TEXT
    );
    INSERT INTO z- VALUES
        (1, 'name');
    CREATE VIEW z
    AS
    SELECT * FROM z;
    rH   r¤   ©Úgroup_idr¤   )r}  r™   r˜   r   rw   ÚuuidÚuuid4Úhexrx   rš   rj   rM   r$   r   r·   rò  )
rV   r  r˜   rw   rÅ   rý   Úsql_stmtro   r  r  s
             r.   Útest_read_view_postgresr<  °  s>  € ð ×"Ñ" 4Ó(€Då(Ý#àœ$Ÿ*™*›,×*Ñ*Ð+Ð,€JØœdŸj™j›l×.Ñ.Ð/Ð0€IáðØ�ð ð �ð à�ð à�,ð ð
	ó€Hô �$˜ÔØ�\‰\‹^ð 	&˜sØ—‘“ñ &Ø—‘˜HÔ%÷&÷	&ð 	&ð �Z‰Z‹\ñ 	#Ø�L‰L˜Ô"÷	#ä˜I tÓ,€FÜ q c°6Ñ:Ó;€HÜ×Ñ˜& (Õ+÷&ð &ú÷	&ð 	&ú÷	#ð 	#ús0   ÂD-Â"D!Â4D-ÃD9Ä!D*	Ä&D-Ä-D6Ä9Ec                óì   — d}d}d}| j                  |«       | j                  |«       | j                  |«       t        j                  d| «      }t        dgddœ«      }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;
zSELECT * FROM group_viewrH   r¤   r6  )rM   r•  r½  r   r·   rò  )rs  Úcreate_tableÚinsert_intoÚcreate_viewr  r  s         r.   Útest_read_view_sqliterA  Ô  su   € ð€Lð€Kð€Kð
 ×Ñ˜<Ô(Ø×Ñ˜;Ô'Ø×Ñ˜;Ô'Ü�[‰[Ð3°^ÓD€FÜ q c°6Ñ:Ó;€HÜ×Ñ˜& (Õ+r-   c                óð   — t        j                  t        d¬«      5  t        j                  t
        d¬«      5  t        j                  d| «       d d d «       d d d «       y # 1 sw Y   ŒxY w# 1 sw Y   y xY w)Nz+pandas.io.sql.execute requires a connectionrµ  úP`pandas.io.sql.execute` is deprecated and will be removed in the future version.úselect * from iris)r  r¶  Ú	TypeErrorr·   r™  ÚFutureWarningr   rM   )r]  s    r.   Útest_execute_typeerrorrG  í  sq   € Ü	�‰”yÐ(UÔ	Vñ BÜ×'Ñ'Üð5ô
ñ 	Bô
 �K‰KÐ,Ð.@ÔA÷	B÷Bð B÷	Bð 	Bú÷Bð Bús"   œA,¸A ÁA,Á A)	Á%A,Á,A5c                ó�   — t        j                  t        d¬«      5  t        j                  d| «       d d d «       y # 1 sw Y   y xY w)NrC  rµ  rD  )r·   r™  rF  r   rM   )r_  s    r.   Útest_execute_deprecatedrI  ÷  s?   € ä	×	#Ñ	#Üð1ô
ñ <ô
 	�‰Ð(Ð*:Ô;÷<÷ <ñ <ús	   œ<¼Ac                ó<   — d| v ryd| v ryd| v ryt        d| › �«      ‚)Nr(   r&   r'   zunsupported connection: )r·  )rè  s    r.   ÚflavorrK    s6   € Ø�yÑ ØØ	�YÑ	ØØ	�IÑ	Øä
Ð/°	¨{Ð;Ó
<Ð<r-   c                ó’  — d| v r:|j                   j                  t        j                  j	                  dd¬«      «       | }|j                  | «      } |d   t        |«         }d}t        | «      5 }|j                  «       5  |j                  ||¬«      }d d d «       d d d «       t        «       y # 1 sw Y   ŒxY w# 1 sw Y   Œ!xY w)Nr{   ú)'params' not implemented for ADBC driversTr£  r)   rÐ  rÌ  ©r„  r…  r  r†  r‡  r}  rK  r"   Úrun_transactionÚ
read_queryr½   ©rV   r  r/   rè  rÓ  rn   r«  r¿  s           r.   Útest_read_sql_iris_parameterrR    sÐ   € à��~Ø�‰×ÑÜ�K‰K×ÑØBØð ó ô	
ð €IØ×"Ñ" 4Ó(€DØÐ)Ñ*¬6°)Ó+<Ñ=€EØ!€FÜ	˜4Ó	 ð D IØ×&Ñ&Ó(ñ 	DØ"×-Ñ-¨e¸FÐ-ÓCˆJ÷	D÷Dô �ZÕ ÷	Dð 	Dú÷Dð Dús$   Á0B=ÂB1ÂB=Â1B:	Â6B=Â=Cc                ó˜  — d| v r:|j                   j                  t        j                  j	                  dd¬«      «       | }|j                  | «      } |d   t        |«         }dddœ}t        | «      5 }|j                  «       5  |j                  ||¬	«      }d d d «       d d d «       t        «       y # 1 sw Y   ŒxY w# 1 sw Y   Œ!xY w)
Nr{   rM  Tr£  r*   r¬   rª   rÊ  rÌ  rN  rQ  s           r.   Ú"test_read_sql_iris_named_parameterrT    sÕ   € à��~Ø�‰×ÑÜ�K‰K×ÑØBØð ó ô	
ð €IØ×"Ñ" 4Ó(€DØÐ/Ñ0´¸	Ó1BÑC€EØ#¨sÑ3€FÜ	˜4Ó	 ð D IØ×&Ñ&Ó(ñ 	DØ"×-Ñ-¨e¸FÐ-ÓCˆJ÷	D÷Dô �ZÕ ÷	Dð 	Dú÷Dð Dús$   Á3C ÂB4ÂC Â4B=	Â9C Ã C	c                óˆ  — d| v sd| v r3d| vr/|j                  t        j                  j                  d¬«      «       | }|j	                  | «      } |d   t        |«         }t        | «      5 }|j                  «       5  |j                  |d ¬«      }d d d «       d d d «       t        «       y # 1 sw Y   ŒxY w# 1 sw Y   Œ!xY w)Nr'   r(   r{   zbroken testr‚  r+   rÌ  )
rã  r  r†  r‡  r}  rK  r"   rO  rP  r½   )rV   r  r/   rè  rÓ  r«  r¿  s          r.   Ú,test_read_sql_iris_no_parameter_with_percentrV  3  sÈ   € à�$�˜<¨4Ñ/°FÀ$Ñ4FØ×ÑœFŸK™K×-Ñ-°]Ð-ÓCÔDà€IØ×"Ñ" 4Ó(€DàÐ9Ñ:¼6À)Ó;LÑM€EÜ	˜4Ó	 ð B IØ×&Ñ&Ó(ñ 	BØ"×-Ñ-¨e¸DÐ-ÓAˆJ÷	B÷Bô �ZÕ ÷	Bð 	Bú÷Bð Bús$   Á+B8Á<B,ÂB8Â,B5	Â1B8Â8Cc                óh   — |j                  | «      } t        j                  d| «      }t        |«       y )NzSELECT * FROM iris_view)r}  r   r#   r½   r¾  s      r.   Útest_api_read_sql_viewrX  F  s-   € à×"Ñ" 4Ó(€DÜ×#Ñ#Ð$=¸tÓD€JÜ�ZÕ r-   c                ó>  — d| v r9|j                   j                  t        j                  j	                  d¬«      «       |j                  | «      } d}t        j                  || d¬«      }t        j                  || «      }t        j                  t        |«      |«       y )Nr{   rØ  r‚  z1SELECT * FROM iris_view WHERE "SepalLength" < 0.0r¯   rÄ  )r„  r…  r  r†  r‡  r}  r   r#   r·   rò  r   )rV   r  rÓ  Ú
with_batchÚwithout_batchs        r.   Ú*test_api_read_sql_with_chunksize_no_resultr\  M  sƒ   € à��~Ø�‰×ÑÜ�K‰K×ÑÐ%RÐÓSô	
ð ×"Ñ" 4Ó(€DØ?€EÜ×#Ñ# E¨4¸1Ô=€JÜ×&Ñ& u¨dÓ3€MÜ×Ñœ& Ó,¨mÕ<r-   c                ó*  — |j                  | «      } t        j                  d| «      r1t        j                  | d¬«      5 }|j	                  d«       d d d «       t        j
                  |d| «       t        j                  d| «      sJ ‚y # 1 sw Y   Œ9xY w)Nrå   Tr¥  )r}  r   r©  r   r  r~  )rV   r  rå   r«  s       r.   Útest_api_to_sqlr^  Z  sy   € à×"Ñ" 4Ó(€DÜ
‡}�}�] DÔ)Ü�_‰_˜T°DÔ9ð 	0¸YØ× Ñ  Ô/÷	0ô ‡J�Jˆ{˜M¨4Ô0Ü�=‰=˜¨Ô-Ð-Ñ-÷		0ð 	0ús   ¿B	Â	Bc                óÄ  — |j                  | «      } t        j                  d| «      r1t        j                  | d¬«      5 }|j	                  d«       d d d «       t        j
                  |d| d¬«       t        j                  d| «      sJ ‚d}t        j                  t        |¬«      5  t        j
                  |d| d¬«       d d d «       y # 1 sw Y   ŒzxY w# 1 sw Y   y xY w)NÚtest_frame2Tr¥  r®  r¯  z"Table 'test_frame2' already existsrµ  )	r}  r   r©  r   r  r~  r  r¶  r·  )rV   r  rå   r«  r›  s        r.   Útest_api_to_sql_failra  e  s¿   € à×"Ñ" 4Ó(€DÜ
‡}�}�] DÔ)Ü�_‰_˜T°DÔ9ð 	0¸YØ× Ñ  Ô/÷	0ô ‡J�Jˆ{˜M¨4¸6ÕBÜ�=‰=˜¨Ô-Ð-Ð-à
.€CÜ	�‰”z¨Ô	-ñ GÜ�
‰
�; ¨t¸vÕF÷Gð G÷	0ð 	0ú÷Gð Gús   ¿C
Â'CÃ
CÃCc                óœ  — |j                  | «      } t        j                  d| «      r1t        j                  | d¬«      5 }|j	                  d«       d d d «       t        j
                  |d| d¬«       t        j
                  |d| d¬«       t        j                  d| «      sJ ‚t        |«      }t        | d«      }||k(  sJ ‚y # 1 sw Y   ŒrxY w)Nrç   Tr¥  r®  r¯  r”  ©r}  r   r©  r   r  r~  rª  rÇ   ©rV   r  rå   r«  Únum_entriesÚnum_rowss         r.   Útest_api_to_sql_replacerg  t  s±   € à×"Ñ" 4Ó(€DÜ
‡}�}�] DÔ)Ü�_‰_˜T°DÔ9ð 	0¸YØ× Ñ  Ô/÷	0ô ‡J�Jˆ{˜M¨4¸6ÕBä‡J�Jˆ{˜M¨4¸9ÕEÜ�=‰=˜¨Ô-Ð-Ð-ä�kÓ"€KÜ˜$ Ó.€Hà�{Ò"Ð"Ñ"÷	0ð 	0ús   ¿CÃCc                ó¶  — |j                  | «      } t        j                  d| «      r1t        j                  | d¬«      5 }|j	                  d«       d d d «       t        j
                  |d| d¬«      dk(  sJ ‚t        j
                  |d| d¬«      dk(  sJ ‚t        j                  d| «      sJ ‚dt        |«      z  }t        | d«      }||k(  sJ ‚y # 1 sw Y   ŒxY w)	NÚtest_frame4Tr¥  r®  r¯  rK   rõ   rI   rc  rd  s         r.   Útest_api_to_sql_appendrj  †  sÎ   € à×"Ñ" 4Ó(€DÜ
‡}�}�] DÔ)Ü�_‰_˜T°DÔ9ð 	0¸YØ× Ñ  Ô/÷	0ô �:‰:�k =°$À&ÔIÈQÒNÐNÐNô �:‰:�k =°$À(ÔKÈqÒPÐPÐPÜ�=‰=˜¨Ô-Ð-Ð-à”c˜+Ó&Ñ&€KÜ˜$ Ó.€Hà�{Ò"Ð"Ñ"÷	0ð 	0úó   ¿CÃCc                óV  — |j                  | «      } t        j                  d| «      r1t        j                  | d¬«      5 }|j	                  d«       d d d «       t        j
                  |d| d¬«       t        j                  d| «      }t        j                  ||«       y # 1 sw Y   ŒOxY w)NÚtest_frame5Tr¥  F©r­   zSELECT * FROM test_frame5)	r}  r   r©  r   r  r~  r½  r·   rò  )rV   r  rç   r«  r  s        r.   Útest_api_to_sql_type_mappingro  ™  sˆ   € à×"Ñ" 4Ó(€DÜ
‡}�}�] DÔ)Ü�_‰_˜T°DÔ9ð 	0¸YØ× Ñ  Ô/÷	0ô ‡J�Jˆ{˜M¨4°uÕ=Ü�\‰\Ð5°tÓ<€Fä×Ñ˜+ vÕ.÷	0ð 	0ús   ¿BÂB(c                ó¶  — |j                  | «      } t        j                  d| «      r1t        j                  | d¬«      5 }|j	                  d«       d d d «       t        t        j                  dd¬«      d¬«      }t        j                  |d| d	¬
«       t        j                  d| «      }t        j                  |j                  «       |«       y # 1 sw Y   ŒxY w)NÚtest_seriesTr¥  r¯   rÓ   r‹  Úseriesr£   Frn  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_seriesrw  ¦  s§   € à×"Ñ" 4Ó(€DÜ
‡}�}�] DÔ)Ü�_‰_˜T°DÔ9ð 	0¸YØ× Ñ  Ô/÷	0ô 	Œr�y‰y˜ 'Ô*°Ô:€AÜ‡J�Jˆq�- ¨UÕ3Ü	×	Ñ	Ð7¸Ó	>€BÜ×Ñ˜!Ÿ*™*›,¨Õ+÷	0ð 	0úrk  c                ó2  — | }|j                  | «      } t        j                  d| «      r1t        j                  | d¬«      5 }|j	                  d«       d d d «       t        j
                  |d| ¬«       t        j                  d| ¬«      }d|v r|j                  ddi¬	«      }|j                  |_        |j                  dd¬
«       |j                  j                  t        «       d |j                  _        t        j                  ||«       y # 1 sw Y   Œ»xY w)NÚtest_frame_roundtripTr¥  ©ro   ú"SELECT * FROM test_frame_roundtripr{   Ú__index_level_0__Úlevel_0râ   ©Úinplace)r}  r   r©  r   r  r~  r#   Úrenamer­   Ú	set_indexrÕ   rl  r¤   r·   rò  ©rV   r  rå   rè  r«  r  s         r.   Útest_api_roundtriprƒ  ³  sî   € à€IØ×"Ñ" 4Ó(€DÜ
‡}�}Ð+¨TÔ2Ü�_‰_˜T°DÔ9ð 	9¸YØ× Ñ Ð!7Ô8÷	9ô ‡J�Jˆ{Ð2¸Õ=Ü×ÑÐ DÈ$ÔO€Fð �ÑØ—‘Ð(;¸YÐ'G�ÓHˆØ×$Ñ$€F„LØ
×Ñ�Y¨ÐÔ-Ø
‡L�L×ÑœÔØ€F‡L�LÔÜ×Ñ˜& +Õ.÷	9ð 	9ús   ÁDÄDc                óÔ  — d| v r9|j                   j                  t        j                  j	                  d¬«      «       |j                  | «      } t        j                  d| «      r1t        j                  | d¬«      5 }|j                  d«       d d d «       t        j                  |d| dd¬	«       t        j                  d
| ¬«      }t        j                  ||«       y # 1 sw Y   ŒQxY w)Nr{   rØ  r‚  ry  Tr¥  FrI   )ro   r­   rÅ  r{  rz  )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È   € à��~Ø�‰×ÑÜ�K‰K×ÑÐ%RÐÓSô	
ð ×"Ñ" 4Ó(€DÜ
‡}�}Ð+¨TÔ2Ü�_‰_˜T°DÔ9ð 	9¸YØ× Ñ Ð!7Ô8÷	9ô ‡J�JØØØØØõô ×ÑÐ DÈ$ÔO€FÜ×Ñ˜& +Õ.÷	9ð 	9ús   Á<CÃC'c                ó   — |j                  | «      } t        j                  | «      5 }|j                  d«      }|j	                  «       }|j                  «        d d d «       t        «      g d¢k(  sJ ‚y # 1 sw Y   ŒxY w©Nrº  r©   )r}  r   r"   rM   rÀ   rT   r!  )rV   r  Ú
pandas_sqlÚiris_resultsr\   s        r.   Útest_api_execute_sqlrŠ  Þ  sy   € ð ×"Ñ" 4Ó(€DÜ	×	Ñ	˜tÓ	$ð ¨
Ø!×)Ñ)Ð*>Ó?ˆØ×#Ñ#Ó%ˆØ×ÑÔ÷ô �‹9Ò;Ò;Ð;Ñ;÷	ð ús   §2A4Á4A=c           
     ól  — | }|j                  | «      } t        j                  d| «      }d|v s>d|v s:t        |j                  j
                  j                  t        j                  «      rJ ‚t        j                  d| dg¬«      }t        |j                  j
                  j                  t        j                  «      sJ ‚|j                  j                  «       t        dddd	d	d	«      t        ddd
d	d	d	«      gk(  sJ ‚t        j                  d| ddi¬«      }t        |j                  j
                  j                  t        j                  «      sJ ‚|j                  j                  «       t        dddd	d	d	«      t        ddd
d	d	d	«      gk(  sJ ‚t        j                  d| dg¬«      }t        |j                  j
                  j                  t        j                  «      sJ ‚|j                  j                  «       t        dddd	d	d	«      t        dddd	d	d	«      gk(  sJ ‚t        j                  d| ddi¬«      }t        |j                  j
                  j                  t        j                  «      sJ ‚|j                  j                  «       t        dddd	d	d	«      t        dddd	d	d	«      gk(  sJ ‚t        j                  d| ddi¬«      }t        |j                  j
                  j                  t        j                  «      sJ ‚|j                  j                  «       t        d«      t        d«      gk(  sJ ‚y )NúSELECT * FROM typesr'   r4  r„   ©Úparse_datesiÐ  rH   rJ   r   rK   ú%Y-%m-%d %H:%M:%Sr…   iÂ  é   é   iÝ  ru  r†   z%Y%m%dz
2010-10-10z
2010-12-12)r}  r   r#   r´   r„   r@   r³   rµ   Ú
datetime64Útolistr   r…   r†   rç  s       r.   Útest_api_date_parsingr”  é  s   € à€IØ×"Ñ" 4Ó(€Dô 
×	Ñ	Ð1°4Ó	8€BØ�yÑ  J°)Ñ$;Ü˜bŸj™j×.Ñ.×3Ñ3´R·]±]ÔCÐCÐCä	×	Ñ	Ð1°4ÀiÀ[Ô	Q€BÜ�b—j‘j×&Ñ&×+Ñ+¬R¯]©]Ô;Ð;Ð;Ø�:‰:×ÑÓÜ�$˜˜1˜a  AÓ&Ü�$˜˜1˜a  AÓ&ð#ò ð ð ô
 
×	Ñ	ØØØÐ 3Ð4ô
€Bô
 �b—j‘j×&Ñ&×+Ñ+¬R¯]©]Ô;Ð;Ð;Ø�:‰:×ÑÓÜ�$˜˜1˜a  AÓ&Ü�$˜˜1˜a  AÓ&ð#ò ð ð ô
 
×	Ñ	Ð1°4ÀlÀ^Ô	T€BÜ�b—m‘m×)Ñ)×.Ñ.´·±Ô>Ð>Ð>Ø�=‰=×ÑÓ!Ü�$˜˜B  1 aÓ(Ü�$˜˜1˜a  AÓ&ð&ò ð ð ô
 
×	Ñ	Ø˜t°,ÀÐ1Dô
€Bô �b—m‘m×)Ñ)×.Ñ.´·±Ô>Ð>Ð>Ø�=‰=×ÑÓ!Ü�$˜˜B  1 aÓ(Ü�$˜˜1˜a  AÓ&ð&ò ð ð ô
 
×	Ñ	ØØØ% xÐ0ô
€Bô
 �b×'Ñ'×-Ñ-×2Ñ2´B·M±MÔBÐBÐBØ×Ñ×#Ñ#Ó%Ü�,ÓÜ�,Óð*ò ð ñ r-   Úerror)rs   ÚraiseÚcoercezread_sql, text, moderŒ  )r>   Úfallbackr‚   r>   c                óî  — | }|j                  | «      } |dk(  r4|dk(  r/|j                  t        j                  j	                  d¬«      «       |j                  ddi«      } ||| dd|ii¬«      }	d	|v r6|	d
   j                  t        «      |	d
<   |	d   j                  t        «      |	d<   |dk(  r2|j                  ddddœ«      }t        s|d   j                  d«      |d<   t        j                  |	|«       y )Nr‚   rw  z failing combination of argumentsr‚  r„   údatetime64[ns]ru   )ro   rŽ  r4  r‰   r‹   rM  Úint32)r…   r†   rˆ   zdatetime64[us])r}  rã  r  r†  r‡  rÕ   rl  rR   r   r·   rò  )
rV   r  r½  rw   r±  r•  r×   rè  r  r  s
             r.   Ú!test_api_custom_dateparsing_errorrœ  !  s  € ð$ €IØ×"Ñ" 4Ó(€DØˆw‚˜9Ð(>Ò>Ø×ÑÜ�K‰K×ÑÐ%GÐÓHô	
ð  ×&Ñ&¨	Ð3CÐ'DÓE€HáØØà˜ %Ð(ð
ô€Fð �YÑà" 9Ñ-×4Ñ4´SÓ9ˆˆyÑØ$*Ð+<Ñ$=×$DÑ$DÄUÓ$KˆÐ Ñ!àÐ+Ò+Ø—?‘?à%Ø")Ø!ñó
ˆõ $à"*¨9Ñ"5×"<Ñ"<Ð=MÓ"NˆH�YÑä×Ñ˜& (Õ+r-   c                óD  — |j                  | «      } t        j                  d| dddg¬«      }t        |j                  j
                  j                  t        j                  «      sJ ‚t        |j                  j
                  j                  t        j                  «      sJ ‚y )NrŒ  r„   r…   )Ú	index_colrŽ  )
r}  r   r#   r´   r­   r@   r³   rµ   r’  r…   ©rV   r  rÖ   s      r.   Útest_api_date_and_indexr   X  s}   € ð ×"Ñ" 4Ó(€DÜ	×	Ñ	ØØØØ Ð-ô	
€Bô �b—h‘h—n‘n×)Ñ)¬2¯=©=Ô9Ð9Ð9Ü�b—m‘m×)Ñ)×.Ñ.´·±Ô>Ð>Ñ>r-   c           	     óf  — | }|j                  | «      } t        j                  d| «      r1t        j                  | d¬«      5 }|j	                  d«       d d d «       t        t        ddgd¬«      «      j                  «       }|dk(  r9|j                  j                  t        j                  j                  d	¬
«      «       d|v rt        rt        }n	d }nt        }t!        j"                  |d¬«      5  |j%                  d| ¬«      }d d d «       dk(  sJ ‚t        j&                  d| «      }|dk(  r>t        t)        j*                  dddd¬«      t)        j*                  dddd¬«      gd¬«      }n|d   j-                  d«      }t!        j.                  |d   |«       y # 1 sw Y   �ŒIxY w# 1 sw Y   Œ¤xY w)NÚtest_timedeltaTr¥  z00:00:01z00:00:03Úfoor£   rh  z.sqlite ADBC driver doesn't implement timedeltar‚  r{   F)r’  ©r¤   ro   rI   zSELECT * FROM test_timedeltar>  r   i@B )ÚmonthsÚdaysÚmicrosecondsÚnanosecondsiÀÆ- rÓ   )r}  r   r©  r   r  r   r   rt  r„  r…  r  r†  r‡  r   r—  r˜  r·   r™  r~  r#   r•  Ú
DateOffsetrÕ   r¸   )	rV   r  rè  r«  rÖ   rš  r  r  r  s	            r.   Útest_api_timedeltarª  g  s›  € ð €IØ×"Ñ" 4Ó(€DÜ
‡}�}Ð% tÔ,Ü�_‰_˜T°DÔ9ð 	3¸YØ× Ñ Ð!1Ô2÷	3ô 
”f˜j¨*Ð5¸EÔBÓ	C×	LÑ	LÓ	N€BàÐ&Ò&Ø�‰×ÑÜ�K‰K×ÑØGð ó ô	
ð �ÑÝÜ,‰Kà‰Kä!ˆä	×	#Ñ	# KÀ%Ô	Hñ BØ—y‘yÐ&6¸D�yÓAˆ÷Bà˜1ÒÐÐÜ×ÑÐ >ÀÓE€FàÐ*Ò*ô ä—‘ Q¨Q¸WÐRSÔTÜ—‘ Q¨Q¸WÐRSÔTðð ô
‰ð �e‘9×#Ñ# GÓ,ˆÜ×Ñ˜6 %™=¨(Õ3÷M	3ñ 	3ú÷(Bð Bús   ÁFÃ0F'ÆF$Æ'F0c                óæ   — | }|j                  | «      } t        dddgi«      }d|v rd}nd}t        j                  t        |¬«      5  |j                  d| ¬	«      �J ‚	 d d d «       y # 1 sw Y   y xY w)
NrŽ  y      ð?      ð?y               @r{   zdatatypes not supportedzComplex datatypes not supportedrµ  Útest_complexrz  )r}  r   r  r¶  r·  r~  )rV   r  rè  rÖ   r›  s        r.   Útest_api_complex_raisesr­  –  sx   € à€IØ×"Ñ" 4Ó(€DÜ	�C˜& "˜Ð&Ó	'€Bà�ÑØ'‰à/ˆÜ	�‰”z¨Ô	-ñ ;Ø�y‰y˜¨TˆyÓ2Ð:Ð:Ñ:÷;÷ ;ñ ;ús   ÁA'Á'A0zindex_name,index_label,expected))NNr­   )NÚother_labelr®  )Ú
index_nameNr¯  )r¯  r®  r®  )r   NÚ0)Nr   r°  c                ó  — d| v r9|j                   j                  t        j                  j	                  d¬«      «       |j                  | «      } t        j                  d| «      r1t        j                  | d¬«      5 }|j                  d«       d d d «       t        dt        d«      i«      }||j                  _        d	}t        j                  |d| |¬
«       t        j                  || «      }|j                   d   |k(  sJ ‚y # 1 sw Y   ŒvxY w)Nr{   ú-index_label argument NotImplemented with ADBCr‚  Útest_index_labelTr¥  r
  rK   úSELECT * FROM test_index_label)Úindex_labelr   )r„  r…  r  r†  r‡  r}  r   r©  r   r  r   Úranger­   r¤   r~  r#   r¹   )	rV   r  r¯  rµ  r  r«  Ú
temp_framerÓ  r»   s	            r.   Útest_api_to_sql_index_labelr¸  ¤  sì   € ð& ��~Ø�‰×ÑÜ�K‰K×ÑÐ%TÐÓUô	
ð ×"Ñ" 4Ó(€DÜ
‡}�}Ð'¨Ô.Ü�_‰_˜T°DÔ9ð 	5¸YØ× Ñ Ð!3Ô4÷	5ô ˜F¤E¨!£HÐ-Ó.€JØ&€J×ÑÔØ,€EÜ‡J�JˆzÐ-¨tÀÕMÜ×Ñ˜u dÓ+€EØ�=‰=˜Ñ˜xÒ'Ð'Ñ'÷	5ð 	5ús   Á<DÄDc                ó²  — | }d|v r1|j                  t        j                  j                  dd¬«      «       n=d|v r9|j                  j                  t        j                  j                  d¬«      «       |j                  | «      } t        j                  d| «      r1t        j                  | d	¬
«      5 }|j                  d«       d d d «       d}t        dt        d«      it        j                  ddg«      ¬«      }t        j                  |d| «      }||k(  sJ ‚t        j                   d| «      }|j"                  d   dk(  sJ ‚|j"                  d   dk(  sJ ‚t        j                  |d| dddg¬«      }||k(  sJ ‚t        j                   d| «      }|j"                  d d j%                  «       ddgk(  sJ ‚ddg|j&                  _        t        j                  |d| d¬«      }||k(  sJ ‚t        j                   d| «      }|j"                  d d j%                  «       ddgk(  sJ ‚t        j                  |d| dddg¬«      }||k(  sJ ‚t        j                   d| «      }|j"                  d d j%                  «       ddgk(  sJ ‚d}t        j*                  t,        |¬«      5  t        j                  |d| dd¬«       d d d «       y # 1 sw Y   �ŒýxY w# 1 sw Y   y xY w)Nr'   z/MySQL can fail using TEXT without length as keyFr£  r{   r²  r‚  r³  Tr¥  rK   r
  )ÚA0ÚA1)ÚB0ÚB1rn  r´  r   r}  rH   Úlevel_1r”  rÙ   rÚ   )r|  rµ  rI   r¯  rÛ   rÜ   zALength of 'index_label' should match number of levels, which is 2rµ  )rã  r  r†  r‡  r„  r…  r}  r   r©  r   r  r   r¶  r   Úfrom_productr~  r#   r¹   r“  r­   Únamesr¶  r·  )	rV   r  rè  r«  Úexpected_row_countr·  r  r»   r›  s	            r.   Ú&test_api_to_sql_index_label_multiindexrÂ  È  sì  € à€IØ�)ÑØ×ÑÜ�K‰K×ÑØHÐQVð ó õ	
ð
 
�9Ñ	Ø�‰×ÑÜ�K‰K×ÑÐ%TÐÓUô	
ð ×"Ñ" 4Ó(€DÜ
‡}�}Ð'¨Ô.Ü�_‰_˜T°DÔ9ð 	5¸YØ× Ñ Ð!3Ô4÷	5ð ÐÜØ	”�q“ÐÜ×%Ñ% |°\Ð&BÓCô€Jô �Z‰Z˜
Ð$6¸Ó=€FØÐ'Ò'Ð'Ð'Ü×ÑÐ?ÀÓF€EØ�=‰=˜Ñ˜yÒ(Ð(Ð(Ø�=‰=˜Ñ˜yÒ(Ð(Ð(ô �Z‰ZØØØØØ˜#�Jô€Fð Ð'Ò'Ð'Ð'Ü×ÑÐ?ÀÓF€EØ�=‰=˜˜!Ð×#Ñ#Ó%¨#¨s¨Ò3Ð3Ð3ð " 3˜Z€J×ÑÔÜ�Z‰Z˜
Ð$6¸È	ÔR€FØÐ'Ò'Ð'Ð'Ü×ÑÐ?ÀÓF€EØ�=‰=˜˜!Ð×#Ñ#Ó%¨#¨s¨Ò3Ð3Ð3ô �Z‰ZØØØØØ˜#�Jô€Fð Ð'Ò'Ð'Ð'Ü×ÑÐ?ÀÓF€EØ�=‰=˜˜!Ð×#Ñ#Ó%¨#¨s¨Ò3Ð3Ð3à
M€CÜ	�‰”z¨Ô	-ñ 
Ü�
‰
ØØØØØõ	
÷
ð 
÷a	5ñ 	5ú÷`
ð 
ús   Â3K ÊKË K
ËKc                ó’  — |j                  | «      } t        j                  d| «      r1t        j                  | d¬«      5 }|j	                  d«       d d d «       t        j                  ddgg d¢ddg¬	«      }|j                  d| ¬
«       t        j                  d| ddg¬«      }t        j                  ||d¬«       y # 1 sw Y   ŒmxY w)NÚtest_multiindex_roundtripTr¥  ©rH   r  Úline1©rI   ç      ø?Úline2©rÙ   rÚ   rÛ   rÙ   rÚ   ©r¹   r­   r¤  z'SELECT * FROM test_multiindex_roundtrip©rž  ©Úcheck_index_type)r}  r   r©  r   r  r   Úfrom_recordsr~  r#   r·   rò  )rV   r  r«  rÖ   r  s        r.   Útest_api_multiindex_roundtriprÐ    s¼   € à×"Ñ" 4Ó(€DÜ
‡}�}Ð0°$Ô7Ü�_‰_˜T°DÔ9ð 	>¸YØ× Ñ Ð!<Ô=÷	>ô 
×	Ñ	Ø	Ð-Ð.ÚØ�Cˆjô
€Bð ‡I�IÐ.°D€IÔ9Ü×ÑØ1°4ÀCÈÀ:ô€Fô ×Ñ˜"˜f°tÖ<÷	>ð 	>ús   ¿B=Â=Cr@   ©rÙ   rÚ   c                óº  — | }|j                  | «      } t        j                  d| «      r1t        j                  | d¬«      5 }|j	                  d«       d d d «       t        ddgddggdd	g¬
«      }|j                  d| ¬«      dk(  sJ ‚|j                  |«      }d|v rd}nd}t        j                  || |¬«      }t        j                  ||«       y # 1 sw Y   ŒxY w)NÚtest_dtype_argumentTr¥  ç333333ó?g333333@çffffff@g333333@rÙ   rÚ   râ   r¤  rI   r4  z(SELECT "A", "B" FROM test_dtype_argumentz$SELECT A, B FROM test_dtype_argument©ro   r@   )r}  r   r©  r   r  r   r~  rÕ   r#   r·   rò  )	rV   r  r@   rè  r«  rÖ   r  rÓ  r  s	            r.   Útest_api_dtype_argumentr×  &  sÛ   € ð €IØ×"Ñ" 4Ó(€DÜ
‡}�}Ð*¨DÔ1Ü�_‰_˜T°DÔ9ð 	8¸YØ× Ñ Ð!6Ô7÷	8ô 
�S˜#�J  c 
Ð+°c¸3°ZÔ	@€BØ�9‰9Ð/°Tˆ9Ó:¸aÒ?Ð?Ð?à�y‰y˜Ó€Hà�YÑØ:‰à6ˆÜ×Ñ ¨4°uÔ=€Fä×Ñ˜& (Õ+÷	8ð 	8ús   ÁCÃCc                ó‚   — |j                  | «      } t        ddgddggddg¬«      }t        j                  |d| d¬	«       y )
NrH   rI   rJ   rK   r   râ   Útest_frame_integer_col_namesr”  r¯  )r}  r   r   r~  rŸ  s      r.   Útest_api_integer_col_namesrÚ  F  sB   € à×"Ñ" 4Ó(€DÜ	�Q˜�F˜Q ˜FÐ#¨a°¨VÔ	4€BÜ‡J�JˆrÐ1°4À9ÖMr-   c                óÞ   — d| v r:|j                   j                  t        j                  j	                  dd¬«      «       |j                  | «      } t        j                  |d| ¬«      }d|v sJ ‚y )Nr{   ú-'get_schema' not implemented for ADBC driversTr£  rz  rz  ÚCREATE©r„  r…  r  r†  r‡  r}  r   Ú
get_schema©rV   r  rå   r"  s       r.   Útest_api_get_schemará  M  sj   € à��~Ø�‰×ÑÜ�K‰K×ÑØFØð ó ô	
ð ×"Ñ" 4Ó(€DÜ—‘ ¨V¸Ô>€JØ�zÑ!Ð!Ñ!r-   c                óà   — d| v r:|j                   j                  t        j                  j	                  dd¬«      «       |j                  | «      } t        j                  |d| d¬«      }d|v sJ ‚y )	Nr{   rÜ  Tr£  rz  Úpypi)ro   rû   zCREATE TABLE pypi.rÞ  rà  s       r.   Útest_api_get_schema_with_schemarä  [  sn   € ð ��~Ø�‰×ÑÜ�K‰K×ÑØFØð ó ô	
ð ×"Ñ" 4Ó(€DÜ—‘ ¨V¸ÀfÔM€JØ :Ñ-Ð-Ñ-r-   c                ó8  — d| v r:|j                   j                  t        j                  j	                  dd¬«      «       | }|j                  | «      } t        ddgddgd	œ«      }|d
k(  rd}nddlm} |}t        j                  |d| d|i¬«      }d|v sJ ‚d|v sJ ‚y )Nr{   rÜ  Tr£  çš™™™™™ñ?rÔ  r  çš™™™™™@rï  rs  ÚINTEGERr   )r�   rz  rð  rÖ  rÝ  )r„  r…  r  r†  r‡  r}  r   r>   r�   r   rß  )rV   r  rè  Úfloat_framer@   r�   r"  s          r.   Útest_api_get_schema_dtypesrê  j  s°   € à��~Ø�‰×ÑÜ�K‰K×ÑØFØð ó ô	
ð €IØ×"Ñ" 4Ó(€DÜ 3¨ *°C¸°:Ñ>Ó?€KàÐ$Ò$Ø‰å&àˆÜ—‘ ¨V¸ÀcÈ5À\ÔR€JØ�zÑ!Ð!Ð!Ø˜
Ñ"Ð"Ñ"r-   c                ón  — d| v r:|j                   j                  t        j                  j	                  dd¬«      «       | }|j                  | «      } t        ddgddgd	œ«      }t        j                  |d
| d¬«      }d|v rd}nd}||v sJ ‚t        j                  |d
| ddg¬«      }d|v rd}nd}||v sJ ‚y )Nr{   rÜ  Tr£  ræ  rÔ  r  rç  )ÚCol1ÚCol2rz  rì  )ro   rÔ   r'   z'CONSTRAINT test_pk PRIMARY KEY (`Col1`)z'CONSTRAINT test_pk PRIMARY KEY ("Col1")rÙ   rÚ   z)CONSTRAINT test_pk PRIMARY KEY (`A`, `B`)z)CONSTRAINT test_pk PRIMARY KEY ("A", "B"))	r„  r…  r  r†  r‡  r}  r   r   rß  )rV   r  rå   rè  r»   r"  Úconstraint_sentences          r.   Útest_api_get_schema_keysrï  ‚  sØ   € à��~Ø�‰×ÑÜ�K‰K×ÑØFØð ó ô	
ð €IØ×"Ñ" 4Ó(€DÜ  S˜z°C¸°:Ñ>Ó?€EÜ—‘  v°4¸fÔE€Jà�)ÑØGÑàGÐØ *Ñ,Ð,Ð,ô —‘ ¨V¸ÀSÈ#ÀJÔO€JØ�)ÑØIÑàIÐØ *Ñ,Ð,Ñ,r-   c                óh  — d| v r9|j                   j                  t        j                  j	                  d¬«      «       | }|j                  | «      } t        j                  d| «      r1t        j                  | d¬«      5 }|j                  d«       d d d «       t        t        j                  j                  d«      j                  d«      t        d	«      ¬
«      }|j!                  d| d¬«       t        j"                  d| «      }t        «       }d}g d¢}t        j"                  d| d¬«      D ])  }	t%        ||	gd¬«      }t'        |	«      ||   k(  sJ ‚|dz  }Œ+ t)        j*                  ||«       |dk(  r=t        j,                  t.        d¬«      5  t        j0                  d| d¬«       d d d «       y t        «       }
d}g d¢}t        j0                  d| d¬«      D ])  }	t%        |
|	gd¬«      }
t'        |	«      ||   k(  sJ ‚|dz  }Œ+ t)        j*                  ||
«       y # 1 sw Y   �Œ�xY w# 1 sw Y   y xY w)Nr{   rØ  r‚  Útest_chunksizeTr¥  rI   )é   r¯   Úabcderâ   Frñ  zselect * from test_chunksizer   )r¯   r¯   r¯   r¯   rI   r¯   rÄ  ©Úignore_indexrH   rs  r�  rµ  )r„  r…  r  r†  r‡  r}  r   r©  r   r  r   rµ   ÚrandomÚdefault_rngÚstandard_normalr!  r~  r#   r   rª  r·   rò  r¶  ÚNotImplementedErrorr$   )rV   r  rè  r«  rÖ   rõ  rö  ÚiÚsizesÚchunkÚres3s              r.   Útest_api_chunksize_readrþ  Ÿ  s  € à��~Ø�‰×ÑÜ�K‰K×ÑÐ%RÐÓSô	
ð €IØ×"Ñ" 4Ó(€DÜ
‡}�}Ð% tÔ,Ü�_‰_˜T°DÔ9ð 	3¸YØ× Ñ Ð!1Ô2÷	3ô 
Ü
�	‰	×Ñ˜aÓ ×0Ñ0°Ó9Ä4ÈÃ=ô
€Bð ‡I�IÐ#¨°U€IÔ;ô ×ÑÐ<¸dÓC€Dô ‹;€DØ	€AÚ€Eä×#Ñ#Ð$BÀDÐTUÔVò ˆÜ�t˜U�m°$Ô7ˆÜ�5‹z˜U 1™XÒ%Ð%Ð%Ø	ˆQ‰‰ðô
 ×Ñ˜$ Ô%ð Ð$Ò$Ü�]‰]Ô.°bÔ9ñ 	DÜ×ÑÐ/°ÀÕC÷	Dð 	Dô ‹{ˆØˆÚˆä×'Ñ'Ð(8¸$È!ÔLò 	ˆEÜ˜4 ˜-°dÔ;ˆDÜ�u“:  q¡Ò)Ð)Ð)Ø�‰F‰Að	ô
 	×Ñ˜d DÕ)÷K	3ñ 	3ú÷2	Dð 	Dús   Á>HÆH(ÈH%È(H1c                óœ  — | dk(  rjt        dd¬«      }|�[t        |j                  «      t        d«      k  r:|j                  j	                  t
        j                  j                  dd¬«      «       |j                  | «      } t        j                  d	| «      r1t        j                  | d¬
«      5 }|j                  d	«       d d d «       t        g d¢g d¢dœ«      }|j                  «       }|d   j                  d«      |d<   |j!                  d	| d¬«       t        j"                  d| «      }t%        j&                  ||«       y # 1 sw Y   ŒƒxY w)Nr>  r:  rs   rt   z0.9.0z:categorical dtype not implemented for ADBC postgres driverTr£  Útest_categoricalr¥  rë  )úJohn P. Doez	Jane Dover  )Ú	person_idÚperson_namer  ÚcategoryFrñ  zSELECT * FROM test_categorical)r   r   r?   r„  r…  r  r†  r‡  r}  r   r©  r   r  r   ÚcopyrÕ   r~  r#   r·   rò  )rV   r  r{   r«  rÖ   Údf2Úress          r.   Útest_api_categoricalr  Ð  s-  € àÐ%Ò%Ü)Ð*BÈ8ÔTˆØÐ¤¨×(8Ñ(8Ó 9¼GÀGÓ<LÒ LØ�L‰L×#Ñ#Ü—‘×!Ñ!ØWØð "ó ôð ×"Ñ" 4Ó(€DÜ
‡}�}Ð'¨Ô.Ü�_‰_˜T°DÔ9ð 	5¸YØ× Ñ Ð!3Ô4÷	5ô 
â"ÚFñ	
ó
€Bð �'‰'‹)€CØ˜]Ñ+×2Ñ2°:Ó>€CˆÑà‡J�JÐ&¨D¸€JÔ>Ü
×
Ñ
Ð=¸tÓ
D€Cä×Ñ˜#˜rÕ"÷	5ð 	5ús   Â.EÅEc                ó  — |j                  | «      } t        j                  d| «      r1t        j                  | d¬«      5 }|j	                  d«       d d d «       t        ddgddggdd	g¬
«      }|j                  d| d¬«       y # 1 sw Y   Œ3xY w)NÚtest_unicodeTr¥  rH   rI   rJ   rK   õ   Ã©rð  râ   Frñ  )r}  r   r©  r   r  r   r~  )rV   r  r«  rÖ   s       r.   Útest_api_unicode_column_namer  ñ  s†   € ð ×"Ñ" 4Ó(€DÜ
‡}�}�^ TÔ*Ü�_‰_˜T°DÔ9ð 	1¸YØ× Ñ  Ô0÷	1ô 
�Q˜�F˜Q ˜FÐ#¨f°c¨]Ô	;€BØ‡I�I�> t°5€IÕ9÷		1ð 	1ús   ¿BÂBc                ó¤  — | }|j                  | «      } t        j                  d| «      r1t        j                  | d¬«      5 }|j	                  d«       d d d «       t        g d¢dt        j                  dgdœ«      }|j                  d| d¬	«       d
|v rd}nd}t        j                  || «      }t        j                  ||«       y # 1 sw Y   ŒtxY w)Nzd1187b08-4943-4c8d-a7f6Tr¥  ©r   rH   rI   r«   rÕ  rÑ  Frñ  r4  z'SELECT * FROM "d1187b08-4943-4c8d-a7f6"z'SELECT * FROM `d1187b08-4943-4c8d-a7f6`)r}  r   r©  r   r  r   rµ   Únanr~  r#   r·   rò  )rV   r  rè  r«  rÖ   rÓ  r  s          r.   Útest_api_escaped_table_namer  ý  s¿   € ð €IØ×"Ñ" 4Ó(€DÜ
‡}�}Ð.°Ô5Ü�_‰_˜T°DÔ9ð 	<¸YØ× Ñ Ð!:Ô;÷	<ô 
š¨#¬r¯v©v°sÐ);Ñ<Ó	=€BØ‡I�IÐ,°$¸e€IÔDà�YÑØ9‰à9ˆÜ
×
Ñ
˜U DÓ
)€Cä×Ñ˜#˜rÕ"÷	<ð 	<ús   ÁCÃCc                ó’  — d| v rtt        j                  d«      }t        |j                  «      t        d«      k\  r| dv s:|j                  j                  t         j                  j                  dd¬«      «       |j                  | «      } t        j                  d| «      r1t        j                  | d¬	«      5 }|j                  d«       d d d «       t        g d
¢g d¢ddœ«      }|j                  d| d¬«       t        j                   d| «      }t        g d¢g d¢g d¢gg d¢¬«      }t#        j$                  ||«       y # 1 sw Y   ŒuxY w)Nr{   r9  z16.0)rh  r>  z!pyarrow->pandas throws ValueErrorTr£  Ú
test_tabler¥  rë  rì  rH   ©rŽ  rð  r÷   Frñ  z)SELECT a, b, a +1 as a, c FROM test_table)rH   rí  rI   rH   )rI   r«   rJ   rH   )rJ   rî  rK   rH   )rŽ  rð  rŽ  r÷   râ   )r  r  r   r?   r„  r…  r†  r‡  r}  r   r©  r   r  r   r~  r•  r½  r·   rò  )rV   r  Úpar«  rÖ   r  r  s          r.   Ú#test_api_read_sql_duplicate_columnsr  	  s  € ð ��~Ü× Ñ  Ó+ˆä�B—N‘NÓ#¤w¨v£Ò6ØÐDÑDà�L‰L×#Ñ#Ü—‘×!Ñ!Ø>Àtð "ó ôð
 ×"Ñ" 4Ó(€DÜ
‡}�}�\ 4Ô(Ü�_‰_˜T°DÔ9ð 	/¸YØ× Ñ  Ô.÷	/ô 
šª¸qÑAÓ	B€BØ‡I�I�< T°€IÔ7ä�[‰[ÐDÀdÓK€FÜÚ	šªÐ8Ú$ô€Hô ×Ñ˜& (Õ+÷	/ð 	/ús   Â7D=Ä=Ec                ó6  — | }|dk(  r/|j                  t        j                  j                  d¬«      «       |j	                  | «      } t        j                  |d| «       ddg}t        j                  d| |¬«      }|j                  j                  «       |k(  sJ ‚y )Nrs  úNot Implementedr‚  r§  rÙ   rÚ   râ   )
rã  r  r†  r‡  r}  r   r~  r$   r¹   r“  )rV   r  rå   rè  Úcolsr  s         r.   Útest_read_table_columnsr  0	  s‹   € ð €IØÐ$Ò$Ø×ÑœFŸK™K×-Ñ-Ð5FÐ-ÓGÔHà×"Ñ" 4Ó(€DÜ‡J�Jˆ{˜L¨$Ô/à�ˆ:€Dä×Ñ ¨d¸DÔA€FØ�>‰>× Ñ Ó" dÒ*Ð*Ñ*r-   c                óL  — | }|dk(  r/|j                  t        j                  j                  d¬«      «       |j	                  | «      } t        j                  |d| «       t        j                  d| d¬«      }|j                  j                  dgk(  sJ ‚t        j                  d| ddg¬«      }|j                  j                  ddgk(  sJ ‚t        j                  d| ddgd	d
g¬«      }|j                  j                  ddgk(  sJ ‚|j                  j                  «       d	d
gk(  sJ ‚y )Nrs  r  r‚  r§  r­   rÌ  rÙ   rÚ   rÛ   rÜ   )rž  r¹   )rã  r  r†  r‡  r}  r   r~  r$   r­   rÀ  r¹   r“  )rV   r  rå   rè  r  s        r.   Útest_read_table_index_colr  @	  s  € ð €IØÐ$Ò$Ø×ÑœFŸK™K×-Ñ-Ð5FÐ-ÓGÔHà×"Ñ" 4Ó(€DÜ‡J�Jˆ{˜L¨$Ô/ä×Ñ ¨d¸gÔF€FØ�<‰<×Ñ ' Ò*Ð*Ð*ä×Ñ ¨d¸sÀC¸jÔI€FØ�<‰<×Ñ # s Ò+Ð+Ð+ä×ÑØ�d s¨C j¸3À¸*ô€Fð �<‰<×Ñ # s Ò+Ð+Ð+Ø�>‰>× Ñ Ó" s¨C jÒ0Ð0Ñ0r-   c                ó–  — | dk(  r/|j                  t        j                  j                  d¬«      «       |j	                  | «      } t        j                  d| «      }t        j                  d| «      }t        j                  ||«       t        j                  d| «      }t        j                  d| «      }t        j                  ||«       y )Nru  râ  r‚  rº  r7   )rã  r  r†  r‡  r}  r   r#   r½  r·   rò  r$   )rV   r  Úiris_frame1Úiris_frame2s       r.   Útest_read_sql_delegater  W	  s«   € àÐ$Ò$Ø×ÑÜ�K‰K×ÑØTð ó ô	
ð ×"Ñ" 4Ó(€DÜ×$Ñ$Ð%9¸4Ó@€KÜ—,‘,Ð3°TÓ:€KÜ×Ñ˜+ {Ô3ä×$Ñ$ V¨TÓ2€KÜ—,‘,˜v tÓ,€KÜ×Ñ˜+ {Õ3r-   c                ó6  — | }ddl m} ddlm}  |d«       |d«      g}|D ]|  }t	        ||«      rD|j                  «       5 }|j                  «       5  |j                  |«       d d d «       d d d «       ŒS|j                  «       5  |j                  |«       d d d «       Œ~ t        j                  d «      5  t        j                  d|«       t        j                  d|«       d d d «       y # 1 sw Y   Œ‰xY w# 1 sw Y   ŒßxY w# 1 sw Y   ŒëxY w# 1 sw Y   y xY w)Nr   rv   r—   z,CREATE TABLE invalid (x INTEGER, y UNKNOWN);z0CREATE TABLE other_table (x INTEGER, y INTEGER);Úother_tablezSELECT * FROM other_table)r>   rw   r™   r˜   rx   rš   rj   rM   r·   r™  r   r$   r#   )rY  rV   rw   r˜   Ú
query_listrÓ  s         r.   Útest_not_reflect_all_tablesr#  j	  s  € Ø€DÝÝ(ñ 	Ð;Ó<ÙÐ?Ó@ð€Jð
 ò $ˆÜ�d˜FÔ#Ø—‘“ð ( 4Ø—Z‘Z“\ñ (Ø—L‘L Ô'÷(÷(ð (ð —‘“ñ $Ø—‘˜UÔ#÷$ð $ð$ô 
×	#Ñ	# DÓ	)ñ >Ü×Ñ˜=¨$Ô/Ü×ÑÐ6¸Ô=÷>ð >÷(ð (ú÷(ð (ú÷$ð $ú÷>ð >ús<   Á C7ÁC+Á#C7ÂDÂ5-DÃ+C4Ã0C7Ã7D 	ÄD	ÄDc                óì  — | }|dk(  sd|v r/|j                  t        j                  j                  d¬«      «       |j	                  | «      } t        j                  t        d¬«      5  t        j                  | «      5 }|j                  dd«       d d d «       d d d «       t        j                  d «      5  |j                  d	| ¬
«       d d d «       y # 1 sw Y   ŒCxY w# 1 sw Y   ŒGxY w# 1 sw Y   y xY w)Nrs  r{   zDoes not raise warningr‚  z¶The provided table name 'TABLE1' is not found exactly as such in the database after writing the table, possibly due to case sensitivity issues. Consider using lower case table names.rµ  ÚTABLE1r�  ÚCaseSensitiver¤  )rã  r  r†  r‡  r}  r·   r™  r˜  r   r   Úcheck_case_sensitiver~  )rV   r  rå   rè  r  s        r.   Ú(test_warning_case_insensitive_table_namer(  ƒ	  sæ   € à€IØÐ$Ò$¨°)Ñ(;Ø×ÑœFŸK™K×-Ñ-Ð5MÐ-ÓNÔOà×"Ñ" 4Ó(€Dä	×	#Ñ	#ÜðJô
ñ 	2ô �_‰_˜TÓ"ð 	2 bØ×#Ñ# H¨bÔ1÷	2÷	2ô 
×	#Ñ	# DÓ	)ñ ;Ø×Ñ °TÐÔ:÷;ð ;÷		2ð 	2ú÷	2ð 	2ú÷;ð ;ús0   Á'CÁ=CÂCÂ5C*ÃC	ÃCÃC'Ã*C3c                óJ  — |j                  | «      } ddlm} t        dt	        ddgd¬«      i«      }t        j                  | «      5 }t        j                  d||¬	«      }t        |j                  j                  d   j                  |«      sJ ‚	 d d d «       y # 1 sw Y   y xY w)
Nr   )Ú	TIMESTAMPr   ú2014-12-12 01:54ú2014-12-11 02:54T©ÚutcÚ	test_type©r»   )r}  r>   r*  r   r   r   r   ÚSQLTablerx   rü   r÷   r³   )rV   r  r*  rÖ   r  rü   s         r.   Útest_sqlalchemy_type_mappingr2  ›	  s•   € à×"Ñ" 4Ó(€DÝ$ô 
Ø	”Ð0Ð2DÐEÈ4ÔPÐQó
€Bô 
�‰˜Ó	ð A "Ü—‘˜[¨"°BÔ7ˆä˜%Ÿ+™+Ÿ-™-¨Ñ/×4Ñ4°iÔ@Ð@Ñ@÷A÷ Añ Aús   ÁABÂB"zinteger, expected)Úint8ÚSMALLINT)ÚInt8r4  )Úuint8r4  )ÚUInt8r4  )Úint16r4  )ÚInt16r4  )Úuint16rè  )ÚUInt16rè  )r›  rè  )ÚInt32rè  )Úuint32ÚBIGINT)ÚUInt32r>  )rÓ   r>  )ÚInt64r>  rÓ   r>  rè  c                ó@  — |j                  | «      } t        ddgdg|¬«      }t        j                  | «      5 }t        j                  d||¬«      }t        |j                  j                  j                  j                  «      }d d d «       |k(  sJ ‚y # 1 sw Y   ŒxY w)Nr   rH   rŽ  ©r¹   r@   r/  r0  )
r}  r   r   r   r1  rÁ   rü   r÷   rŽ  r³   )rV   r  rä  r  rÖ   r  rü   r  s           r.   Útest_sqlalchemy_integer_mappingrC  ª	  s‰   € ð. ×"Ñ" 4Ó(€DÜ	�A�q�6 C 5°Ô	8€BÜ	�‰˜Ó	ð + "Ü—‘˜[¨"°BÔ7ˆä�U—[‘[—]‘]—_‘_×)Ñ)Ó*ˆ÷+ð �XÒÐÑ÷	+ð +ús   ¸ABÂBrä  Úuint64ÚUInt64c                ó,  — |j                  | «      } t        ddgdg|¬«      }t        j                  | «      5 }t	        j
                  t        d¬«      5  t        j                  d||¬«       d d d «       d d d «       y # 1 sw Y   ŒxY w# 1 sw Y   y xY w)	Nr   rH   rŽ  rB  z1Unsigned 64 bit integer datatype is not supportedrµ  r/  r0  )r}  r   r   r   r  r¶  r·  r1  )rV   r  rä  rÖ   r  s        r.   Ú(test_sqlalchemy_integer_overload_mappingrG  Ê	  s‰   € ð ×"Ñ" 4Ó(€Dä	�A�q�6 C 5°Ô	8€BÜ	�‰˜Ó	ð 4 "Ü�]‰]ÜÐQô
ñ 	4ô �L‰L˜ b°Õ3÷	4÷4ð 4÷	4ð 	4ú÷4ð 4ús#   ¸B
ÁA>Á-B
Á>B	ÂB
Â
Bc                óæ  — t        j                  d«       |j                  | «      } t        j                  «       5 }d|z   }d}|j                  ||dd¬«       t        j                  ||«      }t        j                  ||«      }d}t        j                  ||«      }	d d d «       t        j                  |«       t        j                  |«       t        j                  |	«       y # 1 sw Y   ŒLxY w)Nr>   rS  r7   r”  Fr{  rº  )r  r  r}  r·   rT  r~  r   r½  r$   r#   rò  )
rV   r  rå   r¤   Údb_urirü   r`  rç   rÓ  ri  s
             r.   Útest_database_uri_stringrJ  ×	  sÔ   € ä
×Ñ˜Ô%Ø×"Ñ" 4Ó(€Dô
 
�‰Ó	ð 8˜dØ Ñ$ˆØˆØ×Ñ ¨6¸YÈeÐÔTÜ—l‘l 5¨&Ó1ˆÜ×(Ñ(¨°Ó7ˆØ$ˆÜ×(Ñ(¨°Ó7ˆ÷8ô ×Ñ˜+ {Ô3Ü×Ñ˜+ {Ô3Ü×Ñ˜+ {Õ3÷8ð 8ús   »A!C'Ã'C0Úpg8000c                óà   — t        j                  d«       |j                  | «      } d}t        j                  t        d¬«      5  t        j                  d|«       d d d «       y # 1 sw Y   y xY w)Nr>   z)postgresql+pg8000://user:pass@host/dbnamerK  rµ  zselect * from table)r  r  r}  r¶  ÚImportErrorr   r½  )rV   r  rI  s      r.   Ú(test_pg8000_sqlalchemy_passthrough_errorrN  ì	  s[   € ô ×Ñ˜Ô%Ø×"Ñ" 4Ó(€Dð 9€FÜ	�‰”{¨(Ô	3ñ 4Ü�‰Ð*¨FÔ3÷4÷ 4ñ 4ús   ÁA$Á$A-c                óÀ   — | }|j                  | «      } ddlm} d|v r	 |d«      }n |d«      }t        j                  || ddi¬«      }t        |d	   «      }|dhk(  sJ ‚y )
Nr   rv   r4  z%select * from iris where "Name"=:namez#select * from iris where name=:namer¤   zIris-versicolorrÌ  r<   )r}  r>   rw   r   r½  Úset)rV   r  rè  rw   Ú	name_textÚiris_dfÚ	all_namess          r.   Útest_query_by_text_objrT  ø	  sr   € ð €IØ×"Ñ" 4Ó(€DÝà�YÑÙÐ@ÓA‰	áÐ>Ó?ˆ	Ü�l‰l˜9 d°FÐ<MÐ3NÔO€GÜ�G˜F‘OÓ$€IØÐ*Ð+Ò+Ð+Ñ+r-   c                ó  — |j                  | «      } ddlm}m} t	        «       } ||«      j                  |j                  j                   |d«      k(  «      }t        j                  || ddi¬«      }t        |d   «      }|dhk(  sJ ‚y )Nr   )Ú	bindparamrÈ  r¤   r¬   rÌ  r<   )r}  r>   rV  rÈ  rB   Úwherer÷   r<   r   r½  rP  )rV   r  rV  rÈ  r7   Úname_selectrR  rS  s           r.   Útest_query_by_select_objrY  
  s|   € à×"Ñ" 4Ó(€D÷ô
 Ó €DÙ˜“,×$Ñ$ T§V¡V§[¡[±I¸fÓ4EÑ%EÓF€KÜ�l‰l˜;¨°f¸mÐ5LÔM€GÜ�G˜F‘OÓ$€IØ˜˜Ò'Ð'Ñ'r-   c                ó6  — | }|dk(  r/|j                  t        j                  j                  d¬«      «       |j	                  | «      } t        g d¢g d¢dœ«      }|j                  d| d¬	«       t        j                  d| «      }t        j                  ||«       y )
Nrs  r  r‚  r  ©rJ   rK   r¯   )rÙ   z%_variationÚtest_column_percentageFrñ  )rã  r  r†  r‡  r}  r   r~  r   r$   r·   rò  )rV   r  rè  rÖ   r  s        r.   Útest_column_with_percentager]  
  sˆ   € ð €IØÐ$Ò$Ø×ÑœFŸK™K×-Ñ-Ð5FÐ-ÓGÔHà×"Ñ" 4Ó(€DÜ	š²9Ñ=Ó	>€BØ‡I�IÐ+°¸U€IÔCä
×
Ñ
Ð5°tÓ
<€Cä×Ñ˜#˜rÕ"r-   c                ó¸  — t        j                  «       5 }t        t        j                  |«      «      5 }t        j                  | d|d¬«      dk(  sJ ‚	 d d d «       t        t        j                  |«      «      5 }t        j                  d|«      }d d d «       d d d «       t        j                  | «       y # 1 sw Y   ŒexY w# 1 sw Y   Œ4xY w# 1 sw Y   Œ8xY w)NÚtest_frame3_legacyFrn  rK   z!SELECT * FROM test_frame3_legacy;)	r·   rT  r   ry   rš   r   r~  r#   rò  )rç   r¤   rV   r  s       r.   Útest_sql_open_closer`  (
  sÇ   € ô 
�‰Ó	ð S˜dÜ”W—_‘_ TÓ*Ó+ð 	Y¨tÜ—:‘:˜kÐ+?ÀÈUÔSÐWXÒXÐXÑX÷	Yô ”W—_‘_ TÓ*Ó+ð 	S¨tÜ×'Ñ'Ð(KÈTÓRˆF÷	S÷	Sô ×Ñ˜+ vÕ.÷	Yð 	Yú÷	Sð 	Sú÷	Sð Sús:   •C´B8Á&CÁ:CÂCÂ8C	Â=CÃC	Ã	CÃCc                 ó˜   — d} d}t        j                  t        |¬«      5  t        j                  d| «       d d d «       y # 1 sw Y   y xY w)Nzmysql://root@localhost/pandasz-Using URI string without sqlalchemy installedrµ  rº  )r  r¶  rM  r   r½  )rV   r›  s     r.   Útest_con_string_import_errorrb  6
  s>   € à*€DØ
9€CÜ	�‰”{¨#Ô	.ñ 1Ü�‰Ð)¨4Ô0÷1÷ 1ñ 1ús    A Á A	c                 ó   —  G d„ d«      } t        j                   | d«      «      5 }t        j                  t        «      5  t        j                  d|«       d d d «       d d d «       y # 1 sw Y   ŒxY w# 1 sw Y   y xY w)Nc                  ó    — e Zd Zdd„Zd„ Zd„ Zy)úhtest_con_unknown_dbapi2_class_does_not_error_without_sql_alchemy_installed.<locals>.MockSqliteConnectionc                ó8   — t        j                  |i |¤Ž| _        y r  )ry   rz   rV   )ÚselfÚargsÚkwargss      r.   Ú__init__zqtest_con_unknown_dbapi2_class_does_not_error_without_sql_alchemy_installed.<locals>.MockSqliteConnection.__init__A
  s   € Ü×*Ñ*¨DÐ;°FÑ;ˆD�Ir-   c                ó.   — t        | j                  |«      S r  )ÚgetattrrV   )rg  r¤   s     r.   Ú__getattr__zttest_con_unknown_dbapi2_class_does_not_error_without_sql_alchemy_installed.<locals>.MockSqliteConnection.__getattr__D
  s   € Ü˜4Ÿ9™9 dÓ+Ð+r-   c                ó8   — | j                   j                  «        y r  )rV   rT   )rg  s    r.   rT   zntest_con_unknown_dbapi2_class_does_not_error_without_sql_alchemy_installed.<locals>.MockSqliteConnection.closeG
  s   € Ø�I‰I�O‰OÕr-   N)ÚreturnÚNone)Ú__name__Ú
__module__Ú__qualname__rj  rm  rT   r,   r-   r.   ÚMockSqliteConnectionre  @
  s   „ ó	<ò	,ó	r-   rt  ro  zSELECT 1)rp  r   r·   r™  r˜  r   r½  )rt  rV   s     r.   ÚJtest_con_unknown_dbapi2_class_does_not_error_without_sql_alchemy_installedru  >
  so   € ÷ñ ô 
×	Ñ	Ñ0°Ó<Ó	=ð +ÀÜ×'Ñ'¬Ó4ñ 	+Ü�L‰L˜ TÔ*÷	+÷+ð +÷	+ð 	+ú÷+ð +ús#   ¦A4Á A(ÁA4Á(A1	Á-A4Á4A=c                ó0  — | }t        j                  d|«      }t        j                  d|«      }t        j                  ||«       d}t        j                  t         j                  |¬«      5  t        j                  d|«       d d d «       y # 1 sw Y   y xY w)Nrº  z9Execution failed on sql 'iris': near "iris": syntax errorrµ  r7   )r   r#   r½  r·   rò  r  r¶  ÚDatabaseError)ru  rV   r  r  r›  s        r.   Útest_sqlite_read_sql_delegaterx  O
  sw   € Ø€DÜ×$Ñ$Ð%9¸4Ó@€KÜ—,‘,Ð3°TÓ:€KÜ×Ñ˜+ {Ô3à
G€CÜ	�‰”s×(Ñ(°Ô	4ñ #Ü�‰�V˜TÔ"÷#÷ #ñ #ús   Á,BÂBc                ó<   — t        j                  | d«      }d|v sJ ‚y )Nrz  rÝ  )r   rß  )rå   r"  s     r.   Útest_get_schema2rz  Z
  s    € ä—‘ ¨VÓ4€JØ�zÑ!Ð!Ñ!r-   c                ó^  — | }t        dt        ddgd¬«      i«      }t        j                  |«      }t        j                  d||¬«      }|j                  «       }|j                  d«      D ]@  }|j                  «       d	   j                  d
«      dk(  sŒ)|j                  «       d   dk(  rŒ@J ‚ y )Nr   r+  r,  Tr-  r/  r0  ú
r   r  rH   r*  )r   r   r   r    ÚSQLiteTableÚ
sql_schemaÚsplitÚstrip)rs  rV   rÖ   r  rü   rû   Úcols          r.   Útest_sqlite_type_mappingr‚  `
  s¦   € à€DÜ	Ø	”Ð0Ð2DÐEÈ4ÔPÐQó
€Bô 
×	Ñ	˜DÓ	!€BÜ�O‰O˜K¨°2Ô6€EØ×ÑÓ€FØ�|‰|˜DÓ!ò 1ˆØ�9‰9‹;�q‰>×Ñ Ó$¨Ó.Ø—9‘9“;˜q‘> [Ó0Ð0Ð0ñ1r-   c                óÂ  — | dk(  rt        j                  d«       |j                  | «      } ddlm} t        g d¢g d¢dœ«      }t        j                  | d¬	«      5 }|j                  |d
«      dk(  sJ ‚	 d d d «        || «      }|j                  d
«      sJ ‚t        j                  | d¬	«      5 }|j                  d
«       d d d «       y # 1 sw Y   ŒVxY w# 1 sw Y   y xY w)NrU  ú#sqlite_str has no inspection systemr   rï   ©ç      ð?ç       @ç      @ç      @©r‰  rˆ  r‡  r†  ©ÚoneÚtwoTr¥  r·  rK   )r  Úskipr}  r>   rð   r   r   r   r~  r©  r  ©rV   r  rð   r·  r«  Úinsps         r.   Útest_create_tabler‘  r
  sÒ   € àˆ|ÒÜ�‰Ð9Ô:à×"Ñ" 4Ó(€Då"äÒ#7Ò@TÑUÓV€JÜ	�‰˜°Ô	5ð ?¸Ø×Ñ 
¨LÓ9¸QÒ>Ð>Ñ>÷?ñ �4‹=€DØ�>‰>˜,Ô'Ð'Ð'ô 
�‰˜°Ô	5ð +¸Ø×Ñ˜\Ô*÷+ð +÷?ð ?ú÷+ð +ús   ÁC	Â.CÃ	CÃCc                ób  — | dk(  rt        j                  d«       |j                  | «      } ddlm} t        g d¢g d¢dœ«      }t        j                  | «      5 }|j                  «       5  |j                  |d«      d	k(  sJ ‚	 d d d «        || «      }|j                  d«      sJ ‚|j                  «       5  |j                  d«       d d d «       	 |j                  «        |j                  d«      rJ ‚	 d d d «       y # 1 sw Y   Œ|xY w# 1 sw Y   ŒCxY w# t        $ r Y Œ@w xY w# 1 sw Y   y xY w)
NrU  r„  r   rï   r…  rŠ  r‹  r·  rK   )r  rŽ  r}  r>   rð   r   r   r   rO  r~  r©  r  Úclear_cacheÚAttributeErrorr�  s         r.   Útest_drop_tabler•  ‡
  s*  € àˆ|ÒÜ�‰Ð9Ô:à×"Ñ" 4Ó(€Då"äÒ#7Ò@TÑUÓV€JÜ	�‰˜Ó	ð 0 )Ø×&Ñ&Ó(ñ 	CØ×#Ñ# J°Ó=ÀÒBÐBÑB÷	Cñ �t‹}ˆØ�~‰~˜lÔ+Ð+Ð+à×&Ñ&Ó(ñ 	/Ø× Ñ  Ô.÷	/ð	Ø×ÑÔð —>‘> ,Ô/Ð/Ð/Ð/÷0ð 0÷	Cð 	Cú÷	/ð 	/ûô ò 	Ùð	ú÷0ð 0ús`   ÁD%Á*C>Â3D%Â6D
ÃD%ÃDÃ!D%Ã>D	ÄD%Ä
D	ÄD%Ä	D"ÄD%Ä!D"Ä"D%Ä%D.c                ó²  — | dk(  rt        j                  d«       | }|j                  | «      } t        | «      }|j	                  «       5  |j                  |d«      dk(  sJ ‚|j                  d«      }d d d «       d|v rj                  ddi¬	«      }j                  dd
¬«       d |j                  _
        t        j                  ||«       y # 1 sw Y   Œ\xY w)NrU  r„  ry  rK   r{  r{   r|  r}  râ   Tr~  )r  rŽ  r}  r"   rO  r~  rP  r€  r�  r­   r¤   r·   rò  r‚  s         r.   Útest_roundtripr—  ¡
  sÙ   € àˆ|ÒÜ�‰Ð9Ô:à€IØ×"Ñ" 4Ó(€DÜ! $Ó'€IØ	×	"Ñ	"Ó	$ñ LØ×Ñ Ð-CÓDÈÒIÐIÐIØ×%Ñ%Ð&JÓKˆ÷Lð �ÑØ—‘Ð(;¸YÐ'G�ÓHˆØ
×Ñ�Y¨ÐÔ-ð €F‡L�LÔä×Ñ˜& +Õ.÷Lð Lús   Á	)CÃCc                ó6  — |j                  | «      } t        | «      5 }|j                  «       5  |j                  d«      }|j	                  «       }|j                  «        d d d «       d d d «       t        «      g d¢k(  sJ ‚y # 1 sw Y   Œ$xY w# 1 sw Y   Œ(xY wr‡  )r}  r"   rO  rM   rÀ   rT   r!  )rV   r  r«  r‰  r\   s        r.   Útest_execute_sqlr™  ·
  s’   € à×"Ñ" 4Ó(€DÜ	˜4Ó	 ð ! IØ×&Ñ&Ó(ñ 	!Ø$×,Ñ,Ð-AÓBˆLØ×'Ñ'Ó)ˆCØ×ÑÔ ÷	!÷!ô
 �‹9Ò;Ò;Ð;Ñ;÷		!ð 	!ú÷!ð !ús"   �B®2BÁ BÂB	ÂBÂBc                ój   — |j                  | «      } t        j                  d| ¬«      }t        |«       y )Nr7   rz  )r}  r   r$   r½   r¾  s      r.   Útest_sqlalchemy_read_tabler›  Â
  s,   € à×"Ñ" 4Ó(€DÜ×#Ñ# F°Ô5€JÜ�ZÕ r-   c                ó°   — |j                  | «      } t        j                  d| ddg¬«      }t        j                  |j
                  t        ddg«      «       y )Nr7   r8   )ro   r¹   ÚSepalLength__1)r}  r   r$   r·   Úassert_index_equalr¹   r   r¾  s      r.   Ú"test_sqlalchemy_read_table_columnsrŸ  É
  sQ   € à×"Ñ" 4Ó(€DÜ×#Ñ#Ø�D =°-Ð"@ô€Jô ×Ñ˜*×,Ñ,¬e°]ÐDTÐ4UÓ.VÕWr-   c                ó¸   — |j                  | «      } d}t        j                  t        |¬«      5  t	        j
                  d| ¬«       d d d «       y # 1 sw Y   y xY w)Nz!Table this_doesnt_exist not foundrµ  Úthis_doesnt_existrz  )r}  r  r¶  r·  r   r$   )rV   r  r›  s      r.   Útest_read_table_absent_raisesr¢  Ò
  sK   € à×"Ñ" 4Ó(€DØ
-€CÜ	�‰”z¨Ô	-ñ :Ü×ÑÐ.°DÕ9÷:÷ :ñ :ús   ¯AÁAc                ó*  — | }|dk(  rt        j                  d«       n7d|v sd|v r/|j                  t         j                  j	                  d¬«      «       |j                  | «      } t        j                  d| «      }t        |j                  j                  j                  t        j                  «      sJ ‚t        |j                  j                  j                  t        j                  «      sJ ‚t        |j                   j                  j                  t        j"                  «      sJ ‚t        |j$                  j                  j                  t        j                  «      sJ ‚t        |j&                  j                  j                  t(        «      sJ ‚y )NrU  ú.types tables not created in sqlite_str fixturer'   r&   z#boolean dtype not inferred properlyr‚  r‚   )r  rŽ  rã  r†  r‡  r}  r   r$   r´   r‡   r@   r³   rµ   r¶   rˆ   rä  r‰   rå  rŠ   r‹   ræ  rç  s       r.   Ú'test_sqlalchemy_default_type_conversionr¥  Ú
  s'  € à€IØ�LÒ Ü�‰ÐDÕEØ	�IÑ	 ¨YÑ!6Ø×ÑÜ�K‰K×ÑÐ%JÐÓKô	
ð ×"Ñ" 4Ó(€DÜ	×	Ñ	˜G TÓ	*€Bä�b—k‘k×'Ñ'×,Ñ,¬b¯k©kÔ:Ð:Ð:Ü�b—i‘i—o‘o×*Ñ*¬B¯J©JÔ7Ð7Ð7Ü�b—j‘j×&Ñ&×+Ñ+¬R¯X©XÔ6Ð6Ð6ô �b×'Ñ'×-Ñ-×2Ñ2´B·K±KÔ@Ð@Ð@ä�b×(Ñ(×.Ñ.×3Ñ3´VÔ<Ð<Ñ<r-   c                óÎ   — |j                  | «      } t        ddgi¬«      }|j                  d| d¬«      dk(  sJ ‚t        j                  d| «      }t        j                  ||«       y )NÚi64l            )rÊ   Útest_bigintFrñ  rH   r  ©rV   r  rÖ   r  s       r.   r¨  r¨  ñ
  sd   € ð ×"Ñ" 4Ó(€DÜ	˜  Ð(Ô	)€BØ�9‰9˜-¨T¸ˆ9Ó?À1ÒDÐDÐDÜ×Ñ ¨tÓ4€Fä×Ñ˜"˜fÕ%r-   c                óf  — | }|dk(  rt        j                  d«       n3d|v r/|j                  t         j                  j	                  d¬«      «       |j                  | «      } t        j                  d| «      }t        |j                  j                  j                  t        j                  «      sJ ‚y )NrU  r¤  r&   z"sqlite does not read date properlyr‚  r‚   )r  rŽ  rã  r†  r‡  r}  r   r$   r´   r„   r@   r³   rµ   r’  rç  s       r.   Útest_default_date_loadr«  ü
  s�   € à€IØ�LÒ Ü�‰ÐDÕEØ	�YÑ	Ø×ÑÜ�K‰K×ÑÐ%IÐÓJô	
ð ×"Ñ" 4Ó(€DÜ	×	Ñ	˜G TÓ	*€Bä�b—j‘j×&Ñ&×+Ñ+¬R¯]©]Ô;Ð;Ñ;r-   rŽ  rž   c                óœ   — |j                  | «      } t        | «      }t        d| |¬«      }|j                  }t	        j
                  ||«       y )Núselect * from datetzr�  )r}  r§   r#   rž   r·   r¸   )rV   r  rŽ  r  rÖ   r�  s         r.   Ú!test_datetime_with_timezone_queryr®    sJ   € ð ×"Ñ" 4Ó(€DÜ.¨tÓ4€Hô 
Ð.°À+Ô	N€BØ
×
Ñ
€CÜ×Ñ˜3 Õ)r-   c           	     óÄ   — |j                  | «      } t        | «      }t        t        t	        d| d¬«      «      d¬«      }|j
                  }t        j                  ||«       y )Nr­  rH   rÄ  Trô  )r}  r§   r   r!  r#   rž   r·   r¸   )rV   r  r  rÖ   r�  s        r.   Ú+test_datetime_with_timezone_query_chunksizer°    sX   € à×"Ñ" 4Ó(€DÜ.¨tÓ4€Hä	ÜŒ^Ð2°DÀAÔFÓGØô
€Bð ×
Ñ
€CÜ×Ñ˜3 Õ)r-   c                ó°   — |j                  | «      } t        | «      }t        j                  d| «      }t	        j
                  ||j                  «       «       y )Nr�   )r}  r§   r   r$   r·   rò  rt  )rV   r  r  r  s       r.   Ú!test_datetime_with_timezone_tabler²  (  sG   € à×"Ñ" 4Ó(€DÜ.¨tÓ4€HÜ×Ñ ¨$Ó/€FÜ×Ñ˜& (×"3Ñ"3Ó"5Õ6r-   c                ó4  — | }|j                  | «      } t        dt        ddd¬«      i«      }|j                  d| d¬«      dk(  sJ ‚d	|v r"|d   j                  j                  d
«      |d<   n!|d   j                  j                  d «      |d<   t        j                  d| «      }t        j                  ||«       t        j                  d| «      }d|v r0t        |j                  d   t        «      sJ ‚t        |d   «      |d<   t        j                  ||«       y )NrÙ   ú2013-01-01 09:00:00rJ   ú
US/Pacific©Úperiodsr¢   Útest_datetime_tzFrñ  r(   r    zSELECT * FROM test_datetime_tzr&   ©r   rÙ   )r}  r   r   r~  ÚdtÚ
tz_convertÚtz_localizer   r$   r·   rò  r#   rx   ÚlocrÁ   r   )rV   r  rè  r  r  s        r.   Ú%test_datetime_with_timezone_roundtripr¾  0  s  € à€IØ×"Ñ" 4Ó(€Dô
 Ø	ŒjÐ.¸¸lÔKÐLó€Hð �?‰?Ð 2¸ÀEˆ?ÓJÈaÒOÐOÐOà�yÑ à  ™×(Ñ(×3Ñ3°EÓ:ˆ�Šð ! ™×(Ñ(×4Ñ4°TÓ:ˆ�‰ä×ÑÐ 2°DÓ9€FÜ×Ñ˜& (Ô+ä×ÑÐ @À$ÓG€FØ�9Ñä˜&Ÿ*™* VÑ,¬cÔ2Ð2Ð2Ü! &¨¡+Ó.ˆˆs‰Ü×Ñ˜& (Õ+r-   c                ó   — |j                  | «      } t        dt        ddd«      idg¬«      }|j                  d| d¬«      dk(  sJ ‚t	        j
                  d| «      }t        t        j                  gdg¬	«      }t        j                  ||«       y )
Nr   i'  rH   r   rn  Útest_datetime_obbFrñ  râ   )
r}  r   r   r~  r   r$   r•  ÚNaTr·   rò  )rV   r  rÊ   r  r  s        r.   Útest_out_of_bounds_datetimerÂ  O  s…   € ð ×"Ñ" 4Ó(€DÜ�fœh t¨Q°Ó2Ð3¸A¸3Ô?€DØ�;‰;Ð/°TÀˆ;ÓGÈ1ÒLÐLÐLÜ×ÑÐ 3°TÓ:€FÜœ"Ÿ&™&˜¨F¨8Ô4€HÜ×Ñ˜& (Õ+r-   c                ó"  — |j                  | «      } t        ddd¬«      j                  d «      }t        dt	        d«      i|¬«      }|j                  d| d¬	«      dk(  sJ ‚t        j                  d| d¬
«      }t        j                  ||d¬«       y )Nz
2018-01-01r¯   Ú6h©r·  ÚfreqÚnumsrn  Ú	foo_tableÚ	info_date)r¤   ro   rµ  rÌ  F)Úcheck_names)
r}  r   Ú
_with_freqr   r¶  r~  r   r$   r·   rò  )rV   r  Údatesr  r  s        r.   Ú"test_naive_datetimeindex_roundtriprÍ  Z  s†   € ð ×"Ñ" 4Ó(€DÜ�|¨Q°TÔ:×EÑEÀdÓK€EÜ˜&¤%¨£(Ð+°5Ô9€HØ�?‰? °À;ˆ?ÓOÐSTÒTÐTÐTÜ×Ñ ¨T¸[ÔI€Fä×Ñ˜& (¸Ö>r-   c                óÖ  — | }|j                  | «      } t        j                  d| «      }d|v rt        nt        j
                  }t        |j                  j                  j                  |«      sJ ‚t        j                  d| dg¬«      }t        |j                  j                  j                  t        j
                  «      sJ ‚t        j                  d| ddi¬«      }t        |j                  j                  j                  t        j
                  «      sJ ‚t        j                  d| dddii¬«      }t        |j                  j                  j                  t        j
                  «      sJ ‚t        j                  d| dg¬«      }t        |j                  j                  j                  t        j
                  «      sJ ‚t        j                  d| ddi¬«      }t        |j                  j                  j                  t        j
                  «      sJ ‚t        j                  d| dd	dii¬«      }t        |j                  j                  j                  t        j
                  «      sJ ‚y )
Nr‚   r&   r„   r�  r�  Úformatr…   ru  Úunit)r}  r   r$   ræ  rµ   r’  r´   r„   r@   r³   r…   )rV   r  rè  rÖ   Úexpected_types        r.   Útest_date_parsingrÒ  g  s×  € ð €IØ×"Ñ" 4Ó(€DÜ	×	Ñ	˜G TÓ	*€BØ&¨)Ñ3•F¼¿¹€MÜ�b—j‘j×&Ñ&×+Ñ+¨]Ô;Ð;Ð;ä	×	Ñ	˜G T¸	°{Ô	C€BÜ�b—j‘j×&Ñ&×+Ñ+¬R¯]©]Ô;Ð;Ð;ä	×	Ñ	˜G T¸	ÐCVÐ7WÔ	X€BÜ�b—j‘j×&Ñ&×+Ñ+¬R¯]©]Ô;Ð;Ð;ä	×	Ñ	ØØØ Ð+>Ð ?Ð@ô
€Bô
 �b—j‘j×&Ñ&×+Ñ+¬R¯]©]Ô;Ð;Ð;ä	×	Ñ	˜G T¸°~Ô	F€BÜ�b—m‘m×)Ñ)×.Ñ.´·±Ô>Ð>Ð>ä	×	Ñ	˜G T¸ÀcÐ7JÔ	K€BÜ�b—m‘m×)Ñ)×.Ñ.´·±Ô>Ð>Ð>ä	×	Ñ	˜G T¸ÀvÈsÀmÐ7TÔ	U€BÜ�b—m‘m×)Ñ)×.Ñ.´·±Ô>Ð>Ñ>r-   c                óD  — | }|j                  | «      } t        t        dd¬«      t        j                  d«      dœ«      }|j                  d| ¬«      dk(  sJ ‚t        j                  d| «      }|j                  dd	¬
«      }t        j                  ||«       t        j                  d| «      }|j                  dd	¬
«      }d|v rGt        |j                  d   t        «      sJ ‚t        |d   «      |d<   t        j                  ||«       y t        j                  ||«       y )Nr´  rJ   ©r·  rˆ  rÑ  Útest_datetimer¤  r­   rH   )ÚaxisúSELECT * FROM test_datetimer&   r¹  rÙ   )r}  r   r   rµ   rs  r~  r   r$   rk   r·   rò  r#   rx   r½  rÁ   r   ©rV   r  rè  rÖ   r  s        r.   rÕ  rÕ  ‡  s  € à€IØ×"Ñ" 4Ó(€DÜ	ÜÐ.¸Ô:ÄÇÁÈ3ÃÑPó
€Bð �9‰9˜/¨tˆ9Ó4¸Ò9Ð9Ð9ô ×Ñ °Ó6€FØ�[‰[˜ qˆ[Ó)€FÜ×Ñ˜& "Ô%ô ×ÑÐ =¸tÓD€FØ�[‰[˜ qˆ[Ó)€FØ�9ÑÜ˜&Ÿ*™* VÑ,¬cÔ2Ð2Ð2Ü! &¨¡+Ó.ˆˆs‰Ü
×Ñ˜f bÕ)ä
×Ñ˜f bÕ)r-   c                ó8  — | }|j                  | «      } t        t        dd¬«      t        j                  d«      dœ«      }t        j
                  |j                  d<   |j                  d| d¬	«      dk(  sJ ‚t        j                  d| «      }t        j                  ||«       t        j                  d
| «      }d|v rIt        |j                  d   t        «      sJ ‚t        |d   d¬«      |d<   t        j                  ||«       y t        j                  ||«       y )Nr´  rJ   rÔ  rˆ  rÑ  ©rH   rÙ   rÕ  Frñ  r×  r&   r¹  rÙ   r—  rt   )r}  r   r   rµ   rs  r  r½  r~  r   r$   r·   rò  r#   rx   rÁ   r   rØ  s        r.   Útest_datetime_NaTrÛ     s÷   € à€IØ×"Ñ" 4Ó(€DÜ	ÜÐ.¸Ô:ÄÇÁÈ3ÃÑPó
€Bô —V‘V€B‡F�Fˆ6�NØ�9‰9˜/¨t¸5ˆ9ÓAÀQÒFÐFÐFô ×Ñ °Ó6€FÜ×Ñ˜& "Ô%ô ×ÑÐ =¸tÓD€FØ�9ÑÜ˜&Ÿ*™* VÑ,¬cÔ2Ð2Ð2Ü! &¨¡+°hÔ?ˆˆs‰Ü
×Ñ˜f bÕ)ä
×Ñ˜f bÕ)r-   c                ó  — |j                  | «      } t        t        ddd«      t        ddd«      gdg¬«      }|j                  d| d¬«      dk(  sJ ‚t	        d| «      }|d   }t        |d   «      }t        j                  ||«       y )	NéÞ  rH   rI   rŽ  râ   Ú	test_dateFrñ  )r}  r   r   r~  r$   r   r·   r¸   )rV   r  rÖ   r  r  r  s         r.   Útest_datetime_daterß  ¸  s‰   € ð ×"Ñ" 4Ó(€DÜ	”D˜˜q !Ó$¤d¨4°°AÓ&6Ð7À#ÀÔ	G€BØ�9‰9˜+¨4°uˆ9Ó=ÀÒBÐBÐBÜ
˜ dÓ
+€CØ�‰X€FÜ˜2˜c™7Ó#€Hä×Ñ˜6 8Õ,r-   c                óÀ  — | }|j                  | «      } t        t        ddd«      t        ddd«      gdg¬«      }|j                  d| d¬	«      d
k(  sJ ‚t	        d| «      }t        j                  ||«       |}t        j                  |d|d¬«      d
k(  sJ ‚t        j                  d|«      }|j                  d„ «      }t        j                  ||«       t        j                  |d| d¬«      d
k(  sJ ‚d|v r>t        j                  d| «      }|j                  d„ «      }t        j                  ||«       t        j                  d| «      }t        j                  ||«       y )Né	   r   rH   é   rŽ  râ   Ú	test_timeFrñ  rI   Ú
test_time2rn  zSELECT * FROM test_time2c                ó$   — | j                  d«      S ©Nz%H:%M:%S.%f©Ústrftime©Ú_s    r.   ú<lambda>z$test_datetime_time.<locals>.<lambda>Ô  s   € ˜1Ÿ:™: mÓ4€ r-   Ú
test_time3r&   zSELECT * FROM test_time3c                ó$   — | j                  d«      S ræ  rç  ré  s    r.   rë  z$test_datetime_time.<locals>.<lambda>Ú  s   € ˜qŸz™z¨-Ó8€ r-   )
r}  r   r   r~  r$   r·   rò  r   r#   Úmap)rV   r  rs  rè  rÖ   r  rY  Úrefs           r.   Útest_datetime_timerð  Å  sD  € ð €IØ×"Ñ" 4Ó(€DÜ	”D˜˜A˜q“M¤4¨¨1¨b£>Ð2¸S¸EÔ	B€BØ�9‰9˜+¨4°uˆ9Ó=ÀÒBÐBÐBÜ
˜ dÓ
+€CÜ×Ñ˜#˜rÔ"ð !€KÜ�:‰:�b˜,¨¸5ÔAÀQÒFÐFÐFÜ
×
Ñ
Ð7¸Ó
E€CØ
�&‰&Ñ4Ó
5€CÜ×Ñ˜#˜sÔ#ä�:‰:�b˜,¨°EÔ:¸aÒ?Ð?Ð?Ø�9ÑÜ× Ñ Ð!;¸TÓBˆØ�f‰fÑ8Ó9ˆÜ
×Ñ˜c 3Ô'Ü
×
Ñ
˜\¨4Ó
0€CÜ×Ñ˜"˜cÕ"r-   c                ó>  — |j                  | «      } t        dt        j                  ¬«      }t        dt        j                  ¬«      }t        ||dœ«      }|j                  d| d¬«      dk(  sJ ‚t        j                  d| «      }t        j                  ||dd	¬
«       y )Ni  r‹  g        )Ús1rv  Útest_read_writeFrñ  rH   T)Úcheck_dtypeÚcheck_exact)r}  r   rµ   r›  Úfloat32r   r~  r   r$   r·   rò  )rV   r  rò  rv  rÖ   r  s         r.   Útest_mixed_dtype_insertr÷  à  sŠ   € ð ×"Ñ" 4Ó(€DÜ	�	¤§¡Ô	*€BÜ	�œ2Ÿ:™:Ô	&€BÜ	˜" BÑ'Ó	(€Bð �9‰9Ð+°¸Uˆ9ÓCÀqÒHÐHÐHÜ
×
Ñ
Ð.°Ó
5€Cä×Ñ˜"˜c¨uÀ$ÖGr-   c                óJ  — |j                  | «      } t        g d¢dt        j                  dgdœ«      }|j	                  d| d¬«      dk(  sJ ‚t        j                  d| «      }t        j                  ||«       t        j                  d	| «      }t        j                  ||«       y )
Nr  r«   rÕ  rÑ  Útest_nanFrñ  rJ   úSELECT * FROM test_nan)
r}  r   rµ   r  r~  r   r$   r·   rò  r#   r©  s       r.   Útest_nan_numericrû  ï  s”   € ð ×"Ñ" 4Ó(€DÜ	š¨#¬r¯v©v°sÐ);Ñ<Ó	=€BØ�9‰9˜*¨$°eˆ9Ó<ÀÒAÐAÐAô ×Ñ 
¨DÓ1€FÜ×Ñ˜& "Ô%ô ×ÑÐ 8¸$Ó?€FÜ×Ñ˜& "Õ%r-   c                óº  — |j                  | «      } t        g d¢t        j                  t        j                  t        j                  gdœ«      }|j	                  d| d¬«      dk(  sJ ‚t        j                  d| «      }t        j                  ||«       |d   j                  d«      |d<   d |d<   t        j                  d	| «      }t        j                  ||«       y )
Nr  rÑ  rù  Frñ  rJ   rÚ   ræ  rú  )r}  r   rµ   r  r~  r   r$   r·   rò  rÕ   r#   r©  s       r.   Útest_nan_fullcolumnrý  ÿ  s»   € ð ×"Ñ" 4Ó(€DÜ	š¬"¯&©&´"·&±&¼"¿&¹&Ð)AÑBÓ	C€BØ�9‰9˜*¨$°eˆ9Ó<ÀÒAÐAÐAô ×Ñ 
¨DÓ1€FÜ×Ñ˜& "Ô%ð �‰g�n‰n˜XÓ&€B€s�GØ€B€s�GÜ×ÑÐ 8¸$Ó?€FÜ×Ñ˜& "Õ%r-   c                óh  — |j                  | «      } t        g d¢ddt        j                  gdœ«      }|j	                  d| d¬«      dk(  sJ ‚d |j
                  d	<   t        j                  d| «      }t        j                  ||«       t        j                  d
| «      }t        j                  ||«       y )Nr  rŽ  rð  rÑ  rù  Frñ  rJ   ©rI   rÚ   rú  )r}  r   rµ   r  r~  r½  r   r$   r·   rò  r#   r©  s       r.   Útest_nan_stringr     s£   € ð ×"Ñ" 4Ó(€DÜ	š¨#¨s´B·F±FÐ);Ñ<Ó	=€BØ�9‰9˜*¨$°eˆ9Ó<ÀÒAÐAÐAð €B‡F�Fˆ6�Nô ×Ñ 
¨DÓ1€FÜ×Ñ˜& "Ô%ô ×ÑÐ 8¸$Ó?€FÜ×Ñ˜& "Õ%r-   c                ó  — d| v r:|j                   j                  t        j                  j	                  dd¬«      «       | }|j                  | «      } t        j                  ddgg d¢dg¬	«      }d
}t        | «      5 }|j                  «       5  |j                  ||«      dk(  sJ ‚	 d d d «       d d d «       |dv rqt        j                  d|› d�| «      }g }|j                  D ]E  }t        j                  d|› d�| «      }	|j                  |	j                  j                  «       «       ŒG n1ddlm}
  |
| «      }|j%                  |«      }|D �cg c]  }|d   ‘Œ	 }}|dggk(  sJ ‚y # 1 sw Y   ŒÁxY w# 1 sw Y   ŒÅxY wc c}w )Nr{   z)ADBC implementation does not create indexTr£  rÅ  rÇ  rÊ  rÙ   rË  Útest_to_sql_saves_indexrI   >   rU  rs  zASELECT * FROM sqlite_master WHERE type = 'index' AND tbl_name = 'ú'zPRAGMA index_info(ú)r   rï   Úcolumn_names)r„  r…  r  r†  r‡  r}  r   rÏ  r"   rO  r~  r   r#   r¤   rõ   r“  r>   rð   Úget_indexes)rV   r  rè  rÖ   Útbl_namer«  ÚixsÚix_colsÚix_nameÚix_inforð   r�  rú  s                r.   Útest_to_sql_save_indexr  $  sš  € à��~Ø�‰×ÑÜ�K‰K×ÑØBÈ4ð ó ô	
ð
 €IØ×"Ñ" 4Ó(€DÜ	×	Ñ	Ø	Ð-Ð.ºÐPSÈuô
€Bð )€HÜ	˜4Ó	 ð 7 IØ×&Ñ&Ó(ñ 	7Ø×#Ñ# B¨Ó1°QÒ6Ð6Ñ6÷	7÷7ð Ð4Ñ4Ü× Ñ ðØ'˜j¨ð+àó
ˆð
 ˆØ—x‘xò 	2ˆGÜ×(Ñ(Ð+=¸g¸YÀaÐ)HÈ$ÓOˆGØ�N‰N˜7Ÿ<™<×.Ñ.Ó0Õ1ñ	2õ 	'á�t‹}ˆà×Ñ˜xÓ(ˆØ.1Ö2¨�1�^Ó$Ð2ˆÐ2à˜�u�gÒÐÑ÷+	7ð 	7ú÷7ð 7üò( 3s*   Á<E2ÂE&Â&E2ÅE>Å&E/	Å+E2Å2E;c                ó  — | }|j                  | «      } d}|dk7  rd|vrddlm}  ||«      }t        | «      5 }|j	                  «       5 }|j                  |«       d d d «       d d d «       y # 1 sw Y   ŒxY w# 1 sw Y   y xY w)Nú'CREATE TABLE test_trans (A INT, B TEXT)rs  r{   r   rv   )r}  r>   rw   r"   rO  rM   )rV   r  rè  rX   rw   r«  Útranss          r.   Útest_transactionsr  L  s‹   € à€IØ×"Ñ" 4Ó(€Dà4€DØÐ$Ò$¨°yÑ)@Ý#á�D‹zˆä	˜4Ó	 ð   IØ×&Ñ&Ó(ð 	 ¨EØ�M‰M˜$Ô÷	 ÷ ð  ÷	 ð 	 ú÷ ð  ús#   ¸A8Á	A,ÁA8Á,A5	Á1A8Á8Bc                óf  — | }|j                  | «      } t        | «      5 }|j                  «       5 }d}d|v st        |t        «      r|j                  |«       nddlm}  ||«      }|j                  |«       d d d «        G d„ dt        «      }d}t        |t        «      rddlm}  ||«      }	 |j                  «       5 }|j                  |«        |d«      ‚# 1 sw Y   ŒcxY w# 1 sw Y   nxY wn# |$ r Y nw xY w|j                  «       5  |j                  d	«      }	d d d «       n# 1 sw Y   nxY wt        	«      dk(  sJ ‚|j                  «       5 }|j                  |«       |j                  d	«      }
d d d «       n# 1 sw Y   nxY wt        
«      d
k(  sJ ‚	 d d d «       y # 1 sw Y   y xY w)Nr  r{   r   rv   c                  ó   — e Zd Zy)ú1test_transaction_rollback.<locals>.DummyExceptionN)rq  rr  rs  r,   r-   r.   ÚDummyExceptionr  k  s   „ Ør-   r  z/INSERT INTO test_trans (A,B) VALUES (1, 'blah')r•  zSELECT * FROM test_transrH   )r}  r"   rO  rx   r    rM   r>   rw   Ú	Exceptionr   rP  rª  )rV   r  rè  r«  r  rX   rw   r  Úins_sqlr  rö  s              r.   Útest_transaction_rollbackr  \  s±  € à€IØ×"Ñ" 4Ó(€DÜ	˜4Ó	 ð # IØ×&Ñ&Ó(ð 	$¨EØ<ˆDØ˜Ñ"¤j°¼NÔ&KØ—‘˜dÕ#å+á˜D“z�Ø—‘˜dÔ#÷	$ô	œYô 	ð DˆÜ�i¤Ô-Ý'á˜7“mˆGð	Ø×*Ñ*Ó,ð .°Ø—‘˜gÔ&Ù$ WÓ-Ð-÷-	$ð 	$ú÷(.ð .úð .øð ò 	áð	úð ×&Ñ&Ó(ñ 	CØ×&Ñ&Ð'AÓBˆC÷	C÷ 	Cñ 	Cúä�3‹x˜1Š}Ðˆ}ð ×&Ñ&Ó(ð 	D¨EØ�M‰M˜'Ô"Ø×'Ñ'Ð(BÓCˆD÷	D÷ 	Dñ 	Dúô �4‹y˜AŠ~Ð‰~÷G#÷ #ñ #ús‰   ŸF'°ACÁ87F'Â0C3Ã C&ÃC#	ÃF'Ã&C/	Ã+C3Ã2F'Ã3C;Ã8F'Ã:C;Ã;F'ÄD)Ä 	F'Ä)D2	Ä.'F'Å#FÅ8	F'ÆF
	ÆF'Æ'F0c                óV  — | dk(  r/|j                  t        j                  j                  d¬«      «       |j	                  | «      } ddlm} ddlm} d}t        j                  ||| ¬«      }|j                  d d } ||«      }t        | |«      rD| j                  «       5 }|j                  «       5  |j                  |«       d d d «       d d d «       n| j                  |«       t        j                   || «      }	t#        j$                  |	|d	¬
«       y # 1 sw Y   ŒRxY w# 1 sw Y   ŒDxY w)NrU  z(test does not support sqlite_str fixturer‚  r   rv   r—   Útest_get_schema_create_tablerz  FrÍ  )rã  r  r†  r‡  r}  r>   rw   r™   r˜   r   rß  r²   rx   rš   rj   rM   r$   r·   rò  )
rV   r  rç   rw   r˜   r  r"  Úblank_test_dfÚnewconÚreturned_dfs
             r.   r  r  †  s  € ð
 ˆ|ÒØ×ÑÜ�K‰K×ÑÐ%OÐÓPô	
ð ×"Ñ" 4Ó(€DåÝ(à
(€CÜ—‘ ¨S°dÔ;€JØ×$Ñ$ R aÐ(€Má�jÓ!€JÜ�$˜ÔØ�\‰\‹^ð 	+˜vØ—‘“ñ +Ø—‘˜zÔ*÷+÷	+ð 	+ð 	�‰�ZÔ Ü×$Ñ$ S¨$Ó/€KÜ×Ñ˜+ }ÀuÖM÷+ð +ú÷	+ð 	+ús$   ÂDÂ0DÃDÄD	ÄDÄD(c                óP  — | dk(  rt        j                  d«       |j                  | «      } ddlm}m} ddlm} ddg}dd	g}t        ||¬
«      }|j                  d| ¬«      dk(  sJ ‚|j                  d| d|i¬«      dk(  sJ ‚ |«       }|j                  | ¬«       |j                  d   j                  d   j                  }	t        |	|«      sJ ‚d}
t        j                  t         |
¬«      5  |j                  d| dt"        i¬«       d d d «       |j                  d| d |d«      i¬«      dk(  sJ ‚|j                  | ¬«       |j                  d   j                  d   j                  }	t        |	|«      sJ ‚|	j$                  dk(  sJ ‚|j                  d| |¬«      dk(  sJ ‚|j                  | ¬«       |j                  d   j                  d   j                  }|j                  d   j                  d   j                  }t        ||«      sJ ‚t        ||«      sJ ‚y # 1 sw Y   �ŒxY w)NrU  r„  r   )r~   r5   ©r4   rÙ   rÚ   ©gš™™™™™é?T©gÍÌÌÌÌÌì?Nrâ   Ú
dtype_testr¤  rI   Údtype_test2©r¤   ro   r@   re   z&The type of B is not a SQLAlchemy typerµ  r•  Údtype_test3é
   Úsingle_dtype_test)r  rŽ  r}  r>   r~   r5   Úsqlalchemy.schemar4   r   r~  ÚreflectÚtablesr¹   r³   rx   r¶  r·  rÁ   rË  )rV   r  r~   r5   r4   r  rÊ   rÖ   ÚmetaÚsqltyper›  ÚsqltypeaÚsqltypebs                r.   Ú
test_dtyper.  ¤  s  € àˆ|ÒÜ�‰Ð9Ô:à×"Ñ" 4Ó(€D÷õ +à�ˆ:€DØ˜Ð%€DÜ	�4 Ô	&€BØ�9‰9˜,¨Dˆ9Ó1°QÒ6Ð6Ð6Ø�9‰9˜-¨T¸#¸t¸ˆ9ÓEÈÒJÐJÐJÙ‹:€DØ‡L�L�d€LÔØ�k‰k˜-Ñ(×0Ñ0°Ñ5×:Ñ:€GÜ�g˜tÔ$Ð$Ð$Ø
2€CÜ	�‰”z¨Ô	-ñ <Ø
�	‰	�w D°´c°
ˆ	Ô;÷<ð �9‰9˜-¨T¸#¹vÀb»zÐ9Jˆ9ÓKÈqÒPÐPÐPØ‡L�L�d€LÔØ�k‰k˜-Ñ(×0Ñ0°Ñ5×:Ñ:€GÜ�g˜vÔ&Ð&Ð&Ø�>‰>˜RÒÐÐð �9‰9Ð-°4¸tˆ9ÓDÈÒIÐIÐIØ‡L�L�d€LÔØ�{‰{Ð.Ñ/×7Ñ7¸Ñ<×AÑA€HØ�{‰{Ð.Ñ/×7Ñ7¸Ñ<×AÑA€HÜ�h Ô%Ð%Ð%Ü�h Ô%Ð%Ñ%÷!<ñ <ús   Ã,HÈH%c                óÄ  — | dk(  rt        j                  d«       | }|j                  | «      } ddlm}m}m}m} ddlm	} t        dd g«      t        t        ddd	«      d g«      t        d	d gd
¬«      t        dd g«      dœ}t        |«      }	d}
|	j                  |
| ¬«      dk(  sJ ‚t        j                  |
| «      } |«       }|j!                  | ¬«       d|v r|n|}|j"                  |
   j$                  }t'        |d   j(                  |«      sJ ‚t'        |d   j(                  |«      sJ ‚t'        |d   j(                  |«      sJ ‚t'        |d   j(                  |«      sJ ‚y )NrU  r„  r   )r   r€   r3   r�   r  TéÜ  r¯   rH   ræ  r‹  ræ  ©ÚBoolÚDateÚIntr3   Únotna_dtype_testr¤  rI   re   r'   r2  r3  r4  r3   )r  rŽ  r}  r>   r   r€   r3   r�   r'  r4   r   r   r   r~  r   r$   r(  r)  r¹   rx   r³   )rV   r  rè  r   r€   r3   r�   r4   r  rÖ   r  rê  r*  Úmy_typeÚcol_dicts                  r.   Útest_notna_dtyper8  Î  s_  € àˆ|ÒÜ�‰Ð9Ô:à€IØ×"Ñ" 4Ó(€D÷ó õ +ô ˜˜d�|Ó$Üœ  q¨!Ó,¨dÐ3Ó4Ü�q˜$�i xÔ0Ü˜˜d˜Ó$ñ	€Dô 
�4‹€Bà
€CØ�9‰9˜# 4ˆ9Ó(¨AÒ-Ð-Ð-Ü×Ñ˜3 Ó%€AÙ‹:€DØ‡L�L�d€LÔØ  IÑ-‰g°7€GØ�{‰{˜3Ñ×'Ñ'€HÜ�h˜vÑ&×+Ñ+¨WÔ5Ð5Ð5Ü�h˜vÑ&×+Ñ+¨XÔ6Ð6Ð6Ü�h˜u‘o×*Ñ*¨GÔ4Ð4Ð4Ü�h˜wÑ'×,Ñ,¨eÔ4Ð4Ñ4r-   c           
     óÌ  — | dk(  rt        j                  d«       |j                  | «      } ddlm}m}m} ddlm} d}t        t        |gd¬«      t        |gd	¬«      t        |gd	¬«      t        d
gd¬«      t        d
gd¬«      dœ«      }|j                  d| ddd |d¬«      i¬«      dk(  sJ ‚t        j                  d| «      }t        j                  |d   j                   d   d«      t        j                  |d   j                   d   d«      k(  sJ ‚ |«       }	|	j#                  | ¬«       |	j$                  d   j&                  }
t)        |
d   j*                  «      t)        |
d   j*                  «      k(  sJ ‚t-        |
d   j*                  |«      sJ ‚t-        |
d   j*                  |«      sJ ‚t-        |
d   j*                  |«      sJ ‚t-        |
d   j*                  |«      sJ ‚y )NrU  r„  r   )Ú
BigIntegerr3   r�   r  gñYÉBÊÀó?rö  r‹  Úfloat64r¯   r›  rÓ   )Úf32Úf64Ú
f64_as_f32Úi32r§  Útest_dtypesFr”  r>  é   )Ú	precision)r¤   ro   r­   r|  r@   rH   r=  é   re   r<  r?  r§  )r  rŽ  r}  r>   r:  r3   r�   r'  r4   r   r   r~  r   r$   rµ   Úroundr²   r(  r)  r¹   rÁ   r³   rx   )rV   r  r:  r3   r�   r4   ÚVrÖ   r  r*  r7  s              r.   Útest_double_precisionrF  ó  sÚ  € àˆ|ÒÜ�‰Ð9Ô:à×"Ñ" 4Ó(€D÷ñ õ
 +à€Aä	ä˜1˜# YÔ/Ü˜1˜# YÔ/Ü  ! ¨IÔ6Ü˜1˜# WÔ-Ü˜1˜# WÔ-ñ	
ó
€Bð 	�	‰	ØØØØØ¡°Ô!4Ð5ð 	ó 	
ð ò	ð	ð	ô ×
Ñ
˜]¨DÓ
1€Cô �8‰8�B�u‘I—N‘N 1Ñ% rÓ*¬b¯h©h°s¸5±z·±ÀqÑ7IÈ2Ó.NÒNÐNÐNñ ‹:€DØ‡L�L�d€LÔØ�{‰{˜=Ñ)×1Ñ1€HÜˆx˜‰×#Ñ#Ó$¬¨H°\Ñ,B×,GÑ,GÓ(HÒHÐHÐHÜ�h˜u‘o×*Ñ*¨EÔ2Ð2Ð2Ü�h˜u‘o×*Ñ*¨EÔ2Ð2Ð2Ü�h˜u‘o×*Ñ*¨GÔ4Ð4Ð4Ü�h˜u‘o×*Ñ*¨JÔ7Ð7Ñ7r-   c                ó¸   ‡‡‡‡— |j                  | «      } ddlmŠ d„ Šd„ Šˆˆfd„Šˆˆfd„}t        dg d¢i«      j	                  d| ¬	«      d
k(  sJ ‚ || «       y )Nr   r—   c                ó4   — d}t        j                  || ¬«      S )Nz'SELECT test_foo_data FROM test_foo_datarz  )r   r#   )rý  rÓ  s     r.   Útest_selectz3test_connectable_issue_example.<locals>.test_select/  s   € Ø9ˆÜ×!Ñ! %¨ZÔ8Ð8r-   c                ó,   — |j                  d| d¬«       y )NÚtest_foo_datarõ   )r¤   ro   r|  )r~  )rý  rÊ   s     r.   Útest_appendz3test_connectable_issue_example.<locals>.test_append3  s   € Ø�‰˜¨jÀHˆÕMr-   c                ó(   •—  ‰| «      } ‰| |«       y r  r,   )rV   Úfoo_datarL  rI  s     €€r.   Útest_connectablez8test_connectable_issue_example.<locals>.test_connectable6  s   ø€ ñ ˜tÓ$ˆÙ�D˜(Õ#r-   c                óÔ   •— t        | ‰«      r;| j                  «       5 }|j                  «       5   ‰|«       d d d «       d d d «       y  ‰| «       y # 1 sw Y   ŒxY w# 1 sw Y   y xY wr  )rx   rš   rj   )ÚconnectablerV   r˜   rO  s     €€r.   Úmainz,test_connectable_issue_example.<locals>.main<  se   ø€ Ü�k 6Ô*Ø×$Ñ$Ó&ð +¨$Ø—Z‘Z“\ñ +Ù$ TÔ*÷+÷+ð +ñ ˜[Õ)÷+ð +ú÷+ð +ús!   žA¯	A¸AÁA	ÁAÁA'rK  r  r¤  rJ   )r}  r™   r˜   r   r~  )rV   r  rR  r˜   rL  rO  rI  s      @@@@r.   Útest_connectable_issue_examplerS  '  sh   û€ à×"Ñ" 4Ó(€Dõ )ò9òNõ$õ*ô 	�?¢IÐ.Ó/×6Ñ6¸OÐQUÐ6ÓVØò	ðð	ñ 	ˆ…Jr-   Úinputr£  Úbar)r£  Úinfe0c                óJ  — t        |«      }| }|j                  | «      } d|v r°t        j                  d«      }t	        |j
                  «      t	        d«      k  r?d|j                  v r1t        j                  j                  d¬«      }|j                  |«       d}t        j                  t        |¬«      5  |j                  d	| d
¬«       d d d «       y |j                  d	| d
¬«      dk(  sJ ‚t        j                  d	| «      }t        j                   ||«       y # 1 sw Y   y xY w)Nr'   r  z1.0.3rV  zGH 36465r‚  zinf cannot be used with MySQLrµ  ÚfoobarFrñ  rH   )r   r}  r  r  r   r?   r¹   r†  r‡  rã  r¶  r·  r~  r   r$   r·   Úassert_equal)	rV   r  rT  rÖ   rè  r  r†  r›  r  s	            r.   Útest_to_sql_with_negative_npinfrZ  K  s  € ô 
�5Ó	€BØ€IØ×"Ñ" 4Ó(€Dà�)Ñô
 ×%Ñ% iÓ0ˆä�7×&Ñ&Ó'¬'°'Ó*:Ò:¸wÈ"Ï*É*Ñ?TÜ—;‘;×$Ñ$¨JÐ$Ó7ˆDØ×Ñ Ô%à-ˆÜ�]‰]œ:¨SÔ1ñ 	<Ø�I‰I˜8¨°UˆIÔ;÷	<ð 	<ð �y‰y˜h¨D¸ˆyÓ>À!ÒCÐCÐCÜ× Ñ  ¨4Ó0ˆÜ
�‰˜˜CÕ ÷	<ð 	<ús   Â5DÄD"c                óx  ‡‡‡— | dk(  rt        j                  d«       |j                  | «      } ddlmŠmŠmŠm} ddlm	}m
} d}t        d|gi«      } |«       } G ˆˆˆfd„d	|«      } || «      5 }	|	j                  «       5  |	j                  «       } |j                  j                  | «       |	j!                   ||¬
«      «       |	j#                  «        t%        j&                   ||j(                  «      | ¬«      }
d d d «       d d d «       t+        j,                  
|«       y # 1 sw Y   Œ(xY w# 1 sw Y   Œ,xY w)NrU  z&test does not work with str connectionr   )r1   r�   ÚUnicoderÈ  )ÚSessionÚdeclarative_basezHello, World!Úspamc                  óX   •— e Zd ZdZddgiZ W ° W °d¬«      Z W °  W °d«      d¬«      Zy	)
ú'test_temporary_table.<locals>.TemporaryÚ	temp_testÚprefixesÚ	TEMPORARYT©Úprimary_keyrâ  F)ÚnullableN)rq  rr  rs  Ú__tablename__Ú__table_args__Úidr_  )r1   r�   r\  s   €€€r.   Ú	Temporaryra  �  s0   ø„ Ø#ˆØ$ { mÐ4ˆÚ‘G¨Ô.ˆÚ’g˜b“k¨EÔ2‰r-   rk  )r_  )r   ro   )r  rŽ  r}  r>   r1   r�   r\  rÈ  Úsqlalchemy.ormr]  r^  r   rj   rý  Ú	__table__rl   ÚaddÚflushr   r#   r_  r·   rò  )rV   r  rÈ  r]  r^  r+  r  ÚBaserk  ÚsessionrÖ   r1   r�   r\  s              @@@r.   Útest_temporary_tablerr  k  s  ú€ àˆ|ÒÜ�‰Ð<Ô=à×"Ñ" 4Ó(€D÷ó ÷ð
  €IÜ˜& 9 +Ð.Ó/€HÙÓ€D÷3ð 3�Dô 3ñ 
�‹ð J˜'Ø�]‰]‹_ñ 	JØ×%Ñ%Ó'ˆDØ×Ñ×&Ñ& tÔ,Ø�K‰K™	 yÔ1Ô2Ø�M‰MŒOÜ×#Ñ#©¨y¯~©~Ó(>ÀDÔIˆB÷	J÷Jô ×Ñ˜"˜hÕ'÷	Jð 	Jú÷Jð Jús%   Á1D0ÂA;D$Ã=D0Ä$D-	Ä)D0Ä0D9c                ób  — | dk(  sd| v r/|j                  t        j                  j                  d¬«      «       |j	                  | «      } d}t        | «      5 }t        j                  t        |¬«      5  |j                  |dd¬	«       d d d «       d d d «       y # 1 sw Y   ŒxY w# 1 sw Y   y xY w)
Nrs  r{   z9SQLiteDatabase/ADBCDatabase does not raise for bad enginer‚  z*engine must be one of 'auto', 'sqlalchemy'rµ  rå   Ú
bad_engine©rÆ   )	rã  r  r†  r‡  r}  r"   r¶  r·  r~  )rV   r  rå   r›  r«  s        r.   Útest_invalid_enginerv  ‘  sµ   € àÐÒ 6¨T¡>Ø×ÑÜ�K‰K×ÑØRð ó ô	
ð ×"Ñ" 4Ó(€DØ
6€CÜ	˜4Ó	 ð N IÜ�]‰]œ:¨SÔ1ñ 	NØ×Ñ˜[¨-ÀÐÔM÷	N÷Nð N÷	Nð 	Nú÷Nð Nús$   ÁB%Á3BÂB%ÂB"	ÂB%Â%B.c                óF  — |j                  | «      } t        | «      5 }|j                  «       5  |j                  |dd¬«      dk(  sJ ‚|j	                  d«      sJ ‚	 ddd«       ddd«       t        |«      }t        | d«      }||k(  sJ ‚y# 1 sw Y   Œ0xY w# 1 sw Y   Œ4xY w)z `to_sql` with the `engine` paramrå   Úautoru  rK   N)r}  r"   rO  r~  r©  rª  rÇ   rd  s         r.   Útest_to_sql_with_sql_enginery  ¡  s¯   € ð ×"Ñ" 4Ó(€DÜ	˜4Ó	 ð 6 IØ×&Ñ&Ó(ñ 	6Ø×#Ñ# K°ÀvÐ#ÓNÐRSÒSÐSÐSØ×&Ñ& }Ô5Ð5Ñ5÷	6÷6ô
 �kÓ"€KÜ˜$ Ó.€HØ�{Ò"Ð"Ñ"÷	6ð 	6ú÷6ð 6ús"   �B®-BÁBÂB	ÂBÂB c                óš  — |j                  | «      } t        j                  dd«      5  t        | «      5 }|j	                  «       5  |j                  |d«      dk(  sJ ‚|j                  d«      sJ ‚	 d d d «       d d d «       t        |«      }t        | d«      }||k(  sJ ‚	 d d d «       y # 1 sw Y   Œ9xY w# 1 sw Y   Œ=xY w# 1 sw Y   y xY w)Núio.sql.enginer>   rå   rK   ©	r}  r•  Úoption_contextr"   rO  r~  r©  rª  rÇ   rd  s         r.   Útest_options_sqlalchemyr~  °  sÓ   € ð ×"Ñ" 4Ó(€DÜ	×	Ñ	˜?¨LÓ	9ñ 'Ü˜tÓ$ð 	:¨	Ø×*Ñ*Ó,ñ :Ø ×'Ñ'¨°]ÓCÀqÒHÐHÐHØ ×*Ñ*¨=Ô9Ð9Ñ9÷:÷	:ô
 ˜+Ó&ˆÜ˜d MÓ2ˆØ˜;Ò&Ð&Ñ&÷'ð '÷:ð :ú÷	:ð 	:ú÷'ð 'úó:   ¨C´B5Á+B)Á1B5Á9&CÂ)B2Â.B5Â5B>	Â:CÃC
c                óš  — |j                  | «      } t        j                  dd«      5  t        | «      5 }|j	                  «       5  |j                  |d«      dk(  sJ ‚|j                  d«      sJ ‚	 d d d «       d d d «       t        |«      }t        | d«      }||k(  sJ ‚	 d d d «       y # 1 sw Y   Œ9xY w# 1 sw Y   Œ=xY w# 1 sw Y   y xY w)Nr{  rx  rå   rK   r|  rd  s         r.   Útest_options_autor�  ¿  sÓ   € ð ×"Ñ" 4Ó(€DÜ	×	Ñ	˜?¨FÓ	3ñ 'Ü˜tÓ$ð 	:¨	Ø×*Ñ*Ó,ñ :Ø ×'Ñ'¨°]ÓCÀqÒHÐHÐHØ ×*Ñ*¨=Ô9Ð9Ñ9÷:÷	:ô
 ˜+Ó&ˆÜ˜d MÓ2ˆØ˜;Ò&Ð&Ñ&÷'ð '÷:ð :ú÷	:ð 	:ú÷'ð 'úr  c                 óì  — t        j                  d«       t        t        d«      t        «      sJ ‚t        j                  dd«      5  t        t        d«      t        «      sJ ‚t        t        d«      t        «      sJ ‚	 d d d «       t        j                  dd«      5  t        t        d«      t        «      sJ ‚t        t        d«      t        «      sJ ‚	 d d d «       y # 1 sw Y   Œ`xY w# 1 sw Y   y xY w)Nr>   r{  rx  )r  r  rx   r!   r   r•  r}  r,   r-   r.   Útest_options_get_enginerƒ  Î  sØ   € Ü
×Ñ˜Ô%Ü”j Ó.Ô0@ÔAÐAÐAä	×	Ñ	˜?¨LÓ	9ñ FÜœ* VÓ,Ô.>Ô?Ð?Ð?Üœ* \Ó2Ô4DÔEÐEÑE÷Fô 
×	Ñ	˜?¨FÓ	3ñ FÜœ* VÓ,Ô.>Ô?Ð?Ð?Üœ* \Ó2Ô4DÔEÐEÑE÷Fð F÷	Fð Fú÷Fð Fús   Á7CÂ7C*ÃC'Ã*C3c                  ó   — y r  r,   r,   r-   r.   Ú"test_get_engine_auto_error_messager…  Û  s   € ð 	r-   Úfuncr½  r#   c                óp  — | }|j                  | «      } d}|}	|	j                  || dd¬«       t        j                  d|«      5   t	        t        |«      d|› �| |¬«      }
 ||||«      }d d d «       t        j                  
«       d|v r/|j                  t        j                  j                  d	¬
«      «       t        j                  d|«      5   t	        t        |«      d|› �| |d¬«      } ||||«      }|D ]  }
t        j                  |
|«       Œ 	 d d d «       y # 1 sw Y   Œ·xY w# 1 sw Y   y xY w)Nrz  Fr”  ©r¤   ro   r­   r|  úmode.string_storageúSelect * from ©Údtype_backendr{   z(adbc does not support chunksize argumentr‚  rJ   )ro   rŒ  rÅ  )r}  r~  r•  r}  rl  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’  â  sR  € ð €IØ×"Ñ" 4Ó(€DØ€EØ	€BØ‡I�I�5˜d¨%¸9€IÔEä	×	Ñ	Ð0°.Ó	Añ TØ"”œ˜TÓ"Ø˜U˜GÐ$ d¸-ô
ˆñ *¨.¸-ÈÓSˆ÷	Tô ×Ñ˜& (Ô+à�Ñà×ÑÜ�K‰K×ÑÐ%OÐÓPô	
ô 
×	Ñ	Ð0°.Ó	Añ 	4Ø$”7œ2˜tÓ$Ø˜U˜GÐ$ØØ'Øô	
ˆñ *¨.¸-ÈÓSˆØò 	4ˆFÜ×!Ñ! &¨(Õ3ñ	4÷	4ð 	4÷Tð Tú÷	4ð 	4ús   Á'D ÃAD,Ä D)Ä,D5r$   c                óv  — d| v r3d| vr/|j                  t        j                  j                  d¬«      «       | }|j	                  | «      } d}|}	|	j                  || dd¬«       t        j                  d	|«      5   t        t        |«      || |¬
«      }
 ||||«      }d d d «       t        j                  
«       d|v ry t        j                  d	|«      5   t        t        |«      || |d¬«      } ||||«      }|D ]  }
t        j                  |
|«       Œ 	 d d d «       y # 1 sw Y   Œ†xY w# 1 sw Y   y xY w)Nr&   r{   zhSQLite actually returns proper boolean values via read_sql_table, but before pytest refactor was skippedr‚  rz  Fr”  rˆ  r‰  r‹  rJ   )rŒ  rÅ  )rã  r  r†  r‡  r}  r~  r•  r}  rl  r·   rò  r�  s                r.   Ú!test_read_sql_dtype_backend_tabler”    sX  € ð �4Ñ˜F¨$Ñ.Ø×ÑÜ�K‰K×ÑðMð ó ô	
ð €IØ×"Ñ" 4Ó(€DØ€EØ	€BØ‡I�I�5˜d¨%¸9€IÔEä	×	Ñ	Ð0°.Ó	Añ TØ"”œ˜TÓ" 5¨$¸mÔLˆÙ)¨.¸-ÈÓSˆ÷Tô ×Ñ˜& (Ô+à�Ñàä	×	Ñ	Ð0°.Ó	Añ 	4Ø$”7œ2˜tÓ$ØØØ'Øô	
ˆñ *¨.¸-ÈÓSˆØò 	4ˆFÜ×!Ñ! &¨(Õ3ñ	4÷	4ð 	4÷Tð Tú÷	4ð 	4ús   Á:$D#ÃAD/Ä#D,Ä/D8)r½  r$   r#   c                óî   — |j                  | «      } d}|}|j                  || dd¬«       d}t        j                  t        |¬«      5   t        t        |«      || d¬«       d d d «       y # 1 sw Y   y xY w)	Nrz  Fr”  rˆ  zPdtype_backend numpy is invalid, only 'numpy_nullable' and 'pyarrow' are allowed.rµ  Únumpyr‹  )r}  r~  r  r¶  r·  rl  r•  )rV   r  r†  r�  rü   rÖ   r›  s          r.   Ú)test_read_sql_invalid_dtype_backend_tabler—  >  sv   € ð ×"Ñ" 4Ó(€DØ€EØ	€BØ‡I�I�5˜d¨%¸9€IÔEð	!ð ô 
�‰”z¨Ô	-ñ >ØŒ”�DÓ˜% °WÕ=÷>÷ >ñ >ús   ÁA+Á+A4c                 óÞ   — t        t        dt        j                  dgd¬«      t        g d¢d¬«      t        dt        j                  dgd¬«      t        g d	¢d¬«      g d
¢g d¢g d¢g d¢dœ«      S )NrH   rJ   r@  r‹  rë  rÈ  ç      @ÚFloat64©rÈ  r‡  r™  )TFN©TFTr  ©rŽ  rð  N©rŽ  rð  r÷   ÚdÚeÚfÚgÚh)r   r   rµ   r  r,   r-   r.   r�  r�  N  s]   € ää˜œBŸF™F A˜¨gÔ6Üš	¨Ô1Ü˜œbŸf™f cÐ*°)Ô<Üš¨yÔ9Ú$Ú$Ú Ú!ñ		
óð r-   c                 ó   — dd„} | S )Nc                ó2  — |dk(  r9t        j                  d«      }t        j                  |j	                  «       «      }nt        j
                  | «      }t        t        dt        j                  dgd¬«      t        g d¢d¬«      t        dt        j                  dgd	¬«      t        g d
¢d	¬«      t        ddt        j                  gd¬«      t        g d¢d¬«      t        g d¢|¬«      t        g d¢|¬«      dœ«      }|dk(  rYt        j                  d«      }ddlm} t        |j                  D �ci c]  }| ||j                  ||   d¬«      «      “Œ! c}«      }d|v sd|v r/|dk(  r|j                  dddœ«      }|S |j                  dddœ«      }|S c c}w )Nr9  rH   rJ   r@  r‹  rë  rÈ  r™  rš  r›  TFÚbooleanrœ  r  r�  rž  r   )ÚArrowExtensionArray)Úfrom_pandasr'   r&   Únumpy_nullable)r   r¡  zint64[pyarrow])r  r  r•  Ú
ArrowDtyper�  ÚStringDtyper   r   rµ   r  ÚNAÚpandas.arraysr§  r¹   r–  rÕ   )rŽ  rŒ  rè  r  Ústring_dtyperÖ   r§  r�  s           r.   r†  z$dtype_backend_expected.<locals>.func`  sq  € à˜IÒ%Ü×$Ñ$ YÓ/ˆBÜŸ=™=¨¯©«Ó5‰LäŸ>™>¨.Ó9ˆLää˜Q¤§¡¨˜N°'Ô:ÜšI¨WÔ5Ü˜S¤"§&¡&¨#Ð.°iÔ@ÜšO°9Ô=Ü˜T 5¬"¯%©%Ð0¸	ÔBÜÒ/°yÔAÜšO°<Ô@ÜÒ,°LÔAñ	ó
ˆð ˜IÒ%Ü×$Ñ$ YÓ/ˆBå9äð  "Ÿz™zöàð Ñ,¨R¯X©X°b¸±gÈ4¨XÓ-PÓQÑQòóˆBð �iÑ 8¨yÑ#8ØÐ 0Ò0Ø—Y‘Y W°7Ñ;Ó<�ð ˆ	ð —Y‘YÐ%5Ð<LÑMÓN�àˆ	ùòs   Ä0$F©ro  r   r,   )r†  s    r.   r�  r�  ^  s   € ó&ðP €Kr-   c                ó‚  — d| v r9|j                   j                  t        j                  j	                  d¬«      «       |j                  | «      } dddœ}t        ddg¬	«      j                  |«      }|j                  «       }|j                  d
| dd¬«       t        d| |d¬«      D ]  }t        j                  ||«       Œ y )Nr{   rØ  r‚  rÓ   ræ  rï  rŽ  rð  râ   rz  Fr”  rˆ  zSELECT * FROM testrH   )r@   rÅ  )r„  r…  r  r†  r‡  r}  r   rÕ   r  r~  r#   r·   rò  )rV   r  r±   rÖ   r  r  s         r.   Útest_chunksize_empty_dtypesr±  ‹  s¹   € ð ��~Ø�‰×ÑÜ�K‰K×ÑÐ%RÐÓSô	
ð ×"Ñ" 4Ó(€DØ Ñ*€FÜ	˜C ˜:Ô	&×	-Ñ	-¨fÓ	5€BØ�w‰w‹y€HØ‡I�I�6˜t¨5¸I€IÔFä ØØØØô	ò 0ˆô 	×Ñ˜f hÕ/ñ0r-   rŒ  r©  c                ót  — |j                  | «      } d}t        g d¢ddœ«      }|j                  || dd¬«        t        t        |«      d|› �| d	t
        j                  i|¬
«      }t        t        g d¢t
        j                  ¬«      t        g d¢|dk(  sdnd¬«      dœ«      }t        j                  ||«       y )Nrz  rë  r¯   rï  Fr”  rˆ  rŠ  rŽ  )r@   rŒ  r‹  )r¯   r¯   r¯   r©  rÓ   r@  )
r}  r   r~  rl  r•  rµ   r;  r   r·   rò  )rV   r  r†  rŒ  rü   rÖ   r  r  s           r.   Útest_read_sql_dtyper³  ¡  s´   € ð
 ×"Ñ" 4Ó(€DØ€EÜ	š¨Ñ+Ó	,€BØ‡I�I�5˜d¨%¸9€IÔEàŒW”R˜ÓØ
˜˜Ð ØØ”B—J‘JÐØ#ô	€Fô äš	¬¯©Ô4ÜÚØ%2Ð6FÒ%F‘gÈGôñ	
ó€Hô ×Ñ˜& (Õ+r-   c                óä   — | }d}t        ddddœddddœg«      }|j                  d|«       t        j                  t        |¬«      5  |j                  d|d d¬	«       d d d «       y # 1 sw Y   y xY w)
NzxStarting with pandas version 3.0 all arguments of to_sql except for the arguments 'name' and 'con' will be keyword-only.rH   rI   rJ   rÊ  Úexamplerµ  r”  r¯  )r   r~  r·   r™  rF  )rW  rV   r›  rÖ   s       r.   Útest_keyword_deprecationr¶  ½  sw   € Ø€Dð	;ð ô 
˜! !¨!Ñ,°A¸AÀAÑ.FÐGÓ	H€BØ‡I�Iˆi˜Ôä	×	#Ñ	#¤M¸Ô	=ñ >Ø
�	‰	�)˜T 4°9ˆ	Ô=÷>÷ >ñ >ús   ÁA&Á&A/c                óÜ   — | }t        dddgid¬«      }|j                  d|d¬«      dk(  sJ ‚t        j                  d «      5  t	        j
                  d|«       d d d «       y # 1 sw Y   y xY w)	NrŽ  rH   rI   rÓ   r‹  Útest_bigintwarningFrñ  )r   r~  r·   r™  r   r$   ©rW  rV   rÖ   s      r.   Útest_bigint_warningrº  Ë  sm   € Ø€Dä	�C˜!˜Q˜�=¨Ô	0€BØ�9‰9Ð.°DÀˆ9ÓFÈ!ÒKÐKÐKä	×	#Ñ	# DÓ	)ñ 7Ü×ÑÐ/°Ô6÷7÷ 7ñ 7ús   ÁA"Á"A+c                ó¶   — | }t        ddgddgdœ«      }t        j                  t        d¬«      5  |j	                  d|d	d
¬«       d d d «       y # 1 sw Y   y xY w)NrH   rI   rJ   rK   ©r
  r  zEmpty table name specifiedrµ  r�  r”  Fr{  )r   r  r¶  r·  r~  r¹  s      r.   Útest_valueerror_exceptionr½  Õ  sZ   € Ø€DÜ	˜Q ˜F¨Q°¨FÑ3Ó	4€BÜ	�‰”zÐ)EÔ	Fñ GØ
�	‰	�r˜t¨yÀˆ	ÔF÷G÷ Gñ Gús   °AÁAc                ó:  ‡
‡‡— | }ddl mŠ
mŠmŠ ddlm}m}  |«       } G ˆ
ˆˆfd„d|«      }|j                  «       5  |j                  j                  |«       d d d «        ||¬«      } |«       5 }t        ddgdd	gd
œ«      }|j                  d|dd¬«      dk(  sJ ‚|j                  «        |j                  |j                  |j                  «      }	t        |	«      }d d d «       t!        j"                  «      ddgk(  sJ ‚y # 1 sw Y   Œ¬xY w# 1 sw Y   Œ2xY w)Nr   ©r1   r�   r5   )r^  Úsessionmakerc                  óJ   •— e Zd ZdZ W ° W °d¬«      Z W °  W °d«      «      Zy)ú,test_row_object_is_named_tuple.<locals>.Testr§  Tre  é2   N)rq  rr  rs  rh  rj  Ústring_columnr¿  s   €€€r.   ÚTestrÂ  î  s"   ø„ Ø$ˆÚ‘G¨Ô.ˆÚšv b›zÓ*‰r-   rÅ  re   rH   ÚhelloÚworld)rj  rÄ  r§  Fr”  rˆ  rI   rj  rÄ  )r>   r1   r�   r5   rl  r^  rÀ  rj   rA   Ú
create_allr   r~  rU   rÓ  rj  rÄ  r!  r¹   )rW  rV   r^  rÀ  Ú	BaseModelrÅ  r]  rq  rÖ   Ú
test_queryr1   r�   r5   s             @@@r.   Útest_row_object_is_named_tuplerË  Ü  s  ú€ Ø€D÷
ñ ÷
ñ
 !Ó"€I÷+ð +ˆyô +ð
 
�‰‹ñ ,Ø×Ñ×%Ñ% dÔ+÷,á Ô%€GÙ	‹ð #�gÜ˜q !˜f¸ÀÐ7IÑJÓKˆà�I‰I˜<¨T¸È)ˆIÓTØòð	
ðð 	�‰ÔØ—]‘] 4§7¡7¨D×,>Ñ,>Ó?ˆ
Ü�zÓ"ˆ÷#ô �—
‘
Ó  oÐ6Ò6Ð6Ñ6÷,ð ,ú÷#ð #ús   ¾DÁ2A.DÄDÄDc                ór  — | }d}t        dddgi«      }|j                  ||dd¬«       t        j                  dd	«      5  t	        ||«      }d d d «       t        j
                  t        j                  ¬
«      }t        dddgi|t        dg|¬«      ¬«      }t        j                  |«       y # 1 sw Y   ŒbxY w)Nrz  rŽ  ÚxÚyFr”  )ro   r­   r|  zfuture.infer_stringT)Úna_valuer‹  )r@   r¹   )r   r~  r•  r}  r$   r«  rµ   r  r   r·   rò  )rW  rV   rü   rÖ   r  r@   r  s          r.   Útest_read_sql_string_inferencerÐ    s®   € Ø€Dà€EÜ	�C˜#˜s˜Ð$Ó	%€BØ‡I�Iˆe˜ U°i€IÔ@ä	×	Ñ	Ð0°$Ó	7ñ -Ü  tÓ,ˆ÷-ô �N‰N¤B§F¡FÔ+€EÜØ	ˆs�CˆjÐ ´°s°eÀ5Ô0Iô€Hô ×Ñ˜& (Õ+÷-ð -ús   ¿B-Â-B6c           	     ó¾   — | }t        dt        dddd«      gid¬«      }|j                  d|dd	¬
«       t        j                  d|«      j
                  d   }|dk(  sJ ‚y ©NÚtiä  r�  é   rš  r‹  rz  r”  F)r|  r­   úselect * from test©r   r   z2020-12-31 12:00:00.000000)r   r   r~  r•  r½  r²   )rW  rV   rÖ   r  s       r.   Útest_roundtripping_datetimesr×    sf   € Ø€Dä	�Cœ( 4¨¨R°Ó4Ð5Ð6Ð>NÔ	O€BØ‡I�Iˆf�d i°u€IÔ=Ü�[‰[Ð-¨tÓ4×9Ñ9¸$Ñ?€FØÐ1Ò1Ð1Ñ1r-   c               #  óÜ   K  — t        j                  t        j                  dt        j                  ¬«      «      5 } | 5 }|–— d d d «       d d d «       y # 1 sw Y   ŒxY w# 1 sw Y   y xY w­w)Nro  )Údetect_types)rp  r   ry   rš   ÚPARSE_DECLTYPESrq  s     r.   Úsqlite_builtin_detect_typesrÛ    sc   è ø€ ä	×	Ñ	Ü�‰˜
´×1HÑ1HÔIó
ð à	Øð 	˜TØŠJ÷	÷ð ÷	ð 	ú÷ð üs3   ‚9A,»A ¾AÁA Á	A,ÁA	ÁA Á A)Á%A,c           	     óÐ   — | }t        dt        dddd«      gid¬«      }|j                  d|dd	¬
«       t        j                  d|«      j
                  d   }|t        d«      k(  sJ ‚y rÒ  )r   r   r~  r•  r½  r²   r   )rÛ  rV   rÖ   r  s       r.   Ú)test_roundtripping_datetimes_detect_typesrÝ  '  sk   € à&€DÜ	�Cœ( 4¨¨R°Ó4Ð5Ð6Ð>NÔ	O€BØ‡I�Iˆf�d i°u€IÔ=Ü�[‰[Ð-¨tÓ4×9Ñ9¸$Ñ?€FØ”YÐ;Ó<Ò<Ð<Ñ<r-   c                óˆ  — | }t        ddgddgddgdœ«      }|j                  «       5 }|j                  «       5  |j                  d«       |j                  d	«       d d d «       d d d «       |j	                  d
|d¬«      dk(  sJ ‚|j	                  d|dd¬«      dk(  sJ ‚|j	                  d|dd¬«      dk(  sJ ‚t        j                  d
|«      }t        j                  ||«       t        j                  d|«      }t        j                  ||«       t        j                  d|d¬«      }t        j                  ||«       t        j                  d|d¬«      }t        j                  ||«       d}t        j                  t        |¬«      5  t        j                  d|d¬«       d d d «       |j                  «       5 }|j                  «       5  |j                  d«       |j                  d	«       d d d «       d d d «       |j	                  d|dd¬«      dk(  sJ ‚|j	                  d|ddd¬«       |j	                  d|ddd¬«      dk(  sJ ‚t        j                  d|d¬«      }	t        j                  t        ||gd¬«      |	«       y # 1 sw Y   �Œ,xY w# 1 sw Y   �Œ1xY w# 1 sw Y   ŒþxY w# 1 sw Y   Œ¾xY w# 1 sw Y   ŒÂxY w)NrH   rI   rí  r«   rŽ  r  r	  z$DROP SCHEMA IF EXISTS other CASCADE;zCREATE SCHEMA other;Útest_schema_publicFrñ  Útest_schema_public_explicitr)  )r¤   ro   r­   rû   Útest_schema_otherÚotherr*  z!Table test_schema_other not foundrµ  )r¤   ro   rû   r­   r”  )r¤   ro   rû   r­   r|  rõ   Trô  )r   rš   rj   rÂ   r~  r   r$   r·   rò  r  r¶  r·  r   )
r0  rV   rÖ   ro   rõ  rö  rý  Úres4r›  r  s
             r.   Útest_psycopg2_schema_supporträ  0  s×  € à%€Dô 
˜Q ˜F¨S°#¨JÀÀcÀ
ÑKÓ	L€Bð 
�‰‹ð 8˜3Ø�Y‰Y‹[ñ 	8Ø×ÑÐ FÔGØ×ÑÐ 6Ô7÷	8÷8ð �9‰9Ð.°DÀˆ9ÓFÈ!ÒKÐKÐKà
�	‰	Ø.ØØØð	 	ó 	
ð ò	ðð	ð 	�	‰	Ð*°¸EÈ'ˆ	ÓRÐVWÒWðØWô ×ÑÐ2°DÓ9€DÜ×Ñ˜"˜dÔ#Ü×ÑÐ;¸TÓB€DÜ×Ñ˜"˜dÔ#Ü×ÑÐ;¸TÈ(ÔS€DÜ×Ñ˜"˜dÔ#Ü×ÑÐ1°4ÀÔH€DÜ×Ñ˜"˜dÔ#Ø
-€CÜ	�‰”z¨Ô	-ñ GÜ×ÑÐ.°¸XÕF÷Gð 
�‰‹ð 8˜3Ø�Y‰Y‹[ñ 	8Ø×ÑÐ FÔGØ×ÑÐ 6Ô7÷	8÷8ð 	�	‰	Ð*°¸WÈEˆ	ÓRÐVWÒWðØWà‡I�IØ ØØØØð ô ð 	�	‰	Ø$ØØØØð 	ó 	
ð ò	ð	ð	ô ×
Ñ
Ð0°$¸wÔ
G€CÜ×Ñœ& " b ¸Ô=¸sÕC÷}	8ñ 	8ú÷8ñ 8ú÷<Gð Gú÷	8ð 	8ú÷8ð 8úsR   ¨J¹#JÁJÆ
J Æ;J8Ç#J,Ç/J8ÊJ	ÊJÊJÊ J)Ê,J5	Ê1J8Ê8Kc                óö  — | }ddl m}  |d«      }|j                  «       5 }|j                  «       5  |j	                  |«       d d d «       d d d «       d}t        j                  ||«      }t        dt        dd¬«      gd	z  gd
dgd	z  ¬«      }t        j                  ||«       t        j                  |d¬«      5 }|j                  d«       d d d «       y # 1 sw Y   Œ”xY w# 1 sw Y   Œ˜xY w# 1 sw Y   y xY w)Nr   rv   zÐ
    CREATE TABLE person
    (
        id serial constraint person_pkey primary key,
        created_dt timestamp with time zone
    );

    INSERT INTO person
        VALUES (1, '2021-01-01T00:00:00Z');
    zHSELECT * FROM "person" AS p1 INNER JOIN "person" AS p2 ON p1.id = p2.id;rH   Ú2021r    r¡   rI   rj  Ú
created_dtrâ   Tr¥  Úperson)r   rw   rš   rj   rM   r•  r½  r   r   r·   rò  r   r   r  )	r0  rV   rw   r>  ro   r  r  r  r«  s	            r.   Útest_self_join_date_columnsré  {  sý   € ð &€DÝ#áð		ó€Lð 
�‰‹ð &˜3Ø�Y‰Y‹[ñ 	&Ø�K‰K˜Ô%÷	&÷&ð
 	Sð ô �[‰[˜ DÓ)€FÜØ
ŒY�v %Ô(Ð	)¨AÑ	-Ð.¸¸|Ð8LÈqÑ8Pô€Hô ×Ñ˜& (Ô+ô 
�‰˜°Ô	5ð '¸Ø×Ñ˜XÔ&÷'ð '÷	&ð 	&ú÷&ð &ú÷'ð 'ús.   ¡C#²CÁC#Â<C/ÃC 	ÃC#Ã#C,Ã/C8c                ó´  — | }t        g d¢g d¢dœ«      }t        j                  |«      5 }|j                  «       5  |j	                  |d«      dk(  sJ ‚	 d d d «       |j                  d«      sJ ‚|j                  «       5  |j                  d«       d d d «       |j                  d«      rJ ‚	 d d d «       y # 1 sw Y   ŒcxY w# 1 sw Y   Œ2xY w# 1 sw Y   y xY w)Nr…  rŠ  r‹  Údrop_test_framerK   )r   r   r   rO  r~  r©  r  )rW  rV   r·  r«  s       r.   Útest_create_and_drop_tablerì  Ÿ  sâ   € Ø€DÜÒ#7Ò@TÑUÓV€JÜ	�‰˜Ó	ð 	: )Ø×&Ñ&Ó(ñ 	HØ×#Ñ# JÐ0AÓBÀaÒGÐGÑG÷	Hð ×"Ñ"Ð#4Ô5Ð5Ð5à×&Ñ&Ó(ñ 	4Ø× Ñ Ð!2Ô3÷	4ð ×&Ñ&Ð'8Ô9Ð9Ð9Ð9÷	:ð 	:÷	Hð 	Hú÷
	4ð 	4ú÷	:ð 	:ús:   ªC»B6Á+CÁ?CÂCÂ6B?	Â;CÃC	ÃCÃCc                óð   — | }t        t        ddd«      t        ddd«      gdg¬«      }|j                  d|d¬«      dk(  sJ ‚t        d	|«      }t	        j
                  ||j                  t        «      «       y )
NrÝ  rH   rI   rŽ  râ   rÞ  Frñ  zSELECT * FROM test_date)r   r   r~  r#   r·   rò  rÕ   rÁ   )rs  rV   rÖ   r  s       r.   Útest_sqlite_datetime_daterî  ®  sn   € Ø€DÜ	”D˜˜q !Ó$¤d¨4°°AÓ&6Ð7À#ÀÔ	G€BØ�9‰9˜+¨4°uˆ9Ó=ÀÒBÐBÐBÜ
Ð2°DÓ
9€Cä×Ñ˜#˜rŸy™y¬›~Õ.r-   Útz_awareFTc                óf  — |}| st        ddd«      t        ddd«      g}n7t        ddd¬«      }t        |j                  «       «      j	                  d	„ «      }t        |d
g¬«      }|j                  d|d¬«      dk(  sJ ‚t        d|«      }|j	                  d„ «      }t        j                  ||«       y )Nrá  r   rH   râ  r´  rI   rµ  r¶  c                ó"   — | j                  «       S r  )Útimetz)rº  s    r.   rë  z+test_sqlite_datetime_time.<locals>.<lambda>¿  s   € ÀÇ	Á	Ã€ r-   rŽ  râ   rã  Frñ  zSELECT * FROM test_timec                ó$   — | j                  d«      S ræ  rç  ré  s    r.   rë  z+test_sqlite_datetime_time.<locals>.<lambda>Æ  s   €  §
¡
¨=Ó 9€ r-   )
r   r   r   Úto_pydatetimerî  r   r~  r#   r·   rò  )rï  rs  rV   Útz_timesÚtz_dtrÖ   r  r  s           r.   Útest_sqlite_datetime_timer÷  ·  s©   € à€DáÜ˜˜A˜q“M¤4¨¨1¨b£>Ð2‰äÐ0¸!ÀÔMˆÜ˜%×-Ñ-Ó/Ó0×4Ñ4Ñ5KÓLˆä	�8 c UÔ	+€Bà�9‰9˜+¨4°uˆ9Ó=ÀÒBÐBÐBÜ
Ð2°DÓ
9€Cà�v‰vÑ9Ó:€HÜ×Ñ˜#˜xÕ(r-   c                ó~   — | j                  d|› d�«      }|D ]  \  }}}}}}	||k(  sŒ|c S  t        d|› d|› d�«      ‚)NzPRAGMA table_info(r  zTable z	, column z
 not found)rM   r·  )
rV   rü   ÚcolumnÚrecsÚcidr¤   ÚctypeÚnot_nullÚdefaultÚpks
             r.   Úget_sqlite_column_typer   Ê  s^   € Ø�<‰<Ð,¨U¨G°1Ð5Ó6€DØ37ò Ñ/ˆˆT�5˜( G¨RØ�6‹>ØŠLðô �v˜e˜W I¨f¨X°ZÐ@Ó
AÐAr-   c                óò  — | }ddg}ddg}t        ||¬«      }|j                  d|¬«      dk(  sJ ‚|j                  d	|dd
i¬«      dk(  sJ ‚t        |dd«      dk(  sJ ‚t        |d	d«      d
k(  sJ ‚d}t        j                  t
        |¬«      5  |j                  d|dt        i¬«       d d d «       |j                  d|d
¬«      dk(  sJ ‚t        |dd«      d
k(  sJ ‚t        |dd«      d
k(  sJ ‚y # 1 sw Y   ŒGxY w)NrÙ   rÚ   r  r   râ   r!  r¤  rI   r"  ÚSTRINGr#  rè  z!B \(<class 'bool'>\) not a stringrµ  r•  r&  )r   r~  r   r  r¶  r·  Úbool)rs  rV   r  rÊ   rÖ   r›  s         r.   Útest_sqlite_test_dtyper  Ò  s   € Ø€DØ�ˆ:€DØ˜Ð%€DÜ	�4 Ô	&€BØ�9‰9˜,¨Dˆ9Ó1°QÒ6Ð6Ð6Ø�9‰9˜-¨T¸#¸x¸ˆ9ÓIÈQÒNÐNÐNô " $¨°cÓ:¸iÒGÐGÐGä! $¨°sÓ;¸xÒGÐGÐGØ
.€CÜ	�‰”z¨Ô	-ñ =Ø
�	‰	�w D°´d°ˆ	Ô<÷=ð �9‰9Ð-°4¸xˆ9ÓHÈAÒMÐMÐMÜ! $Ð(;¸SÓAÀXÒMÐMÐMÜ! $Ð(;¸SÓAÀXÒMÐMÑM÷=ð =ús   ÂC-Ã-C6c                ób  — | }t        dd g«      t        t        ddd«      d g«      t        dd gd¬«      t        dd g«      dœ}t        |«      }d	}|j                  ||¬
«      dk(  sJ ‚t	        ||d«      dk(  sJ ‚t	        ||d«      dk(  sJ ‚t	        ||d«      dk(  sJ ‚t	        ||d«      dk(  sJ ‚y )NTr0  r¯   rH   ræ  r‹  ræ  r1  r5  r¤  rI   r2  rè  r3  r*  r4  r3   ÚREAL)r   r   r   r~  r   )rs  rV   r  rÖ   r  s        r.   Útest_sqlite_notna_dtyper  è  sÑ   € Ø€Dä˜˜d�|Ó$Üœ  q¨!Ó,¨dÐ3Ó4Ü�q˜$�i xÔ0Ü˜˜d˜Ó$ñ	€Dô 
�4‹€Bà
€CØ�9‰9˜# 4ˆ9Ó(¨AÒ-Ð-Ð-ä! $¨¨VÓ4¸	ÒAÐAÐAÜ! $¨¨VÓ4¸ÒCÐCÐCÜ! $¨¨UÓ3°yÒ@Ð@Ð@Ü! $¨¨WÓ5¸Ò?Ð?Ñ?r-   c                óÔ  — | }t        ddgddggddg¬«      }d}t        j                  t        |¬	«      5  |j	                  d
|¬«       d d d «       t        g d¢«      D ]|  \  }}|j	                  ||¬«      dk(  sJ ‚t        j                  ||«       t        ddgddggd|g¬«      }d|d›�}|j	                  ||¬«      dk(  sJ ‚t        j                  ||«       Œ~ y # 1 sw Y   Œ–xY w)NrH   rI   rJ   rK   rŽ  rð  râ   z$Empty table or column name specifiedrµ  r�  r¤  )
ztest_weird_name]ztest_weird_name[ztest_weird_name`ztest_weird_name"ztest_weird_name'z_b.test_weird_name_01-30z"_b.test_weird_name_01-30"Ú99beginswithnumberÚ12345r  Útest_weird_col_namerŸ  )r   r  r¶  r·  r~  Ú	enumerater   Útable_exists)rs  rV   rÖ   r›  ÚndxÚ
weird_namer  Úc_tbls           r.   Útest_sqlite_illegal_namesr  û  sÿ   € à€DÜ	�Q˜�F˜Q ˜FÐ#¨c°3¨ZÔ	8€Bà
0€CÜ	�‰”z¨Ô	-ñ %Ø
�	‰	�r˜tˆ	Ô$÷%ô %ò	
óò &‰ˆˆZð �y‰y˜j¨dˆyÓ3°qÒ8Ð8Ð8Ü×Ñ˜ TÔ*ä˜!˜Q˜ ! Q Ð(°3¸
Ð2CÔDˆØ% c¨! WÐ-ˆØ�z‰z˜u¨$ˆzÓ/°1Ò4Ð4Ð4Ü×Ñ˜ Õ%ñ)&÷%ð %ús   µCÃC'c                óø  — t         dj                  t        dj                  t        j                  dj                  t
        dj                  t        dj                  t        dj                  t        d «      d„ t        j                  dj                  t        dj                  i	}g }|D ]D  }t        |t        «      rt        |«      rd }|t        |«         }|j                   ||«      «       ŒF | t        |«      z  S )Nz'{}'z{:.8f}z{:d}c                 ó   — y)NÚNULLr,   )rÍ  s    r.   rë  zformat_query.<locals>.<lambda>#  s   � r-   z{:.10f}z'{!s}')r   rÏ  rÁ   rµ   Ústr_ÚbytesrR   rl  r³   r;  r  rx   r   rõ   rJ  )r   rh  Ú_formattersÚprocessed_argsÚargÚ	formatters         r.   Úformat_queryr    sÂ   € ä�&—-‘-ÜˆV�]‰]Ü
�‰�—‘Üˆv�}‰}Üˆx�‰ÜˆV�]‰]ÜˆT‹
Ñ$Ü
�
‰
�I×$Ñ$Üˆh�o‰oð
€Kð €NØò .ˆÜ�cœ5Ô!¤d¨3¤iØˆCà¤ S£	Ñ*ˆ	Ø×Ñ™i¨›nÕ-ð.ð ”�~Ó&Ñ&Ð&r-   c                ó²   — t        j                  |«      5 }|j                  | «      j                  «       }ddd«       €dS t	        |«      S # 1 sw Y   ŒxY w)z#Replace removed sql.tquery functionN)r   r"   rM   rñ   r!  )rÓ  ro   rˆ  r  s       r.   Útqueryr  2  sS   € ä	×	Ñ	˜sÓ	#ð 3 zØ× Ñ  Ó'×0Ñ0Ó2ˆ÷3à�;ˆ4Ð-¤D¨£IÐ-÷3ð 3ús   – AÁAc           	     ó4  — t        t        j                  j                  d«      j	                  d«      t        t        d«      «      t        ddd¬«      ¬«      }t        j                  |d	| d
¬«      dk(  sJ ‚t        j                  d| «      }|j                  |_        |}t        j                  ||«       dgt        |«      z  |d<   |j                  «       }t        t        j                   t        |«      «      t        j"                  ¬«      dz   }|j                  «       |d<   t        j                  |d| d
¬«      dk(  sJ ‚t        j                  d| d¬«      }|j                  «       }||_        d|j                  _        t        j                  ||«       y )NrI   ©r%  rK   ÚABCDú
2000-01-01r%  rÚ   rÅ  rË  r  Frñ  zselect * from test_tablerŽ  Útxtr‹  ÚIdxÚtest_table2zselect * from test_table2rÌ  )r   rµ   rö  r÷  rø  r   r!  r   r   r~  r½  r­   r·   rò  rª  r  rs  rÓ   r¤   )rs  r»   r  r  Úframe2Únew_idxs         r.   Útest_xsqlite_basicr'  9  sD  € ÜÜ
�	‰	×Ñ˜aÓ ×0Ñ0°Ó9Ü”d˜6“lÓ#Ü˜¨r¸Ô<ô€Eô
 �:‰:�e ,°NÈ%ÔPÐTVÒVÐVÐVÜ�\‰\Ð4°nÓE€Fð —;‘;€F„Là€HÜ×Ñ˜& %Ô(à�5œ3˜u›:Ñ%€Eˆ%�LØ�Z‰Z‹\€FÜ”B—I‘Iœc &›kÓ*´"·(±(Ô;¸bÑ@€GØ—L‘L“N€Fˆ5�MÜ�:‰:�f =°nÈEÔRÐVXÒXÐXÐXÜ�\‰\Ð5°~ÐQVÔW€FØ�z‰z‹|€HØ€H„NØ€H‡N�NÔÜ×Ñ˜( FÕ+r-   c           	     ób  — t        t        j                  j                  d«      j	                  d«      t        t        d«      «      t        ddd¬«      ¬«      }t        j                  |j                  d	<   t        j                  |d
«      }| j                  «       }|j                  |«       d}|j                  «       D ]  \  }}t        |g|¢­Ž }t!        || ¬«       Œ  | j#                  «        t        j$                  d| ¬«      }|j&                  |_        t)        j*                  ||d¬«       y )NrI   r  r   r!  r%  rÚ   rÅ  rË  rÖ  rz  z(INSERT INTO test VALUES (%s, %s, %s, %s)rz  rÕ  gü©ñÒMbP?)Úrtol)r   rµ   rö  r÷  rø  r   r!  r   r  r²   r   rß  rL   rM   Úiterrowsr  r  rU   r½  r­   r·   rò  )	rs  r»   r"  rY   Úinsrê  r\   Úfmt_sqlr  s	            r.   Útest_xsqlite_write_row_by_rowr-  T  só   € ÜÜ
�	‰	×Ñ˜aÓ ×0Ñ0°Ó9Ü”d˜6“lÓ#Ü˜¨r¸Ô<ô€Eô
 —v‘v€E‡J�JˆtÑÜ—‘  vÓ.€JØ
×
Ñ
Ó
!€CØ‡K�K�
Ôà
4€CØ—.‘.Ó"ò ,‰ˆˆ3Ü˜sÐ) SÒ)ˆÜˆw˜NÖ+ð,ð ×ÑÔä�\‰\Ð.°NÔC€FØ—;‘;€F„LÜ×Ñ˜& %¨dÖ3r-   c           	     ót  — t        t        j                  j                  d«      j	                  d«      t        t        d«      «      t        ddd¬«      ¬«      }t        j                  |d	«      }| j                  «       }|j                  |«       d
}|j                  d   }t        j                  | «      5 }|j                  |t        |«      «       d d d «       | j                  «        t        j                   d| «      }|j"                  d d |_        t%        j&                  ||d d «       y # 1 sw Y   Œ]xY w)NrI   r  r   r!  r%  rÚ   rÅ  rË  rz  z$INSERT INTO test VALUES (?, ?, ?, ?)r   rÕ  rH   )r   rµ   rö  r÷  rø  r   r!  r   r   rß  rL   rM   r²   r"   rJ  rU   r½  r­   r·   rò  )rs  r»   r"  rY   r+  r\   rˆ  r  s           r.   Útest_xsqlite_executer/  k  sü   € ÜÜ
�	‰	×Ñ˜aÓ ×0Ñ0°Ó9Ü”d˜6“lÓ#Ü˜¨r¸Ô<ô€Eô
 —‘  vÓ.€JØ
×
Ñ
Ó
!€CØ‡K�K�
ÔØ
0€Cà
�*‰*�Q‰-€CÜ	×	Ñ	˜~Ó	.ð ,°*Ø×Ñ˜3¤ c£
Ô+÷,à×ÑÔä�\‰\Ð.°Ó?€FØ—;‘;˜r �?€F„LÜ×Ñ˜& %¨¨ )Õ,÷,ð ,ús   Â6D.Ä.D7c           	     ó  — t        t        j                  j                  d«      j	                  d«      t        t        d«      «      t        ddd¬«      ¬«      }t        j                  |d	«      }|j                  «       }|D ]5  }|j                  d
«      }t        |«      dk(  sŒ#|d   dk(  sŒ,|d   dk(  rŒ5J ‚ t        j                  |d	ddg¬«      }|j                  «       }d|v sJ ‚| j                  «       }|j                  |«       y )NrI   r  r   r!  r%  rÚ   rÅ  rË  rz  ú r   rÙ   rH   ÚDATETIME)rÔ   zPRIMARY KEY ("A", "B"))r   rµ   rö  r÷  rø  r   r!  r   r   rß  Ú
splitlinesr  rª  rL   rM   )rs  r»   r"  ÚlinesÚlineÚtokensrY   s          r.   Útest_xsqlite_schemar7  €  sô   € ÜÜ
�	‰	×Ñ˜aÓ ×0Ñ0°Ó9Ü”d˜6“lÓ#Ü˜¨r¸Ô<ô€Eô
 —‘  vÓ.€JØ×!Ñ!Ó#€EØò +ˆØ—‘˜C“ˆÜˆv‹;˜!Ó  q¡	¨SÓ 0Ø˜!‘9 
Ó*Ð*Ð*ð+ô
 —‘  v°S¸#°JÔ?€JØ×!Ñ!Ó#€EØ# zÑ1Ð1Ð1Ø
×
Ñ
Ó
!€CØ‡K�K�
Õr-   c                óx  — d}| j                  «       }|j                  |«       t        j                  | «      5 }|j                  d«       |j                  d«       t	        j
                  t        j                  d¬«      5  |j                  d«       d d d «       d d d «       y # 1 sw Y   ŒxY w# 1 sw Y   y xY w)Nú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)zExecution failed on sqlrµ  z(INSERT INTO test VALUES('foo', 'bar', 7))rL   rM   r   r"   r  r¶  rw  )rs  r"  rY   rˆ  s       r.   Útest_xsqlite_execute_failr;  ”  s¯   € ð€Jð ×
Ñ
Ó
!€CØ‡K�K�
Ôä	×	Ñ	˜~Ó	.ð K°*Ø×ÑÐIÔJØ×ÑÐIÔJä�]‰]œ3×,Ñ,Ð4MÔNñ 	KØ×ÑÐIÔJ÷	K÷	Kð K÷	Kð 	Kú÷	Kð Kús$   ¹AB0ÂB$ÂB0Â$B-	Â)B0Â0B9c                 óÌ  — d} t        j                  t        j                  d«      «      5 }|j	                  «       }|j                  | «       t        j                  |«      5 }|j                  d«       d d d «       d d d «       d}t        j                  t        j                  |¬«      5  t        d¬«       d d d «       y # 1 sw Y   ŒOxY w# 1 sw Y   ŒSxY w# 1 sw Y   y xY w)Nr9  ro  r:  z$Cannot operate on a closed database.rµ  rÕ  rz  )rp  r   ry   rš   rL   rM   r   r"   r  r¶  rD  r  )r"  rV   rY   rˆ  r›  s        r.   Ú&test_xsqlite_execute_closed_connectionr=  ©  sÌ   € ð€Jô 
×	Ñ	œGŸO™O¨JÓ7Ó	8ð O¸DØ�k‰k‹mˆØ�‰�JÔä×"Ñ" 4Ó(ð 	O¨JØ×ÑÐMÔN÷	O÷	Oð 1€CÜ	�‰”w×/Ñ/°sÔ	;ñ /ÜÐ#¨Õ.÷/ð /÷		Oð 	Oú÷	Oð Oú÷/ð /ús/   «7CÁ"CÁ4CÂ+CÃC	ÃCÃCÃC#c                ó€   — t        dt        j                  d«      i«      }t        j                  || dd¬«      dk(  sJ ‚y )NÚFromr¯   ÚtestkeywordsF©ro   r¤   r­   )r   rµ   Úonesr   r~  )rs  rÖ   s     r.   Ú$test_xsqlite_keyword_as_column_namesrC  ¿  s7   € Ü	�FœBŸG™G A›JÐ'Ó	(€BÜ�:‰:�b˜n°>ÈÔOÐSTÒTÐTÑTr-   c                ó  — t        ddgdg¬«      }t        j                  || dd¬«      dk(  sJ ‚| }t        d„ |j	                  d	«      D «       «      }|d
k(  sJ ‚t        j
                  d	|«      }t        j                  ||«       y )NrH   rI   Úc0râ   Úmono_dfFrA  c              3  ó&   K  — | ]	  }|d    –— Œ y­w)r   Nr,   )Ú.0Úmy_c0s     r.   ú	<genexpr>z4test_xsqlite_onecolumn_of_integer.<locals>.<genexpr>Ì  s   è ø€ ÒO˜u�%˜•(ÑOùs   ‚zselect * from mono_dfrJ   )r   r   r~  ÚsumrM   r½  r·   rò  )rs  rF  Úcon_xÚthe_sumr  s        r.   Ú!test_xsqlite_onecolumn_of_integerrN  Ä  s€   € ô ˜˜A˜¨¨Ô/€GÜ�:‰:�g >¸	ÈÔOÐSTÒTÐTÐTà€EÜÑO¨¯©Ð6MÓ(NÔOÓO€Gà�aŠ<Ðˆ<ä�\‰\Ð1°5Ó9€FÜ×Ñ˜& 'Õ*r-   c                ó�  — t        ddgddgdœ«      }t        g d¢g d¢dœ«      }d}d	|› �}d
}t        j                  t        |¬«      5  t	        j
                  || |d¬«       d d d «       t        || «       t	        j
                  || |d¬«       d}t        j                  t        |¬«      5  t	        j
                  || |d¬«       d d d «       t	        j
                  || |dd¬«       t        || ¬«      ddgk(  sJ ‚t	        j
                  || |dd¬«      dk(  sJ ‚t        || ¬«      g d¢k(  sJ ‚t        || «       t	        j
                  || |dd¬«      dk(  sJ ‚t        || ¬«      ddgk(  sJ ‚t	        j
                  || |dd¬«      dk(  sJ ‚t        || ¬«      g d¢k(  sJ ‚t        || «       y # 1 sw Y   �ŒNxY w# 1 sw Y   ŒöxY w)NrH   rI   rÙ   rÚ   r¼  r[  )rÛ   rÜ   ÚEÚtable_if_existszSELECT * FROM z*'notvalidvalue' is not valid for if_existsrµ  Únotvalidvalue)r»   ro   r¤   r|  r®  z&Table 'table_if_exists' already existsr”  F)r»   ro   r¤   r|  r­   rz  rÚ  rÿ  rJ   )©rJ   rÛ   ©rK   rÜ   ©r¯   rP  rõ   )rÚ  rÿ  rS  rT  rU  )r   r  r¶  r·  r   r~  r  r  )rs  Údf_if_exists_1Údf_if_exists_2rÅ   Ú
sql_selectr›  s         r.   Útest_xsqlite_if_existsrY  Ô  s  € Ü¨¨A¨¸¸c¸
ÑCÓD€NÜª	º?ÑKÓL€NØ"€JØ! * Ð.€Jà
6€CÜ	�‰”z¨Ô	-ñ 
Ü�
‰
Ø ØØØ%õ		
÷
ô ˆz˜>Ô*ô ‡J�JØ .°zÈVõð 3€CÜ	�‰”z¨Ô	-ñ 
Ü�
‰
Ø ØØØõ		
÷
ô ‡J�JØØØØØõô �* .Ô1°hÀÐ5IÒIÐIÐIä�
‰
Ø ØØØØô	
ð ò	ð	ð	ô �* .Ô1Ò5SÒSÐSÐSÜˆz˜>Ô*ô 	�
‰
Ø ØØØØô	
ð ò	ð	ð	ô �* .Ô1°hÀÐ5IÒIÐIÐIä�
‰
Ø ØØØØô	
ð ò	ð	ð	ô �* .Ô1ò 6ò ð ð ô ˆz˜>Õ*÷Q
ñ 
ú÷
ð 
ús   Á	F/Â-F<Æ/F9Æ<G)rW   r   )rŒ   rÁ   )r‘   ú
list[dict])r‘   rZ  rŒ   rÁ   )r»   r   )rÅ   rÁ   )rÅ   rÁ   rV   úLsqlite3.Connection | sqlalchemy.engine.Engine | sqlalchemy.engine.Connection)rý   rÁ   rV   r[  r¯  r  (,  Ú
__future__r   rp  r   rO   r   r   r   r   rÉ   r	   Úpathlibr   ry   Útypingr   r8  r–  rµ   r  Úpandas._configr   Úpandas._libsr   Úpandas.compatr   r   Úpandas.compat._optionalr   Úpandas.util._test_decoratorsÚutilÚ_test_decoratorsÚtdÚpandasr•  r   r   r   r   r   r   r   r   r   r   Úpandas._testingÚ_testingr·   Úpandas.util.versionr   Ú	pandas.ior   Úpandas.io.sqlr   r   r    r!   r"   r#   r$   r>   r†  ÚfilterwarningsÚ
single_cpuÚ
pytestmarkÚfixturer/   rB   r]   r_   rp   r|   r�   r“   r•   r›   r§   r½   rÇ   rÌ   r‘   r×   rå   rç   rþ   r  r  r  r  r  r!  r%  r(  r*  r0  r2  r5  r7  r>  rG  rM  rO  rQ  rU  rW  rY  r[  r]  r_  ra  rc  re  rh  rj  rm  rs  ru  rw  Úparamr  Úmysql_connectableÚmysql_connectable_irisÚmysql_connectable_typesÚpostgresql_connectableÚpostgresql_connectable_irisÚpostgresql_connectable_typesÚsqlite_connectableÚsqlite_connectable_irisÚsqlite_connectable_typesÚsqlalchemy_connectableÚsqlalchemy_connectable_irisÚsqlalchemy_connectable_typesÚadbc_connectableÚadbc_connectable_irisÚadbc_connectable_typesÚall_connectableÚall_connectable_irisÚall_connectable_typesÚparametrizer€  r‰  rœ  rŸ  r¬  r³  r¸  rÀ  rÆ  rÎ  rÔ  rÖ  rÙ  rà  ré  r÷  r  r%  r-  r2  r<  rA  rG  rI  rK  rR  rT  rV  rX  r\  r^  ra  rg  rj  ro  rw  rƒ  r…  rŠ  r”  r½  rœ  r   rª  r­  r¸  rÂ  rÐ  rl  rR   r×  rÚ  rá  rä  rê  rï  rþ  r  r  r  r  r  r  r  r#  r(  r2  r@   r¤   rC  rG  rJ  Úskip_if_installedrN  rT  rY  r]  r`  rb  ru  rx  rz  r‚  r‘  r•  r—  r™  r›  rŸ  r¢  r¥  r¨  r«  r®  r°  r²  r¾  rÂ  rÍ  rÒ  rÕ  rÛ  rß  rð  r÷  rû  rý  r   r  r  r  r  r.  r8  rF  rS  ÚinfrZ  rr  rv  ry  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  r'  r-  r/  r7  r;  r=  rC  rN  rY  r,   r-   r.   ú<module>rˆ     sÈ  ðÝ "ã Ý Û 
÷ó õ Ý Û Ý  Û ã Û å -å ÷õ ?ß )Ð )ã ÷÷ ÷ õ Ý 'å ÷÷ ñ ñ Ûð ‡K�K×ÑØGóð ‡K�K×Ñð	€
ð ‡�ñó ðò8ô2ôDô>ò "ô&ô>ô<ô2ò(*7ôZ-ô;ð8 ‡�ñó ðð
 ‡�ñó ðð6 ‡�ñ,ó ð,ð  ‡�ñ ,ó ð ,ðF ‡�ñ,ó ð,ò2ò23ð0.Øð.à
Vô.ð&"Øð"à
Vô"ð. ‡�ñó ðð  ‡�ñó ðð ‡�ñó ðð
 ‡�ñó ðð
 ‡�ñó ðð
 ‡�ñó ðð
 ‡�ñó ðð ‡�ñ%ó ð%ð ‡�ñ%ó ð%ð
 ‡�ñó ðð
 ‡�ñó ðð ‡�ñó ðð$ ‡�ñó ðð  ‡�ñó ðð
 ‡�ñó ðð
 ‡�ñ"ó ð"ð ‡�ñó ðð ‡�ñó ðð
 ‡�ñó ðð ‡�ñó ðð ‡�ñó ðð
 ‡�ñó ðð ‡�ñó ðð
 ‡�ñó ðð
 ‡�ñó ðð  ‡�ñó ðð" ‡�ñó ðð* ‡�ñó ðð ‡�ñó ðð ‡�ñó ðð €F‡L�LÐ'¨v¯{©{¯~©~Ô>Ø€F‡L�LÐ%¨V¯[©[¯^©^Ô<ðÐ ð €F‡L�LÐ,°F·K±K·N±NÔCØ€F‡L�LÐ*°&·+±+·.±.ÔAðÐ ð €F‡L�LÐ-°V·[±[·^±^ÔDØ€F‡L�LÐ+°6·;±;·>±>ÔBðÐ ð €F‡L�LÐ-°V·[±[·^±^ÔDØ€F‡L�LÐ+°6·;±;·>±>ÔBðÐ ð €F‡L�LÐ2¸&¿+¹+¿.¹.ÔIØ€F‡L�LÐ0¸¿¹¿¹ÔGðÐ ð €F‡L�LÐ3¸6¿;¹;¿>¹>ÔJØ€F‡L�LÐ1¸¿¹¿¹ÔHð Ð ò
Ð òÐ òÐ ð +Ð-CÑCÐFXÑXÐ ð Ð8Ñ8Ð;RÑRð ð
 Ð:Ñ:Ð=UÑUð ð
 Ø€F‡L�LÐ'¨v¯{©{¯~©~Ô>ðÐ ð €F‡L�LÐ'¨v¯{©{¯~©~Ô>ØðÐ ð €F‡L�LÐ(°·±·±Ô?ØðÐ ð )Ð,<Ð+=Ñ=Ð@PÑP€ð  Ð#8Ð"9Ñ9Ð<QÑQð ð
 !Ð$:Ð#;Ñ;Ð>TÑTð ð
 ‡�×Ò˜ Ó1ñOó 2ðOð ‡�×Ò˜ Ó1ñLó 2ðLð ‡�×Ò˜ Ó1ñQó 2ðQðB ‡�×Ò˜ Ó1ñMó 2ðMð ‡�×Ò˜ Ó1Ø‡�×Ò˜ D¨' ?Ó3ñ>ó 4ó 2ð>ð ‡�×Ò˜ Ó1Ø‡�×ÒÐ-°ÀÐ/NÓOñMó Pó 2ðMð ‡�×Ò˜ Ó1ñJó 2ðJð ‡�×Ò˜Ð!5Ó6ñ.ó 7ð.ð ‡�×Ò˜Ð!5Ó6ñ.ó 7ð.ð$ ‡�×Ò˜Ð!<Ó=ñó >ðð6 ‡�×Ò˜Ð!5Ó6ñ!ó 7ð!ð& ‡�×Ò˜Ð!<Ó=ñ!ó >ð!ð ‡�×Ò˜Ð!<Ó=ñ	!ó >ð	!ð ‡�×Ò˜Ð!7Ó8ñ>ó 9ð>ð" ‡�×Ò˜Ð!6Ó7ñFó 8ðFð> ‡�×Ò˜Ð!2Ó3ñ!$ó 4ð!$ðH ‡�×Ò˜Ð!7Ó8Ø‡�×ÒÐ)¨A¨z¨?Ó;ñ",ó <ó 9ð",ðJ ‡�×Ò˜Ð!7Ó8ñ65ó 9ð65ðr ‡�×Ò˜ Ó1ñ-ó 2ð-ð. ‡�×Ò˜Ð!2Ó3ñ15ó 4ð15ðh ‡�×Ò˜Ð!7Ó8ñ ,ó 9ð ,òF,ò2Bò<ò=ð ‡�×Ò˜Ð!5Ó6ñ!ó 7ð!ð$ ‡�×Ò˜Ð!5Ó6ñ!ó 7ð!ð& ‡�×Ò˜Ð!5Ó6ñ!ó 7ð!ð$ ‡�×Ò˜Ð!5Ó6ñ!ó 7ð!ð ‡�×Ò˜Ð!5Ó6ñ	=ó 7ð	=ð ‡�×Ò˜ Ó1ñ.ó 2ð.ð ‡�×Ò˜ Ó1ñGó 2ðGð ‡�×Ò˜ Ó1ñ#ó 2ð#ð" ‡�×Ò˜ Ó1ñ#ó 2ð#ð$ ‡�×Ò˜ Ó1ñ	/ó 2ð	/ð ‡�×Ò˜ Ó1ñ	,ó 2ð	,ð ‡�×Ò˜ Ó1ñ/ó 2ð/ð( ‡�×Ò˜ Ó1ñ/ó 2ð/ð* ‡�×Ò˜Ð!5Ó6ñ<ó 7ð<ð ‡�×Ò˜Ð!6Ó7ñ4ó 8ð4ðn ‡�×Ò˜Ð!6Ó7Ø‡�×Ò˜Ò"?Ó@Ø‡�×ÒØà	�ŠÐ,Ð.HÐIØ	�Š�w Ð/à×ÑØ!Ø&ð	
ð
 
×	Ñ	˜W |Ð5ð	óñ%,óó Aó 8ð%,ðP ‡�×Ò˜Ð!6Ó7ñ?ó 8ð?ð ‡�×Ò˜ Ó1ñ+4ó 2ð+4ð\ ‡�×Ò˜ Ó1ñ
;ó 2ð
;ð ‡�×Ò˜ Ó1Ø‡�×ÒØ%òóñ"(ó#ó 2ð$(ð$ ‡�×Ò˜ Ó1ñF
ó 2ðF
ðR ‡�×Ò˜ Ó1ñ=ó 2ð=ð& ‡�×Ò˜ Ó1Ø‡�×ÒØàØØØ˜Ñð	óñ,óó 2ð,ð, ‡�×Ò˜ Ó1ñNó 2ðNð ‡�×Ò˜ Ó1ñ
"ó 2ð
"ð ‡�×Ò˜ Ó1ñ.ó 2ð.ð ‡�×Ò˜ Ó1ñ#ó 2ð#ð. ‡�×Ò˜ Ó1ñ-ó 2ð-ð8 ‡�×Ò˜ Ó1ñ-*ó 2ð-*ð` ‡�×Ò˜ Ó1ñ#ó 2ð#ð@ ‡�×Ò˜ Ó1ñ:ó 2ð:ð ‡�×Ò˜ Ó1ñ#ó 2ð#ð( ‡�×Ò˜ Ó1ñ,ó 2ð,ð: ‡�×Ò˜ Ó1ñ+ó 2ð+ð ‡�×Ò˜ Ó1ñ1ó 2ð1ð, ‡�×Ò˜Ð!5Ó6ñ4ó 7ð4ò$>ð2 ‡�×Ò˜ Ó1ñ;ó 2ð;ð. ‡�×Ò˜Ð!7Ó8ñAó 9ðAð ‡�×Ò˜Ð!7Ó8Ø‡�×ÒØàØØØØØØØØØØØØØØ	˜(˜"Ÿ(š( 3›-×,Ò,°Ò7‰h¸YÐGðóñ(ó)ó 9ð*ð ‡�×Ò˜Ð!7Ó8Ø‡�×Ò˜ X¨xÐ$8Ó9ñ4ó :ó 9ð4ð ‡�×Ò˜ Ó1ñ4ó 2ð4ð( €×Ò�hÓØ‡�×Ò˜ Ó1ñ4ó 2ó  ð4ð ‡�×Ò˜Ð!<Ó=ñ,ó >ð,ð ‡�×Ò˜Ð!<Ó=ñ(ó >ð(ð ‡�×Ò˜ Ó1ñ#ó 2ð#ò/ð €×Ò�lÓ#ñ1ó $ð1ð €×Ò�lÓ#ñ+ó $ð+ò #ò"ò1ð$ ‡�×Ò˜Ð!7Ó8ñ+ó 9ð+ð( ‡�×Ò˜Ð!7Ó8ñ0ó 9ð0ð2 ‡�×Ò˜ Ó1ñ/ó 2ð/ð* ‡�×Ò˜Ð!5Ó6ñ<ó 7ð<ð ‡�×Ò˜Ð!<Ó=ñ!ó >ð!ð ‡�×Ò˜Ð!<Ó=ñXó >ðXð ‡�×Ò˜Ð!<Ó=ñ:ó >ð:ð ‡�×Ò˜Ð!=Ó>ñ=ó ?ð=ð, ‡�×Ò˜Ð!7Ó8ñ&ó 9ð&ð ‡�×Ò˜Ð!=Ó>ñ<ó ?ð<ð ‡�×Ò˜Ð!7Ó8Ø‡�×Ò˜¨°Ð/@Ð(AÓBñ
*ó Có 9ð
*ð ‡�×Ò˜Ð!7Ó8ñ	*ó 9ð	*ð ‡�×Ò˜Ð!7Ó8ñ7ó 9ð7ð ‡�×Ò˜Ð!7Ó8ñ,ó 9ð,ð< ‡�×Ò˜Ð!7Ó8ñ,ó 9ð,ð ‡�×Ò˜Ð!7Ó8ñ	?ó 9ð	?ð ‡�×Ò˜Ð!=Ó>ñ?ó ?ð?ð> ‡�×Ò˜Ð!7Ó8ñ*ó 9ð*ð0 ‡�×Ò˜Ð!7Ó8ñ*ó 9ð*ð. ‡�×Ò˜Ð!7Ó8ñ	-ó 9ð	-ð ‡�×Ò˜Ð!7Ó8ñ#ó 9ð#ð4 ‡�×Ò˜Ð!7Ó8ñHó 9ðHð ‡�×Ò˜Ð!7Ó8ñ&ó 9ð&ð ‡�×Ò˜Ð!7Ó8ñ&ó 9ð&ð" ‡�×Ò˜Ð!7Ó8ñ&ó 9ð&ð$ ‡�×Ò˜ Ó1ñ$ó 2ð$ðN ‡�×Ò˜ Ó1ñ ó 2ð ð ‡�×Ò˜ Ó1ñ&ó 2ð&ðR ‡�×Ò˜Ð!7Ó8ñNó 9ðNð: ‡�×Ò˜Ð!7Ó8ñ&&ó 9ð&&ðR ‡�×Ò˜Ð!7Ó8ñ!5ó 9ð!5ðH ‡�×Ò˜Ð!7Ó8ñ08ó 9ð08ðf ‡�×Ò˜Ð!7Ó8ñ ó 9ð ðF ‡�×Ò˜Ð!7Ó8Ø‡�×ÒØØˆb�fŠfˆXÐ˜ "§&¢&  	Ð*°b·f²f°W°IÈÈÑ,PÐQóñ!ó	ó 9ñ
!ð6 ‡�×Ò˜Ð!7Ó8ñ"(ó 9ñ"(ðJ ‡�×Ò˜ Ó1ñNó 2ñNð ‡�×Ò˜ Ó1ñ#ó 2ñ#ð ‡�×Ò˜Ð!7Ó8ò'ó 9ñ'ð ‡�×Ò˜ Ó1ò'ó 2ñ'ô
Fô	ð ‡�×Ò˜ Ó1Ø‡�×Ò™¡*Ñ.>Ð!?Ó@ò'4ó Aó 2ñ'4ðT ‡�×Ò˜ Ó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ô$7ôN,ô$2ð ‡�òó ñô=ð ‡�‡�òGDó ñGDðT ‡�‡�ò 'ó ñ 'ôF:ô/ð ‡�×Ò™¡e©T ]Ó3ò)ó 4ñ)ô$BôNô,@ô&&ô@'ö..ô,ô64ô.-ô*ô(Kô*/ô,Uô
+õ O+r-   