Ë
    êñi›6 ã                  ó‚3  — d dl mZ d dl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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 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�d0d„ZD�d0d„ZE�d0d„ZFd„ ZG�d1d„ZH�d2d„ZI�d2d„ZJ�d3d„ZKd„ ZL�d4d„ZM�d5d„ZNej‚                  d„ «       ZOej‚                  d„ «       ZPej‚                  d „ «       ZQej‚                  d!„ «       ZRej‚                  d"„ «       ZSd#„ ZTd$„ ZU	 	 	 	 �d6d&„ZV	 	 	 	 �d7d'„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†g e�¢d\‘e„¢Z‡g e‚¢d]‘e…¢Zˆg eƒ¢d^‘e†¢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                  dfg dg¢«      dh„ «       «       Z�ejz                  �j                  d%e‡«      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%ex«      dr„ «       Zšejz                  �j                  d%e{«      ejz                  �j                  dsdtdug«      dv„ «       «       Z›ejz                  �j                  d%e{«      dw„ «       Zœejz                  �j                  d%e‡«      dx„ «       Z�ejz                  �j                  d%ex«      dy„ «       Zžejz                  �j                  d%e{«      dz„ «       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Œd�dŽg«      ejz                  �j                  d�e3�jb                  d�d‘fe3�jb                  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ÏdÇ„ ZÐ e �j¢                  dÈ«      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�«      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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‚                  �d8�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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�d9�d&„�Z �d'„ �Z!�d(„ �Z"�d)„ �Z#�d*„ �Z$�d+„ �Z%�d,„ �Z&�d-„ �Z'�d.„ �Z(�d/„ �Z)y(:  é    )ÚannotationsN)ÚdateÚdatetimeÚtimeÚ	timedelta)ÚDecimal)ÚStringIO©ÚPath)ÚTYPE_CHECKING)Úusing_string_dtype)Úlib)Úpa_version_under14p1)Úimport_optional_dependency)
Ú	DataFrameÚIndexÚ
MultiIndexÚSeriesÚ	TimestampÚconcatÚ
date_rangeÚisnaÚto_datetimeÚto_timedelta)ÚVersion)Úsql)ÚSQLAlchemyEngineÚSQLDatabaseÚSQLiteDatabaseÚ
get_engineÚpandasSQL_builderÚread_sql_queryÚread_sql_tablez=ignore:Passing a BlockManager to DataFrame:DeprecationWarningc                 ó&   — 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+   ó    úZ/var/www/pod-logistic/pod-ai/venv/lib/python3.12/site-packages/pandas/tests/io/test_sql.pyÚsql_stringsr.   C   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éÈ   )	Ú
sqlalchemyr0   r1   r2   r3   r4   r5   r   Ú__version__)
r=   r0   r1   r2   r3   r4   r5   ÚdtypeÚmetadatar6   s
             r-   Úiris_table_metadatarA   `   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ÚcsvfilerO   ÚrecordsÚrows           r-   Úcreate_and_load_iris_sqlite3r\   y   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
        )rC   rD   z+INSERT INTO iris VALUES($1, $2, $3, $4, $5)r   rG   rH   rI   rJ   )	rK   rL   rM   rN   rO   rP   rQ   rR   rT   )rU   rV   rW   rX   rY   rO   r[   rZ   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   ©ÚinsertrC   rD   T©Ú
checkfirst©Úbind)r=   ra   rA   rM   rN   rO   rP   ÚdictÚzipÚvaluesÚbeginÚdropÚcreaterL   )rU   rV   ra   r6   rY   rO   Úheaderr[   ÚparamsrW   Úcons              r-   Úcreate_and_load_irisro   º   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Ú
ConnectionrK   rL   r   rT   r=   rv   ri   )rU   rW   rX   Úadbcrv   rn   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ÚBooleanr0   ÚDateTimer2   ÚIntegerr3   r5   r%   ÚtypesÚTextColÚDateColÚ
IntDateColÚIntDateOnlyColÚFloatColÚIntColÚBoolColÚIntColWithNullÚBoolColWithNull)	r=   r}   r~   r0   r   r2   r€   r3   r5   )Údialectr}   r~   r0   r   r2   r€   r3   r5   Ú	date_typeÚ	bool_typer@   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(?, ?, ?, ?, ?, ?, ?, ?, ?)
                )rw   rx   ry   rK   rL   rR   rT   )rU   Ú
types_datarW   Úins_stmtrX   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)
                )rK   rL   rR   rT   )rU   r�   rX   rW   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   r`   ©ÚEngineTrb   rd   )r=   ra   Úsqlalchemy.enginer—   rŽ   rh   rw   Úconnectri   rj   rk   rL   )rU   r�   r‹   ra   r—   r�   rW   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¬«      j#                  d«      S # 1 sw Y   Œ—xY w# 1 sw Y   ŒKxY w# 1 sw Y   ŒWxY w)Nr   )r0   r   r3   r5   ra   r–   ÚdatetzÚDateColWithTzT)Útimezonez2000-01-01 00:00:00-08:00z2000-06-01 00:00:00-07:00rb   rd   z2000-01-01 08:00:00ÚUTC©Útzz2000-06-01 07:00:00©ÚnameúM8[us, UTC])r=   r0   r   r3   r5   ra   r˜   r—   rh   rw   r™   ri   rj   rk   rL   r   r   Úastype)rU   r0   r   r3   r5   ra   r—   r@   rœ   Údatetz_datarW   Úexpected_datas               r-   Úcreate_and_load_postgres_datetzr¨   J  sd  € ÷õ õ )á‹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×=Ñ=¸mÓLÐL÷'#ð #ú÷	#ð 	#ú÷	ð 	ús0   Á/EÂ 7EÂ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 rq   rr   rs   r   )Úcreate_enginer–   )r   rw   rx   ry   rK   rL   Úfetchoner=   rÀ   r˜   r—   Ústrr™   Úexec_driver_sqlÚ
scalar_oneÚdispose)rU   Ú
table_namerW   rz   rX   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ÚdatarN   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$@rG   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Â   Úint64rQ   rÑ   )r   Úkeysr¥   )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   rq   rr   rs   Úcatalog_nameÚcatalog_db_schemasÚdb_schema_nameÚdb_schema_tablesÚ
table_typeÚviewrÆ   ©Úinspect)rw   rx   ry   rL   Úfetchallr   Úadbc_get_objectsÚread_allÚ	to_pylistÚappendr=   rð   Úget_view_names)rU   Úcrî   rz   Ú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   rq   rr   rs   rê   rì   rí   rü   rÆ   rï   )rw   rx   ry   rL   rñ   r   rò   ró   rô   rõ   r=   rð   Úget_table_names)
rU   r÷   rü   rz   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rU   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 rq   rr   rs   zDROP TABLE IF EXISTS "ú")rw   rx   ry   rL   r   Ú_get_valid_sqlite_namerT   r   rK   ri   r   Ú
drop_table)rÆ   rU   rz   rX   rn   Ú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 rq   rr   rs   zDROP VIEW IF EXISTS "r  )r=   rw   rx   ry   rL   r   r  rT   r   rK   rÇ   r‹   Úidentifier_preparerÚquote_identifierrv   ri   )rý   rU   r=   rz   rX   Úquoted_viewrW   rn   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                ó4   — t        | |«       t        | «       | S ©N©ro   r{   )r  rÍ   s     r-   Úmysql_pymysql_engine_irisr  l  s   € äÐ-¨yÔ9ÜÐ2Ô3ØÐr,   c                ó    — t        | |d«       | S )Nr&   ©rš   )r  r�   s     r-   Úmysql_pymysql_engine_typesr   s  s   € äÐ.°
¸GÔDØÐr,   c              #  ó^   K  — | j                  «       5 }|–— d d d «       y # 1 sw Y   y xY w­wr  ©r™   )r  rU   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  rU   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   rU   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_enginer.  ‹  s“   è ø€ ä×$Ñ$ \Ó2€JÜ
×Ñ˜
Ô#Ø%ˆZ×%Ñ%ØGØ—/‘/×*Ñ*ô€Fð ‚LÜ˜fÓ%ò  ˆÜ�$˜Õð ä˜fÓ%ò  ˆÜ�3˜Õð à
‡N�NÕùs   ‚B B"c                ó4   — t        | |«       t        | «       | S r  r  )r.  rÍ   s     r-   Úpostgresql_psycopg2_engine_irisr0  ›  s   € äÐ3°YÔ?ÜÐ8Ô9Ø%Ð%r,   c                ó    — t        | |d«       | S )NÚpostgresr  )r.  r�   s     r-   Ú postgresql_psycopg2_engine_typesr3  ¢  s   € äÐ4°jÀ*ÔMØ%Ð%r,   c              #  ó^   K  — | j                  «       5 }|–— d d d «       y # 1 sw Y   y xY w­wr  r"  )r.  rU   s     r-   Úpostgresql_psycopg2_connr5  ¨  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  r8  r:  r™   rþ   r  r  r  rT   )r:  ÚurirU   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                ó  — dd l }| }	 |j                  d«       	 |j                  d«       |S # |j                  $ r |j                  «        t	        ||«       Y ŒAw xY w# |j                  $ r |j                  «        t        |«       Y |S w xY w©Nr   r6   Ú	iris_view)Úadbc_driver_managerÚadbc_get_table_schemaÚProgrammingErrorÚrollbackr^   r{   )r<  rÍ   ÚmgrrU   s       r-   Úpostgresql_adbc_irisrE  ¾  s�   € ã%à€Dð9Ø×"Ñ" 6Ô*ð(Ø×"Ñ" ;Ô/ð €Køð ×Ñò 9Ø�‰ŒÜ'¨¨iÖ8ð9ûð
 ×Ñò (Ø�‰ŒÜ! $Õ'Ø€Kð(úó    ˆ- šA ­+AÁAÁ*BÂBc                óò   — dd l }| }	 |j                  d«       |S # |j                  $ rL |j                  «        |D �cg c]  }t	        |j                  «       «      ‘Œ nc c}w }}t        ||«       Y |S w xY w)Nr   r�   )r@  rA  rB  rC  Útuplerh   r”   )r<  r�   rD  rU   ÚentryÚnew_datas         r-   Úpostgresql_adbc_typesrK  Ñ  st   € ã%à€Dð9Ø×"Ñ" 7Ô+ð €Køð ×Ñò 9Ø�‰ŒØ7AÖB¨e”E˜%Ÿ,™,›.Õ)ÑBùÒBˆÐBä(¨¨xÕ8à€Kð9ús   ˆ ›#A6¾ AÁA6Á5A6c              #  ó^   K  — | j                  «       5 }|–— d d d «       y # 1 sw Y   y xY w­wr  r"  )r0  rU   s     r-   Úpostgresql_psycopg2_conn_irisrM  â  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"  )r3  rU   s     r-   Úpostgresql_psycopg2_conn_typesrO  è  s-   è ø€ à	)×	1Ñ	1Ó	3ð °tØŠ
÷÷ ñ ür$  c                ó6   — t        j                  d«       d| › �S )Nr=   ú
sqlite:///)r  r  )Ú	temp_files    r-   Ú
sqlite_strrS  î  s   € ä
×Ñ˜Ô%Ø˜	�{Ð#Ð#r,   c              #  ó  K  — t        j                  d«      } |j                  | |j                  j                  ¬«      }|–— t        |«      D ]  }t        ||«       Œ t        |«      D ]  }t        ||«       Œ |j                  «        y ­w)Nr=   r,  r-  )rS  r=   rÇ   rî   r  s        r-   Úsqlite_enginerU  ô  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"  )rU  rU   s     r-   Úsqlite_connrW     s-   è ø€ à	×	Ñ	Ó	 ð  DØŠ
÷÷ ñ ür$  c                ó¢   — t        j                  d«      } |j                  | «      }t        ||«       t	        |«       |j                  «        | S )Nr=   )r  r  rÀ   ro   r{   rÅ   )rS  rÍ   r=   rÇ   s       r-   Úsqlite_str_irisrY    sF   € ä×$Ñ$ \Ó2€JØ%ˆZ×%Ñ% jÓ1€FÜ˜ Ô+Ü˜fÔ%Ø
‡N�NÔØÐr,   c                ó4   — t        | |«       t        | «       | S r  r  )rU  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[  rU   s     r-   Úsqlite_conn_irisr]    s-   è ø€ à	×	#Ñ	#Ó	%ð ¨ØŠ
÷÷ ñ ür$  c                óŽ   — t        j                  d«      } |j                  | «      }t        ||d«       |j	                  «        | S )Nr=   r%   )r  r  rÀ   rš   rÅ   )rS  r�   r=   rÇ   s       r-   Úsqlite_str_typesr_    s@   € ä×$Ñ$ \Ó2€JØ%ˆZ×%Ñ% jÓ1€FÜ˜& *¨hÔ7Ø
‡N�NÔØÐr,   c                ó    — t        | |d«       | S )Nr%   r  )rU  r�   s     r-   Úsqlite_engine_typesra  &  s   € ä˜-¨°XÔ>ØÐr,   c              #  ó^   K  — | j                  «       5 }|–— d d d «       y # 1 sw Y   y xY w­wr  r"  )ra  rU   s     r-   Úsqlite_conn_typesrc  ,  s-   è ø€ à	×	$Ñ	$Ó	&ð ¨$ØŠ
÷÷ ñ ür$  c              #  óZ  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)Nr7  Úadbc_driver_sqliter   r9  zfile:)
r  r  re  r:  r™   rþ   r  r  r  rT   )rR  r:  r;  rU   rî   r  s         r-   Úsqlite_adbc_connrf  2  sž   è ø€ ä
×Ñ˜	Ô"Ü
×ÑÐ,Ô-Ý(à�)�Ð
€CØ	�‰�sÓ	ð ˜tØŠ
Ü! $Ó'ò 	"ˆDÜ�d˜DÕ!ð	"ä! $Ó'ò 	"ˆCÜ�s˜DÕ!ð	"à�‰Œ÷÷ ñ üs   ‚AB+Á	ABÂ	B+ÂB(Â$B+c                ó  — dd l }| }	 |j                  d«       	 |j                  d«       |S # |j                  $ r |j                  «        t	        ||«       Y ŒAw xY w# |j                  $ r |j                  «        t        |«       Y |S w xY wr>  )r@  rA  rB  rC  r\   r{   )rf  rÍ   rD  rU   s       r-   Úsqlite_adbc_irisrh  B  s�   € ã%à€Dð6Ø×"Ñ" 6Ô*ð(Ø×"Ñ" ;Ô/ð €Køð ×Ñò 6Ø�‰ŒÜ$ T¨9Ö5ð6ûð
 ×Ñò (Ø�‰ŒÜ! $Õ'Ø€Kð(úrF  c                ój  — dd l }| }	 |j                  d«       |S # |j                  $ rˆ |j                  «        g }|D ]Q  }t	        |d   «      |d<   |d   �t	        |d   «      |d<   |j                  t        |j                  «       «      «       ŒS t        ||«       |j                  «        Y |S w xY w)Nr   r�   rˆ   rŠ   )
r@  rA  rB  rC  Úintrõ   rH  rh   r’   rT   )rf  r�   rD  rU   rJ  rI  s         r-   Úsqlite_adbc_typesrk  T  s¿   € ã%à€DðØ×"Ñ" 7Ô+ð €Køð ×Ñò 
Ø�‰ŒØˆØò 	3ˆEÜ" 5¨Ñ#3Ó4ˆE�)ÑØÐ&Ñ'Ð3Ü+.¨uÐ5FÑ/GÓ+H�Ð'Ñ(Ø�O‰OœE %§,¡,£.Ó1Õ2ð		3ô 	& d¨HÔ5Ø�‰�à€Kð
ús   ˆ ›BB2Â1B2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:)Ú
contextlibÚclosingrx   r™   ©Úclosing_connrU   s     r-   Úsqlite_buildinrr  j  sW   è ø€ ä	×	Ñ	œGŸO™O¨JÓ7Ó	8ð ¸LØð 	˜TØŠJ÷	÷ð ÷	ð 	ú÷ð üs1   ‚)A«A®A³A»	AÁA	Á	AÁAÁAc                ó4   — t        | |«       t        | «       | S r  )r\   r{   )rr  rÍ   s     r-   Úsqlite_buildin_irisrt  q  s   € ä  °Ô;Ü˜nÔ-ØÐr,   c                ót   — |D �cg c]  }t        |j                  «       «      ‘Œ }}t        | |«       | S c c}w r  )rH  rh   r’   )rr  r�   rI  s      r-   Úsqlite_buildin_typesrv  x  s6   € à5?Ö@¨E”%˜Ÿ™›Õ'Ð@€JÐ@Ü! .°*Ô=ØÐùò As   … 5r  )Úmarksr#  r  r&  r   r(  r.  r5  r0  rM  r3  rO  )rU  rW  rS  )r[  r]  rY  )ra  rc  r_  rf  r<  rE  rh  rK  rk  rr  rt  rv  c                óP   — |j                  | «      } |j                  d| dd¬«       y )NÚtestrõ   F©r£   rn   Ú	if_existsr®   )ÚgetfixturevalueÚto_sql)rU   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   ry  rõ   Frz  )	r   ÚnodeÚ
add_markerr  ÚmarkÚxfailr|  r³   r}  )rU   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)Nr7  rG   zint8[pyarrow]©r?   éç  útimestamp[ns][pyarrow]zdate32[day][pyarrow]zduration[ns][pyarrow]Úazstring[pyarrow])rj  r   r   r   Ústringrz   rf  r   râ   zis_sparse is deprecatedÚ zthe 'timedelta'F)ÚmatchÚcheck_stacklevelÚ
test_arrowÚreplacerz  )r  r  r   ÚpdÚarrayr   r   r   rj   r   ÚDeprecationWarningÚUserWarningr|  r¸   Úassert_produces_warningr}  )rU   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        |t        «      rt        j                  d¬«       t        dt        j                  t        ddd«      |gd¬«      i«      }|j                  | «      } |j                  d	| d
d¬«       y )Nr7  z?Decimal('NaN') not supported in constructor for timestamp dtyper�  r   r‹  rG   rŒ  rŠ  r’  r“  Frz  )r  r  rw   r   Úskipr   r”  r•  r   r|  r}  )rU   r~  Únulls_fixturerÖ   s       r-   Ú*test_dataframe_to_sql_arrow_dtypes_missingrŸ    s„   € ô ×Ñ˜	Ô"Ü�-¤Ô)Ü�‰àTõ	
ô
 
àœŸ™Ü˜$  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¡  rz   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)rU   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“  rG   )rõ   rH   )Údelete_rowsrG   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ª  )rU   ÚmodeÚnum_row_coefrå   r~  r«  s         r-   Útest_to_sql_existr´  6  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)rU   rå   r~  r«  rš  s        r-   Útest_to_sql_exist_failr¹  C  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°   r8   )r|  r"   r¾   r”  Úread_sqlr»   rº   ©rU   r~  Ú
iris_frames      r-   Útest_read_iris_queryrÁ  O  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 )Nrz   ú,'chunksize' not implemented for ADBC driversTr£  r»  é   ©Ú	chunksizer¼  r½  r8   )rƒ  r„  r  r…  r†  r|  r   r"   r¾   r”  r¾  r»   rº   r¿  s      r-   Útest_read_iris_query_chunksizerÇ  [  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 )Nrz   rÃ  Tr£  r   )r3   r5   rÀ   Úselectr6   )Úautoload_withr­   r«   ©r£   Úlength©rm   )rƒ  r„  r  r…  r†  r|  r=   r3   r5   rÀ   rÉ  rw   rÂ   r"   r¾   rÅ   )
rU   r~  r3   r5   rÀ   rÉ  r@   Úautoload_conr6   rÀ  s
             r-   Ú.test_read_iris_query_expression_with_parameterrÏ  n  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 )
Nrz   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¾   )rU   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 )Nr6   )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 )Nrz   ú+chunksize argument NotImplemented with ADBCr�  r6   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 )NrG   )rõ   rf   rg   rL   rü   ra   )Úpd_tablerU   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¨  rG   r±  )rU   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 )Nrv  ú;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©rU   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   ru   r–   ©rG   rH   rI   ©çš™™™™™¹?r¬   ç333333Ó?©r�  Úbr§  F©r£   rn   r®   z}DROP PROCEDURE IF EXISTS get_testdb;

    CREATE PROCEDURE get_testdb ()

    BEGIN
        SELECT * FROM test_frame;
    ENDzCALL get_testdb();)r|  r=   rv   r˜   r—   r   r}  rw   r™   ri   rL   r   r"   r¸   Úassert_frame_equalr¾  )	rU   r~  rv   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_countrH   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)Ú
connectionrK   r	   rN   ÚwriterÚ	writerowsÚseekÚjoinrû   r£   Úcopy_expert)rü   rU   rÕ   rÞ  Ú
dbapi_connrX   Ú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,rG   rH   rî  r¬   r�  Ún©Úcol1Úcol2Úcol3r§  F)r£   rn   r®   r   ©r|  r   r}  r   r#   r¸   ró  )rU   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   r`   r–   ru   c           	     óð   •— |D �cg c]  }t        t        ||«      «      ‘Œ }} ‰| j                  «      j                  |«      j	                  dg¬«      }|j                  |«      }|j                  S c c}w )Nr�  )Úindex_elements)rf   rg   rü   rh   Úon_conflict_do_nothingrL   Úrowcount©	rü   rU   rÕ   rÞ  r[   rË   rW   r  ra   s	           €r-   Úinsert_on_conflictzHtest_insertion_method_on_conflict_do_nothing.<locals>.insert_on_conflict<  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
    );
    ©rG   çÍÌÌÌÌÌ @r�  Úabcrâ   Útest_insert_conflictrõ   Frz  ©rG   gš™™™™™	@rñ  ©r£   rn   r®   r{  r   Tr¥  )r|  Úsqlalchemy.dialects.postgresqlra   r˜   r—   Úsqlalchemy.sqlrv   rw   r™   ri   rL   r   Úlistr}  r   r#   r¸   ró  r   r  )rU   r~  r—   rv   r  Ú
create_sqlrn   r  Ú	df_insertÚinsertedr  r«  ra   s               @r-   Ú,test_insertion_method_on_conflict_do_nothingr&  3  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  )rH   gÍÌÌÌÌÌ@rñ  r  râ   Útest_public_schemarõ   FÚpublic)r£   rn   r{  r®   rû   ©rû   )rä  r  r…  r†  r|  r   r"  r}  r   r#   r¸   ró  )rU   r~  Ú	test_dataÚdf_outs       r-   Útest_to_sql_on_public_schemar.  m  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   r`   r–   ru   c           	     óD  •— |D �cg c]  }t        t        ||«      «      ‘Œ }} ‰| j                  «      j                  |«      }|j	                  |j
                  j                  |j
                  j                  ¬«      }|j                  |«      }|j                  S c c}w )N)rñ  r÷   )
rf   rg   rü   rh   Úon_duplicate_key_updater%  rñ  r÷   rL   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õ   Frz  r  r  rH   Tr¥  )r|  Úsqlalchemy.dialects.mysqlra   r˜   r—   r!  rv   rw   r™   ri   rL   r   r"  r}  r   r#   r¸   ró  r   r  )rU   r~  r—   rv   r  r#  rn   rÖ   r  r%  r  r«  ra   s               @r-   Ú(test_insertion_method_on_conflict_updater3  …  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–   ru   Ú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;
    rG   r£   ©Úgroup_idr£   )r|  r˜   r—   r!  rv   ÚuuidÚuuid4Úhexrw   r™   ri   rL   r#   r   r¸   ró  )
rU   r~  r—   rv   rÆ   rý   Úsql_stmtrn   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_viewrG   r£   r7  )rL   r”  r¾  r   r¸   ró  )rr  Úcreate_tableÚinsert_intoÚcreate_viewr  r  s         r-   Útest_read_view_sqliterB  Þ  su   € ð€Lð€Kð€Kð
 ×Ñ˜<Ô(Ø×Ñ˜;Ô'Ø×Ñ˜;Ô'Ü�[‰[Ð3°^ÓD€FÜ q c°6Ñ:Ó;€HÜ×Ñ˜& (Õ+r,   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-   ÚflavorrD  ÷  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)Nrz   ú)'params' not implemented for ADBC driversTr£  r(   rÑ  rÍ  ©rƒ  r„  r  r…  r†  r|  rD  r!   Úrun_transactionÚ
read_queryr¾   ©rU   r~  r.   ré  rÔ  rm   r«  rÀ  s           r-   Útest_read_sql_iris_parameterrK    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)
Nrz   rF  Tr£  r)   r­   r«   rË  rÍ  rG  rJ  s           r-   Ú"test_read_sql_iris_named_parameterrM    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'   rz   zbroken testr�  r*   rÍ  )
rä  r  r…  r†  r|  rD  r!   rH  rI  r¾   )rU   r~  r.   ré  rÔ  r«  rÀ  s          r-   Ú,test_read_sql_iris_no_parameter_with_percentrO  )  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_viewrQ  <  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 )Nrz   rÙ  r�  z1SELECT * FROM iris_view WHERE "SepalLength" < 0.0r°   rÅ  )rƒ  r„  r  r…  r†  r|  r   r"   r¸   ró  r   )rU   r~  rÔ  Ú
with_batchÚwithout_batchs        r-   Ú*test_api_read_sql_with_chunksize_no_resultrU  C  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}  )rU   r~  rå   r«  s       r-   Útest_api_to_sqlrW  P  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¸  )rU   r~  rå   r«  rš  s        r-   Útest_api_to_sql_failrZ  [  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È   ©rU   r~  rå   r«  Únum_entriesÚnum_rowss         r-   Útest_api_to_sql_replacer`  j  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°  rJ   rõ   rH   r\  r]  s         r-   Útest_api_to_sql_appendrc  |  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ó  )rU   r~  rç   r«  r  s        r-   Útest_api_to_sql_type_mappingrh  �  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¢   Frg  zSELECT * FROM test_series)r|  r   r©  r   r  r   r¶   Úaranger}  r"   r¸   ró  Úto_frame)rU   r~  r«  ÚsÚs2s        r-   Útest_api_to_sql_seriesrp  œ  s§   € à×"Ñ" 4Ó(€DÜ
‡}�}�] DÔ)Ü�_‰_˜T°DÔ9ð 	0¸YØ× Ñ  Ô/÷	0ô 	Œr�y‰y˜ 'Ô*°Ô:€AÜ‡J�Jˆq�- ¨UÕ3Ü	×	Ñ	Ð7¸Ó	>€BÜ×Ñ˜!Ÿ*™*›,¨Õ+÷	0ð 	0úrd  c                ó¬  — | }|j                  | «      } t        j                  d| «      r1t        j                  | d¬«      5 }|j	                  d«       d d d «       t        j
                  |d| ¬«       t        j                  d| ¬«      }d|v r|j                  d¬«      }n|j                  d	¬«      }t        j                  ||«       y # 1 sw Y   ŒxxY w)
NÚtest_frame_roundtripTr¥  ©rn   ú"SELECT * FROM test_frame_roundtriprz   Ú__index_level_0__râ   Úlevel_0)
r|  r   r©  r   r  r}  r"   rj   r¸   ró  ©rU   r~  rå   ré  r«  r  s         r-   Útest_api_roundtriprx  ©  s»   € à€IØ×"Ñ" 4Ó(€DÜ
‡}�}Ð+¨TÔ2Ü�_‰_˜T°DÔ9ð 	9¸YØ× Ñ Ð!7Ô8÷	9ô ‡J�Jˆ{Ð2¸Õ=Ü×ÑÐ DÈ$ÔO€Fð �ÑØ—‘Ð%8�Ó9‰à—‘ Y�Ó/ˆÜ×Ñ˜& +Õ.÷	9ð 	9ús   ÁC
Ã
C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)Nrz   rÙ  r�  rr  Tr¥  FrH   )rn   r®   rÆ  rt  rs  )rƒ  r„  r  r…  r†  r|  r   r©  r   r  r}  r"   r¸   ró  )rU   r~  rå   r«  r  s        r-   Útest_api_roundtrip_chunksizerz  ¼  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!   rL   rÁ   rS   r"  )rU   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&   r2  rƒ   ©Úparse_datesiÐ  rG   rI   r   rJ   ú%Y-%m-%d %H:%M:%Sr„   iÂ  é   é   iÝ  rn  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Ú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(  r|j                  ddddœ«      }t        j                  |	|«       y )Nr�   rv  z failing combination of argumentsr�  rƒ   zdatetime64[us]rt   )rn   rƒ  r2  rˆ   rŠ   rK  Úint32)r„   r…   r‡   )
r|  rä  r  r…  r†  r¥   rj  rQ   r¸   ró  )
rU   r~  r¾  rv   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ˆÐ Ñ!àÐ+Ò+Ø—?‘?à%Ø")Ø!ñó
ˆô ×Ñ˜& (Õ+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„   ©rU   r~  rÖ   s      r-   Útest_api_date_and_indexr”  H  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¢   rf  z.sqlite ADBC driver doesn't implement timedeltar�  rz   F)r‘  ©r£   rn   rH   zSELECT * FROM test_timedeltar<  r   i@B )ÚmonthsÚdaysÚmicrosecondsÚnanosecondsiÀÆ- rÔ   )r|  r   r©  r   r  r   r   rm  rƒ  r„  r  r…  r†  r   r–  r—  r¸   r˜  r}  r"   r”  Ú
DateOffsetr¥   r¹   )	rU   r~  ré  r«  rÖ   r™  r  r  r  s	            r-   Útest_api_timedeltarž  W  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               @rz   zdatatypes not supportedzComplex datatypes not supportedr¶  Útest_complexrs  )r|  r   r  r·  r¸  r}  )rU   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)Nrz   ú-index_label argument NotImplemented with ADBCr�  Útest_index_labelTr¥  r  rJ   úSELECT * FROM test_index_label)Úindex_labelr   )rƒ  r„  r  r…  r†  r|  r   r©  r   r  r   Úranger®   r£   r}  r"   rº   )	rU   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£  rz   r¦  r�  r§  Tr¥  rJ   r  )ÚA0ÚA1)ÚB0ÚB1rg  r¨  r   rv  rG   Úlevel_1r“  rÙ   rÚ   )r{  r©  rH   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¸  )	rU   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¥  ©rG   r  Úline1©rH   ç      ø?Ú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ó  )rU   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˜  rH   r2  z(SELECT "A", "B" FROM test_dtype_argumentz$SELECT A, B FROM test_dtype_argument©rn   r?   )r|  r   r©  r   r  r   r}  r¥   r"   r¸   ró  )	rU   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 )
NrG   rH   rI   rJ   r   râ   Útest_frame_integer_col_namesr“  r°  )r|  r   r   r}  r“  s      r-   Útest_api_integer_col_namesrÎ  6  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 )Nrz   ú-'get_schema' not implemented for ADBC driversTr£  ry  rs  ÚCREATE©rƒ  r„  r  r…  r†  r|  r   Ú
get_schema©rU   r~  rå   r#  s       r-   Útest_api_get_schemarÕ  =  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 )	Nrz   rÐ  Tr£  ry  Úpypi)rn   rû   zCREATE TABLE pypi.rÒ  rÔ  s       r-   Útest_api_get_schema_with_schemarØ  K  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 )Nrz   rÐ  Tr£  çš™™™™™ñ?rÈ  r  çš™™™™™@rð  rr  ÚINTEGERr   )r€   ry  rñ  rÊ  rÑ  )rƒ  r„  r  r…  r†  r|  r   r=   r€   r   rÓ  )rU   r~  ré  Úfloat_framer?   r€   r#  s          r-   Útest_api_get_schema_dtypesrÞ  Z  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 )Nrz   rÐ  Tr£  rÚ  rÈ  r  rÛ  )ÚCol1ÚCol2ry  rà  )rn   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Ó  )rU   r~  rå   ré  r¼   r#  Úconstraint_sentences          r-   Útest_api_get_schema_keysrã  r  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)Nrz   rÙ  r�  Útest_chunksizeTr¥  rH   )é   r°   Úabcderâ   Frò  zselect * from test_chunksizer   )r°   r°   r°   r°   rH   r°   rÅ  ©Úignore_indexrG   rr  z^$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#   )rU   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‰‰ðô
 ×Ñ˜$ Ô%ð Ð$Ò$Ü�]‰]Ô.°dÔ;ñ 	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<  r8  rr   rs   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ó  )rU   r~  rz   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¥  rG   rH   rI   rJ   õ   Ã©rñ  râ   Frò  )r|  r   r©  r   r  r   r}  )rU   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   rG   rH   r¬   rÉ  rÅ  Frò  r2  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ó  )rU   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)Nrz   r7  z16.0)rf  r<  z!pyarrow->pandas throws ValueErrorTr£  Ú
test_tabler¥  rì  rí  rG   ©r�  rñ  r÷   Frò  z)SELECT a, b, a +1 as a, c FROM test_table)rG   rî  rH   rG   )rH   r¬   rI   rG   )rI   rï  rJ   rG   )r�  rñ  r�  r÷   râ   )r  r  r   r>   rƒ  r„  r…  r†  r|  r   r©  r   r  r   r}  r”  r¾  r¸   ró  )rU   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 )Nrr  úNot Implementedr�  r§  rÙ   rÚ   râ   )
rä  r  r…  r†  r|  r   r}  r#   rº   rˆ  )rU   r~  rå   ré  Úcolsr  s         r-   Útest_read_table_columnsr   	  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 )Nrr  r  r�  r§  r®   rÀ  rÙ   rÚ   rÛ   rÜ   )r’  rº   )rä  r  r…  r†  r|  r   r}  r#   r®   r´  rº   rˆ  )rU   r~  rå   ré  r  s        r-   Útest_read_table_index_colr  0	  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 )Nrt  rã  r�  r»  r6   )rä  r  r…  r†  r|  r   r"   r¾  r¸   ró  r#   )rU   r~  Úiris_frame1Úiris_frame2s       r-   Útest_read_sql_delegater  G	  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   ru   r–   z,CREATE TABLE invalid (x INTEGER, y UNKNOWN);z0CREATE TABLE other_table (x INTEGER, y INTEGER);Úother_tablezSELECT * FROM other_table)r=   rv   r˜   r—   rw   r™   ri   rL   r¸   r˜  r   r#   r"   )rW  rU   rv   r—   Ú
query_listrÔ  s         r-   Útest_not_reflect_all_tablesr  Z	  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)Nrr  rz   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}  )rU   r~  rå   ré  r  s        r-   Ú(test_warning_case_insensitive_table_namer  s	  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   ÚSQLTablerw   rü   r÷   r´   )rU   r~  r  rÖ   r  rü   s         r-   Útest_sqlalchemy_type_mappingr&  ‹	  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)ÚInt8r(  )Úuint8r(  )ÚUInt8r(  )Úint16r(  )ÚInt16r(  )Úuint16rÜ  )ÚUInt16rÜ  )r�  rÜ  )ÚInt32rÜ  )Úuint32ÚBIGINT)ÚUInt32r2  )rÔ   r2  )ÚInt64r2  rÔ   r2  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   rG   r�  ©rº   r?   r#  r$  )
r|  r   r   r   r%  rÂ   rü   r÷   r�  r´   )rU   r~  rå  r  rÖ   r  rü   r  s           r-   Útest_sqlalchemy_integer_mappingr7  š	  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   rG   r�  r6  z1Unsigned 64 bit integer datatype is not supportedr¶  r#  r$  )r|  r   r   r   r  r·  r¸  r%  )rU   r~  rå  rÖ   r  s        r-   Ú(test_sqlalchemy_integer_overload_mappingr;  º	  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«       t        | «      }d|z   }d}|j                  ||dd¬«       t	        j
                  ||«      }t	        j                  ||«      }d}t	        j                  ||«      }	t        j                  ||«       t        j                  ||«       t        j                  ||	«       y )Nr=   rQ  r6   r“  Frz  r»  )
r  r  rÂ   r}  r   r¾  r#   r"   r¸   ró  )
rR  r~  rå   r£   Údb_urirü   rY  rç   rÔ  rb  s
             r-   Útest_database_uri_stringr>  Ç	  sª   € Ü
×Ñ˜Ô%ô
 ˆy‹>€DØ˜DÑ €FØ€EØ×Ñ˜E v¸È%ÐÔPÜ—,‘,˜u fÓ-€KÜ×$Ñ$ U¨FÓ3€KØ €EÜ×$Ñ$ U¨FÓ3€KÜ×Ñ˜+ {Ô3Ü×Ñ˜+ {Ô3Ü×Ñ˜+ {Õ3r,   Úpg8000c                ó¾   — t        j                  d«       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/dbnamer?  r¶  zselect * from table)r  r  r·  ÚImportErrorr   r¾  )r~  r=  s     r-   Ú(test_pg8000_sqlalchemy_passthrough_errorrB  Ú	  sI   € ä
×Ñ˜Ô%ð 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   ru   r2  z%select * from iris where "Name"=:namez#select * from iris where name=:namer£   zIris-versicolorrÍ  r;   )r|  r=   rv   r   r¾  Úset)rU   r~  ré  rv   Ú	name_textÚiris_dfÚ	all_namess          r-   Útest_query_by_text_objrH  ä	  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=   rJ  rÉ  rA   Úwherer÷   r;   r   r¾  rD  )rU   r~  rJ  rÉ  r6   Úname_selectrF  rG  s           r-   Útest_query_by_select_objrM  ô	  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 )
Nrr  r  r�  r  ©rI   rJ   r°   )rÙ   z%_variationÚtest_column_percentageFrò  )rä  r  r…  r†  r|  r   r}  r   r#   r¸   ró  )rU   r~  ré  rÖ   rû  s        r-   Útest_column_with_percentagerQ  
  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                  t        j                  | «      «      5 }t	        j
                  |d|d¬«      dk(  sJ ‚	 d d d «       t        j                  t        j                  | «      «      5 }t	        j                  d|«      }d d d «       t        j                  |«       y # 1 sw Y   ŒgxY w# 1 sw Y   Œ,xY w)NÚtest_frame3_legacyFrg  rJ   z!SELECT * FROM test_frame3_legacy;)	rn  ro  rx   r™   r   r}  r"   r¸   ró  )rR  rç   rU   r  s       r-   Útest_sql_open_closerT  
  s®   € ô 
×	Ñ	œGŸO™O¨IÓ6Ó	7ð U¸4Ü�z‰z˜+Ð';¸TÈÔOÐSTÒTÐTÑT÷Uô 
×	Ñ	œGŸO™O¨IÓ6Ó	7ð O¸4Ü×#Ñ#Ð$GÈÓNˆ÷Oô ×Ñ˜+ vÕ.÷Uð Uú÷Oð Oús   ©B/Á9B;Â/B8Â;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·  rA  r   r¾  )rU   rš  s     r-   Útest_con_string_import_errorrV  !
  s>   € à*€DØ
9€CÜ	�‰”{¨#Ô	.ñ 1Ü�‰Ð)¨4Ô0÷1÷ 1ñ 1ús    A Á A	c                 ó  —  G d„ d«      } t        j                   | 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)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  )rx   ry   rU   )ÚselfÚargsÚkwargss      r-   Ú__init__zqtest_con_unknown_dbapi2_class_does_not_error_without_sql_alchemy_installed.<locals>.MockSqliteConnection.__init__,
  s   € Ü×*Ñ*¨DÐ;°FÑ;ˆD�Ir,   c                ó.   — t        | j                  |«      S r  )ÚgetattrrU   )r[  r£   s     r-   Ú__getattr__zttest_con_unknown_dbapi2_class_does_not_error_without_sql_alchemy_installed.<locals>.MockSqliteConnection.__getattr__/
  s   € Ü˜4Ÿ9™9 dÓ+Ð+r,   c                ó8   — | j                   j                  «        y r  )rU   rS   )r[  s    r-   rS   zntest_con_unknown_dbapi2_class_does_not_error_without_sql_alchemy_installed.<locals>.MockSqliteConnection.close2
  s   € Ø�I‰I�O‰OÕr,   N)ÚreturnÚNone)Ú__name__Ú
__module__Ú__qualname__r^  ra  rS   r+   r,   r-   ÚMockSqliteConnectionrY  +
  s   „ ó	<ò	,ó	r,   rh  rm  zonly supports SQLAlchemyr¶  zSELECT 1)rn  ro  r¸   r˜  r—  r   r¾  )rh  rU   s     r-   ÚJtest_con_unknown_dbapi2_class_does_not_error_without_sql_alchemy_installedri  )
  sr   € ÷ñ ô 
×	Ñ	Ñ0°Ó<Ó	=ð +ÀÜ×'Ñ'¬Ð;UÔVñ 	+Ü�L‰L˜ TÔ*÷	+÷+ð +÷	+ð 	+ú÷+ð +ús#   ¦A6ÁA*ÁA6Á*A3	Á/A6Á6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¶  r6   )r   r"   r¾  r¸   ró  r  r·  ÚDatabaseError)rt  rU   r  r  rš  s        r-   Útest_sqlite_read_sql_delegaterl  :
  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 )Nry  rÑ  )r   rÓ  )rå   r#  s     r-   Útest_get_schema2rn  E
  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#  r$  ú
r   r  rG   r  )r   r   r   r   ÚSQLiteTableÚ
sql_schemaÚsplitÚstrip)rr  rU   rÖ   r  rü   rû   Úcols          r-   Útest_sqlite_type_mappingrv  K
  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)NrS  ú#sqlite_str has no inspection systemr   rï   ©ç      ð?ç       @ç      @ç      @©r}  r|  r{  rz  ©ÚoneÚtwoTr¥  r«  rJ   )r  r�  r|  r=   rð   r   r   r   r}  r©  r  ©rU   r~  rð   r«  r«  Úinsps         r-   Útest_create_tabler„  ]
  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)
NrS  rx  r   rï   ry  r~  r  r«  rJ   )r  r�  r|  r=   rð   r   r   r   rH  r}  r©  r  Úclear_cacheÚAttributeErrorr‚  s         r-   Útest_drop_tablerˆ  r
  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.ré  c                óº  — d}|j                  | «      }t        |«      5 }|j                  «       5  |j                  ||«      |j                  d   k(  sJ ‚	 d d d «       |j                  «       5  |j                  |«      �J ‚	 d d d «       t        ||«      dk(  sJ ‚|j                  |«      sJ ‚	 d d d «       y # 1 sw Y   ŒdxY w# 1 sw Y   ŒCxY w# 1 sw Y   y xY w)NÚtemp_delete_rows_framer   )r|  r!   rH  r}  r»   r­  rÈ   r©  )ré  rå   r~  rÆ   rU   r«  s         r-   Útest_delete_rows_successr‹  Œ
  sì   € à)€JØ×"Ñ" 9Ó-€Dä	˜4Ó	 ð / IØ×&Ñ&Ó(ñ 	UØ×#Ñ# K°Ó<À×@QÑ@QÐRSÑ@TÒTÐTÑT÷	Uð ×&Ñ&Ó(ñ 	=Ø×(Ñ(¨Ó4Ð<Ð<Ñ<÷	=ô ˜$ 
Ó+¨qÒ0Ð0Ð0Ø×"Ñ" :Ô.Ð.Ñ.÷/ð /÷	Uð 	Uú÷	=ð 	=ú÷	/ð /ús:   ŸC°%B9ÁCÁ.CÂ,CÂ9C	Â>CÃC	Ã
CÃCc           	     ó   — t        j                  d«      }d}d|› d�}| dk7  rd| vr |j                  |«      }t        ddgd	d
gdœd¬«      }t        g d¢g d¢dœd¬«      }|j	                  | «      }t        |«      5 }|j                  «       5 }	|	j                  |«       d d d «       |j                  «       5  |j                  ||dd¬«       d d d «       t        j                  t        j                  j                  «      5  |j                  «       5  |j                  ||dd¬«       d d d «       d d d «       |j                  «       5  |j                  d|› �d¬«      }
t        j                  |
|«       d d d «       d d d «       y # 1 sw Y   ŒéxY w# 1 sw Y   ŒÇxY w# 1 sw Y   ŒwxY w# 1 sw Y   Œ{xY w# 1 sw Y   ŒBxY w# 1 sw Y   y xY w)Nr=   Útemp_delete_rows_atomic_framezCREATE TABLE z' (a INTEGER, b INTEGER UNIQUE NOT NULL)rr  rz   rG   rH   rI   rJ   rð  r�  rŠ  )r°   é   rÄ  )r±   r±   r±   rõ   F©r{  r®   r­  úSELECT * FROM )r  r  rv   r   r|  r!   rH  rL   r}  r·  r”  rt   rk  rI  r¸   ró  )ré  r~  r=   rÆ   Ú
table_stmtÚoriginal_dfÚreplacing_dfrU   r«  rX   Ú	result_dfs              r-   Útest_delete_rows_is_atomicr•  œ
  sÔ  € ä×$Ñ$ \Ó2€Jà0€JØ   Ð,SÐT€JàÐ$Ò$¨°yÑ)@Ø$�Z—_‘_ ZÓ0ˆ
ô  1 a &°°1¨vÑ6¸gÔF€KÜ¢9²9Ñ=ÀWÔM€Là×"Ñ" 9Ó-€DÜ	˜4Ó	 ð : IØ×&Ñ&Ó(ð 	$¨CØ�K‰K˜
Ô#÷	$ð ×&Ñ&Ó(ñ 	WØ×Ñ˜[¨*ÀÐPUÐÔV÷	Wô �]‰]œ2Ÿ9™9×2Ñ2Ó3ñ 	Ø×*Ñ*Ó,ñ Ø× Ñ Ø  *¸ÈUð !ô ÷÷	ð ×&Ñ&Ó(ñ 	:Ø!×,Ñ,Ø   Ð-°Wð -ó ˆIô ×!Ñ! )¨[Ô9÷		:÷:ð :÷	$ð 	$ú÷	Wð 	Wú÷
ð ú÷	ð 	ú÷	:ð 	:ú÷:ð :ús„   Á=GÂFÂ GÂ8FÃ5GÄF,ÄF Ä*F,Ä2GÅ
-F8Å7GÆF	ÆGÆF	ÆGÆ F)Æ%F,Æ,F5	Æ1GÆ8G	Æ=GÇGc                óÜ  — | dk(  rt        j                  d«       | }|j                  | «      } t        | «      5 }|j	                  «       5  |j                  |d«      dk(  sJ ‚|j                  d«      }d d d «       d d d «       d|v rj                  ddi¬	«      }j                  dd
¬«       d |j                  _
        t        j                  ||«       y # 1 sw Y   ŒdxY w# 1 sw Y   ŒhxY w)NrS  rx  rr  rJ   rt  rz   ru  rv  râ   T)Úinplace)r  r�  r|  r!   rH  r}  rI  ÚrenameÚ	set_indexr®   r£   r¸   ró  rw  s         r-   Útest_roundtriprš  Á
  sò   € àˆ|ÒÜ�‰Ð9Ô:à€IØ×"Ñ" 4Ó(€DÜ	˜4Ó	 ð P IØ×&Ñ&Ó(ñ 	PØ×#Ñ# KÐ1GÓHÈAÒMÐMÐMØ×)Ñ)Ð*NÓOˆF÷	P÷Pð
 �ÑØ—‘Ð(;¸YÐ'G�ÓHˆØ
×Ñ�Y¨ÐÔ-ð €F‡L�LÔä×Ñ˜& +Õ.÷	Pð 	Pú÷Pð Pús#   ¹C"Á
)CÁ3C"ÃC	Ã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!   rH  rL   rÁ   rS   r"  )rU   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 )Nr6   rs  )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 )Nr6   r7   )rn   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_existrs  )r|  r  r·  r¸  r   r#   )rU   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 )NrS  ú.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ò  rG   r  ©rU   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 )NrS  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¹   )rU   r~  rƒ  r  rÖ   ru  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°  rG   rÅ  Trè  )r|  r¨   r   r"  r"   r�   r¸   r¹   )rU   r~  r  rÖ   ru  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| «      }|j	                  «       }t        j                  ||«       y )Nrœ   )r|  r¨   r   r#   rm  r¸   ró  )rU   r~  r  r  Ú	exp_frames        r-   Ú!test_datetime_with_timezone_tabler¶  H  sL   € à×"Ñ" 4Ó(€DÜ.¨tÓ4€HÜ×Ñ ¨$Ó/€Fà×!Ñ!Ó#€IÜ×Ñ˜& )Õ,r,   c           	     óh  — | }|j                  | «      } t        dt        d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 rIt        |j                  d   t        «      sJ ‚t        |d   «      j                  j!                  d«      |d<   t        j                  ||«       y )NrÙ   ú2013-01-01 09:00:00rI   ú
US/PacificÚus)Úperiodsr¡   ÚunitÚ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"   rw   ÚlocrÂ   r   Úas_unit)rU   r~  ré  r  r  s        r-   Ú%test_datetime_with_timezone_roundtriprÄ  R  s(  € à€IØ×"Ñ" 4Ó(€Dô
 Ø	ŒjÐ.¸¸lÐQUÔVÐWó€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Ü! &¨¡+Ó.×1Ñ1×9Ñ9¸$Ó?ˆˆs‰Ü×Ñ˜& (Õ+r,   c           	     óD  — |j                  | «      } t        dt        ddd«      idg¬«      }|j                  d| d¬«      dk(  sJ ‚t	        j
                  d| «      }t        t        j                  t        ddd«      gd	¬
«      dg¬«      }t        j                  ||«       y )Nr   i'  rG   r   rg  Útest_datetime_obbFrò  úM8[us]rŠ  râ   )
r|  r   r   r}  r   r#   r¶   r•  r¸   ró  )rU   r~  rË   r  r  s        r-   Útest_out_of_bounds_datetimerÈ  q  s›   € ð ×"Ñ" 4Ó(€DÜ�fœh t¨Q°Ó2Ð3¸A¸3Ô?€DØ�;‰;Ð/°TÀˆ;ÓGÈ1ÒLÐLÐLÜ×ÑÐ 3°TÓ:€FÜÜ
�‰”(˜4  AÓ&Ð'¨xÔ8À6À(ô€Hô ×Ñ˜& (Õ+r,   c                ó$  — |j                  | «      } t        d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°   Ú6hrº  )r»  Úfreqr¼  Únumsrg  Ú	foo_tableÚ	info_date)r£   rn   r©  rÀ  F)Úcheck_names)
r|  r   Ú
_with_freqr   rª  r}  r   r#   r¸   ró  )rU   r~  Údatesr  r  s        r-   Ú"test_naive_datetimeindex_roundtriprÒ  ~  s‰   € ð ×"Ñ" 4Ó(€DÜ�|¨Q°TÀÔE×PÑPÐQUÓV€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„   rn  r¼  )r|  r   r#   rç  r¶   r‡  rµ   rƒ   r?   r´   r„   )rU   r~  ré  rÖ   Úexpected_types        r-   Útest_date_parsingrÖ  ‹  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                óN  — | }|j                  | «      } t        t        dd¬«      t        j                  d«      dœ«      }|j                  d| ¬«      dk(  sJ ‚t        j                  d| «      }|j                  dd	¬
«      }|d d  }|d   j                  d«      |d<   t        j                  ||«       t        j                  d| «      }|j                  dd	¬
«      }d|v r0t        |j                  d   t        «      sJ ‚t!        |d   «      |d<   t        j                  ||«       y )Nr¸  rI   ©r»  r|  rÅ  Útest_datetimer˜  r®   rG   )ÚaxisrÙ   rÇ  úSELECT * FROM test_datetimer%   r¾  )r|  r   r   r¶   rl  r}  r   r#   rj   r¥   r¸   ró  r"   rw   rÂ  rÂ   r   ©rU   r~  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à‘!ˆu€HØ˜S‘M×(Ñ(¨Ó2€HˆS�MÜ×Ñ˜& (Ô+ô ×ÑÐ =¸tÓD€FØ�[‰[˜ qˆ[Ó)€FØ�9ÑÜ˜&Ÿ*™* VÑ,¬cÔ2Ð2Ð2Ü! &¨¡+Ó.ˆˆs‰Ü×Ñ˜& (Õ+r,   c                óB  — | }|j                  | «      } t        t        dd¬«      t        j                  d«      dœ«      }t        j
                  |j                  d<   |j                  d| d¬	«      dk(  sJ ‚t        j                  d| «      }|d d  }|d
   j                  d«      |d
<   t        j                  ||«       t        j                  d| «      }d|v r2t        |j                  d   t        «      sJ ‚t!        |d
   d¬«      |d
<   t        j                  ||«       y )Nr¸  rI   rØ  r|  rÅ  ©rG   rÙ   rÙ  Frò  rÙ   rÇ  rÛ  r%   r¾  rŒ  rs   )r|  r   r   r¶   rl  r  rÂ  r}  r   r#   r¥   r¸   ró  r"   rw   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Ø‘!ˆu€HØ˜S‘M×(Ñ(¨Ó2€HˆS�MÜ×Ñ˜& (Ô+ô ×ÑÐ =¸tÓD€FØ�9ÑÜ˜&Ÿ*™* VÑ,¬cÔ2Ð2Ð2Ü! &¨¡+°hÔ?ˆˆs‰ä×Ñ˜& (Õ+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éÞ  rG   rH   r�  râ   Ú	test_dateFrò  )r|  r   r   r}  r#   r   r¸   r¹   )rU   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   rG   é   r�  râ   Ú	test_timeFrò  rH   Ú
test_time2rg  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)rU   r~  rr  ré  rÖ   rû  rW  Ú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        )Ús1ro  Útest_read_writeFrò  rG   T)Úcheck_dtypeÚcheck_exact)r|  r   r¶   r�  Úfloat32r   r}  r   r#   r¸   ró  )rU   r~  rö  ro  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ò  rI   ú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ò  rI   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ò  rI   ©rH   rÚ   rþ  )r|  r   r¶   r  r}  rÂ  r   r#   r¸   ró  r"   r¬  s       r-   Útest_nan_stringr  7  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 )Nrz   z)ADBC implementation does not create indexTr£  r¹  r»  r¾  rÙ   r¿  Útest_to_sql_saves_indexrH   >   rS  rr  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!   rH  r}  r   r"   r£   rõ   rˆ  r=   rð   Úget_indexes)rU   r~  ré  rÖ   Útbl_namer«  ÚixsÚix_colsÚix_nameÚix_inforð   rƒ  rî  s                r-   Útest_to_sql_save_indexr  J  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)rr  rz   r   ru   )r|  r=   rv   r!   rH  rL   )rU   r~  ré  rW   rv   r«  Útranss          r-   Útest_transactionsr  r  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  rz   r   ru   c                  ó   — e Zd Zy)ú1test_transaction_rollback.<locals>.DummyExceptionN)re  rf  rg  r+   r,   r-   ÚDummyExceptionr  ‘  s   „ Ør,   r  z/INSERT INTO test_trans (A,B) VALUES (1, 'blah')rŠ  zSELECT * FROM test_transrG   )r|  r!   rH  rw   r   rL   r=   rv   Ú	Exceptionr   rI  rª  )rU   r~  ré  r«  r  rW   rv   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)NrS  z(test does not support sqlite_str fixturer�  r   ru   r–   Útest_get_schema_create_tablers  FrÁ  )rä  r  r…  r†  r|  r=   rv   r˜   r—   r   rÓ  r³   rw   r™   ri   rL   r#   r¸   ró  )
rU   r~  rç   rv   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)NrS  rx  r   )r}   r4   ©r3   rÙ   rÚ   ©gš™™™™™é?T©gÍÌÌÌÌÌì?Nrâ   Ú
dtype_testr˜  rH   Údtype_test2©r£   rn   r?   rd   z&The type of B is not a SQLAlchemy typer¶  rŠ  Údtype_test3é
   Úsingle_dtype_test)r  r�  r|  r=   r}   r4   Úsqlalchemy.schemar3   r   r}  ÚreflectÚtablesrº   r´   rw   r·  r¸  rÂ   rÌ  )rU   r~  r}   r4   r3   r  rË   rÖ   ÚmetaÚsqltyperš  ÚsqltypeaÚsqltypebs                r-   Ú
test_dtyper2  Ê  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 )NrS  rx  r   )r~   r   r2   r€   r"  TéÜ  r°   rG   rç  rŠ  rÚ  ©ÚBoolÚDateÚIntr2   Únotna_dtype_testr˜  rH   rd   r&   r6  r7  r8  r2   )r  r�  r|  r=   r~   r   r2   r€   r+  r3   r   r   r   r}  r   r#   r,  r-  rº   rw   r´   )rU   r~  ré  r~   r   r2   r€   r3   r  rÖ   r  rî  r.  Úmy_typeÚcol_dicts                  r-   Útest_notna_dtyper<  ô  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 )NrS  rx  r   )Ú
BigIntegerr2   r€   r"  gñYÉBÊÀó?rú  rŠ  Úfloat64r°   r�  rÔ   )Úf32Úf64Ú
f64_as_f32Úi32rª  Útest_dtypesFr“  rB  é   )Ú	precision)r£   rn   r®   r{  r?   rG   rA  é   rd   r@  rC  rª  )r  r�  r|  r=   r>  r2   r€   r+  r3   r   r   r}  r   r#   r¶   Úroundr³   r,  r-  rº   rÂ   r´   rw   )rU   r~  r>  r2   r€   r3   ÚVrÖ   rû  r.  r;  s              r-   Útest_double_precisionrJ    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_datars  )r   r"   )rþ  rÔ  s     r-   Útest_selectz3test_connectable_issue_example.<locals>.test_selectU  s   € Ø9ˆÜ×!Ñ! %¨ZÔ8Ð8r,   c                ó,   — |j                  d| d¬«       y )NÚtest_foo_datarõ   )r£   rn   r{  )r}  )rþ  rË   s     r-   Útest_appendz3test_connectable_issue_example.<locals>.test_appendY  s   € Ø�‰˜¨jÀHˆÕMr,   c                ó(   •—  ‰| «      } ‰| |«       y r  r+   )rU   Úfoo_datarP  rM  s     €€r-   Útest_connectablez8test_connectable_issue_example.<locals>.test_connectable\  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  )rw   r™   ri   )ÚconnectablerU   r—   rS  s     €€r-   Úmainz,test_connectable_issue_example.<locals>.mainb  se   ø€ Ü�k 6Ô*Ø×$Ñ$Ó&ð +¨$Ø—Z‘Z“\ñ +Ù$ TÔ*÷+÷+ð +ñ ˜[Õ)÷+ð +ú÷+ð +ús!   žA¯	A¸AÁA	ÁAÁA'rO  r  r˜  rI   )r|  r˜   r—   r   r}  )rU   r~  rV  r—   rP  rS  rM  s      @@@@r-   Útest_connectable_issue_examplerW  M  sh   û€ à×"Ñ" 4Ó(€Dõ )ò9òNõ$õ*ô 	�?¢IÐ.Ó/×6Ñ6¸OÐQUÐ6ÓVØò	ðð	ñ 	ˆ…Jr,   Úinputr—  Úbar)r—  Úinfe0c                óˆ  — t        |«      }| }|j                  | «      } d|v rOd}t        j                  t        j
                  j                  |¬«      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&   úExecution failed on sqlr¶  ÚfoobarFrò  rG   )r   r|  r  r·  r”  rt   rk  r}  r   r#   r¸   Úassert_equal)rU   r~  rX  rÖ   ré  rš  rû  s          r-   Útest_to_sql_with_negative_npinfr_  q  sµ   € ô 
�5Ó	€BØ€IØ×"Ñ" 4Ó(€Dà�)Ñð (ˆÜ�]‰]œ2Ÿ9™9×2Ñ2¸#Ô>ñ 	<Ø�I‰I˜8¨°UˆIÔ;÷	<ð 	<ð �y‰y˜h¨D¸ˆyÓ>À!ÒCÐCÐCÜ× Ñ  ¨4Ó0ˆÜ
�‰˜˜CÕ ÷	<ð 	<ús   ÁB8Â8C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)NrS  z&test does not work with str connectionr   )r0   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)re  rf  rg  Ú__tablename__Ú__table_args__Úidrd  )r0   r€   ra  s   €€€r-   Ú	Temporaryrf     s0   ø„ Ø#ˆØ$ { mÐ4ˆÚ‘G¨Ô.ˆÚ’g˜b“k¨EÔ2‰r,   rp  )rd  )r   rn   )r  r�  r|  r=   r0   r€   ra  rÉ  Úsqlalchemy.ormrb  rc  r   ri   rþ  Ú	__table__rk   ÚaddÚflushr   r"   rd  r¸   ró  )rU   r~  rÉ  rb  rc  r,  r  ÚBaserp  ÚsessionrÖ   r0   r€   ra  s              @@@r-   Útest_temporary_tablerw  Š  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)
Nrr  rz   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}  )rU   r~  rå   rš  r«  s        r-   Útest_invalid_enginer{  °  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å   Úautorz  rJ   N)r|  r!   rH  r}  r©  rª  rÈ   r]  s         r-   Útest_to_sql_with_sql_enginer~  À  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å   rJ   ©	r|  r”  Úoption_contextr!   rH  r}  r©  rª  rÈ   r]  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€  r}  rå   rJ   r�  r]  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€  r}  )r  r  rw   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Ú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)Nry  Fr“  ©r£   rn   r®   r{  úmode.string_storageúSelect * from ©Údtype_backendrz   z(adbc does not support chunksize argumentr�  rI   )rn   r�  rÆ  )r|  r}  r”  r‚  r`  r¸   ró  rä  r  r…  r†  ©rU   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%   rz   zhSQLite actually returns proper boolean values via read_sql_table, but before pytest refactor was skippedr�  ry  Fr“  r‹  rŒ  rŽ  rI   )r�  rÆ  )rä  r  r…  r†  r|  r}  r”  r‚  r`  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)	Nry  Fr“  r‹  zPdtype_backend numpy is invalid, only 'numpy_nullable' and 'pyarrow' are allowed.r¶  ÚnumpyrŽ  )r|  r}  r  r·  r¸  r`  r”  )rU   r~  r‰  r’  rü   rÖ   rš  s          r-   Ú)test_read_sql_invalid_dtype_backend_tablerš  V  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 )NrG   rI   r4  rŠ  rì  r¼  ç      @ÚFloat64©r¼  r{  rœ  )TFN©TFTr  ©r�  rñ  N©r�  rñ  r÷   ÚdÚeÚfÚgÚh)r   r   r”  ÚNAr+   r,   r-   r’  r’  f  s]   € ää˜œBŸE™E 1˜¨WÔ5Üš	¨Ô1Ü˜œbŸe™e SÐ)°Ô;Üš¨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 )Nr7  rG   rI   r4  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§  Úpandas.arraysr«  rº   r•  r¥   )r‘  r�  ré  r  Ústring_dtyperÖ   r«  ru  s           r-   r‰  z$dtype_backend_expected.<locals>.funcx  sq  € à˜IÒ%Ü×$Ñ$ YÓ/ˆBÜŸ=™=¨¯©«Ó5‰LäŸ>™>¨.Ó9ˆLää˜Q¤§¡ q˜M°Ô9ÜšI¨WÔ5Ü˜S¤"§%¡%¨Ð-°YÔ?Üš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©rc  r   r+   )r‰  s    r-   r“  r“  v  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 )Nrz   rÙ  r�  rÔ   rç  rð  r�  rñ  râ   ry  Fr“  r‹  zSELECT * FROM testrG   )r?   rÆ  )rƒ  r„  r  r…  r†  r|  r   r¥   rù  r}  r"   r¸   ró  )rU   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 )Nry  rì  r°   rð  Fr“  r‹  r�  r�  )r?   r�  rŠ  )r°   r°   r°   r­  rÔ   r4  )
r|  r   r}  r`  r”  r¶   r?  r   r¸   ró  )rU   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                óÜ   — | }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�  rG   rH   rÔ   rŠ  Útest_bigintwarningFrò  )r   r}  r¸   r˜  r   r#   ©rU  rU   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)NrG   rH   rI   rJ   ©r  r  zEmpty table name specifiedr¶  r�  r“  Frz  )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   ©r0   r€   r4   )rc  Ú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§  Trj  é2   N)re  rf  rg  rm  ro  Ústring_columnr¿  s   €€€r-   ÚTestrÂ  ø  s"   ø„ Ø$ˆÚ‘G¨Ô.ˆÚšv b›zÓ*‰r,   rÅ  rd   rG   ÚhelloÚworld)ro  rÄ  r§  Fr“  r‹  rH   ro  rÄ  )r=   r0   r€   r4   rq  rc  rÀ  ri   r@   Ú
create_allr   r}  rT   rÔ  ro  rÄ  r"  rº   )rU  rU   rc  rÀ  Ú	BaseModelrÅ  rb  rv  rÖ   Ú
test_queryr0   r€   r4   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)Nry  r�  ÚxÚyFr“  )rn   r®   r{  zfuture.infer_stringT)Úna_valuerŠ  )r?   rº   )r   r}  r”  r‚  r#   r¯  r¶   r  r   r¸   ró  )rU  rU   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…  é   zdatetime64[ns]rŠ  ry  r“  Fr�  úselect * from test©r   r   z2020-12-31 12:00:00.000000)r   r   r}  r”  r¾  r³   )rU  rU   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)Nrm  )Údetect_types)rn  ro  rx   r™   ÚPARSE_DECLTYPESrp  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Û  rU   rÖ   r  s       r-   Ú)test_roundtripping_datetimes_detect_typesrÝ  1  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)NrG   rH   rî  r¬   r�  r	  r
  z$DROP SCHEMA IF EXISTS other CASCADE;zCREATE SCHEMA other;Útest_schema_publicFrò  Útest_schema_public_explicitr*  )r£   rn   r®   rû   Útest_schema_otherÚotherr+  z!Table test_schema_other not foundr¶  )r£   rn   rû   r®   r“  )r£   rn   rû   r®   r{  rõ   Trè  )r   r™   ri   rÃ   r}  r   r#   r¸   ró  r  r·  r¸  r   )
r.  rU   rÖ   rn   rö  r÷  rñ  Úres4rš  rû  s
             r-   Útest_psycopg2_schema_supporträ  :  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  ¬«      }|d   j                  d«      |d<   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   ru   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;rG   Ú2021rŸ   r    rH   ro  Ú
created_dtrâ   r¤   Tr¥  Úperson)r!  rv   r™   ri   rL   r”  r¾  r   r   r¥   r¸   ró  r   r   r  )	r.  rU   rv   r?  rn   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ð & lÑ3×:Ñ:¸=ÓI€Hˆ\ÑÜ×Ñ˜& (Ô+ô 
�‰˜°Ô	5ð '¸Ø×Ñ˜XÔ&÷'ð '÷	&ð 	&ú÷&ð &ú÷'ð 'ús.   ¡C:²C.ÁC:ÃDÃ.C7	Ã3C:Ã:DÄD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)Nry  r~  r  Údrop_test_framerJ   )r   r   r   rH  r}  r©  r  )rU  rU   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á  rG   rH   r�  râ   râ  Frò  zSELECT * FROM test_date)r   r   r}  r"   r¸   ró  r¥   rÂ   )rr  rU   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   rG   ræ  r¸  rH   r¹  )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ï  rr  rU   Ú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)rL   r¸  )
rU   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˜  rH   r&  ÚSTRINGr'  rÜ  z!B \(<class 'bool'>\) not a stringr¶  rŠ  r*  )r   r}  r   r  r·  r¸  Úbool)rr  rU   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 )NTr4  r°   rG   rç  rŠ  rÚ  r5  r9  r˜  rH   r6  rÜ  r7  r  r8  r2   ÚREAL)r   r   r   r}  r   )rr  rU   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)NrG   rH   rI   rJ   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)rr  rU   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_ÚbytesrQ   rj  r´   r?  r  rw   r   rõ   rH  )r   r\  Ú_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!   rL   rñ   r"  )rÔ  rn   r}  rû  s       r-   Útqueryr  =  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 )NrH   ©r)  rJ   ÚABCDú
2000-01-01r)  rÚ   ©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ù  rl  rÔ   r£   )rr  r¼   r  r  Úframe2Únew_idxs         r-   Útest_xsqlite_basicr(  D  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 )NrH   r  r   r!  r)  rÚ   r"  r¿  rÖ  ry  z(INSERT INTO test VALUES (%s, %s, %s, %s)rs  rÕ  gü©ñÒMbP?)Úrtol)r   r¶   rê  rë  rì  r   r"  r   r  r³   r   rÓ  rK   rL   Úiterrowsr  r  rT   r¾  r®   r¸   ró  )	rr  r¼   r#  rX   Úinsrî  r[   Úfmt_sqlr  s	            r-   Útest_xsqlite_write_row_by_rowr.  _  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)NrH   r  r   r!  r)  rÚ   r"  r¿  ry  z$INSERT INTO test VALUES (?, ?, ?, ?)r   rÕ  rG   )r   r¶   rê  rë  rì  r   r"  r   r   rÓ  rK   rL   r³   r!   rH  rT   r¾  r®   r¸   ró  )rr  r¼   r#  rX   r,  r[   r}  r  s           r-   Útest_xsqlite_executer0  v  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 )NrH   r  r   r!  r)  rÚ   r"  r¿  ry  ú r   rÙ   rG   ÚDATETIME)rÕ   zPRIMARY KEY ("A", "B"))r   r¶   rê  rë  rì  r   r"  r   r   rÓ  Ú
splitlinesrs  rª  rK   rL   )rr  r¼   r#  ÚlinesÚlineÚtokensrX   s          r-   Útest_xsqlite_schemar8  ‹  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)r\  r¶  z(INSERT INTO test VALUES('foo', 'bar', 7))rK   rL   r   r!   r  r·  rk  )rr  r#  rX   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)Nr:  rm  r;  z$Cannot operate on a closed database.r¶  rÕ  rs  )rn  ro  rx   r™   rK   rL   r   r!   r  r·  rB  r  )r#  rU   rX   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©rn   r£   r®   )r   r¶   Úonesr   r}  )rr  rÖ   s     r-   Ú$test_xsqlite_keyword_as_column_namesrD  Ê  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 )NrG   rH   Úc0râ   Úmono_dfFrB  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_dfrI   )r   r   r}  ÚsumrL   r¾  r¸   ró  )rr  rG  Úcon_xÚthe_sumr  s        r-   Ú!test_xsqlite_onecolumn_of_integerrO  Ï  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)NrG   rH   rÙ   rÚ   r¼  rO  )rÛ   rÜ   ÚEÚtable_if_existsr�  z*'notvalidvalue' is not valid for if_existsr¶  Únotvalidvalue)r¼   rn   r£   r{  r¯  z&Table 'table_if_exists' already existsr“  F)r¼   rn   r£   r{  r®   rs  rÞ  r  rI   )©rI   rÛ   ©rJ   rÜ   ©r°   rQ  rõ   )rÞ  r  rT  rU  rV  )r   r  r·  r¸  r   r}  r  r  )rr  Údf_if_exists_1Údf_if_exists_2rÆ   Ú
sql_selectrš  s         r-   Útest_xsqlite_if_existsrZ  ß  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)rV   r   )r‹   rÂ   )r�   ú
list[dict])r�   r[  r‹   rÂ   )r¼   r   )rÆ   rÂ   )rÆ   rÂ   rU   úLsqlite3.Connection | sqlalchemy.engine.Engine | sqlalchemy.engine.Connection)rý   rÂ   rU   r\  r²  r  (*  Ú
__future__r   rn  rN   r   r   r   r   Údecimalr   rÊ   r	   Úpathlibr   rx   Útypingr   r9  r™  r¶   r  Úpandas._configr   Úpandas._libsr   Úpandas.compatr   Úpandas.compat._optionalr   Úpandas.util._test_decoratorsÚutilÚ_test_decoratorsÚtdÚpandasr”  r   r   r   r   r   r   r   r   r   r   Úpandas._testingÚ_testingr¸   Úpandas.util.versionr   Ú	pandas.ior   Úpandas.io.sqlr   r   r   r    r!   r"   r#   r=   r…  ÚfilterwarningsÚ
single_cpuÚ
pytestmarkÚfixturer.   rA   r\   r^   ro   r{   rŽ   r’   r”   rš   r¨   r¾   rÈ   rÍ   r�   r×   rå   rç   rþ   r  r  r  r  r  r   r#  r&  r(  r.  r0  r3  r5  r<  rE  rK  rM  rO  rS  rU  rW  rY  r[  r]  r_  ra  rc  rf  rh  rk  rr  rt  rv  Ú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.  r3  r=  rB  rD  rK  rM  rO  rQ  rU  rW  rZ  r`  rc  rh  rp  rx  rz  r  r‰  r¾  r�  r”  rž  r¡  r¬  r¶  rÄ  rj  rQ   rË  rÎ  rÕ  rØ  rÞ  rã  rò  rü  r   r  r	  r  r  r  r  r  r&  r?   r£   r7  r;  r>  Úskip_if_installedrB  rH  rM  rQ  rT  rV  ri  rl  rn  rv  r„  rˆ  r‹  r•  rš  rœ  rž  r¢  r¥  r¨  r«  r®  r±  r³  r¶  rÄ  rÈ  rÒ  rÖ  rÙ  rß  rã  rô  rû  rÿ  r  r  r  r  r  r  r2  r<  rJ  rW  Úinfr_  rw  r{  r~  rƒ  r†  rˆ  r•  r—  rš  r’  r“  r´  Ú
no_defaultr¶  rº  r½  rË  rÐ  r×  rÛ  rÝ  rä  ré  rì  rî  r÷  r   r  r  r  r  r  r(  r.  r0  r8  r<  r>  rD  rO  rZ  r+   r,   r-   ú<module>rŠ     sÙ  ðÝ "ã Û 
÷ó õ Ý Ý Û Ý  Û ã Û å -å Ý .Ý >ß )Ð )ã ÷÷ ÷ õ Ý 'å ÷÷ ñ ñ Ûð ‡K�K×ÑØGóð ‡K�K×Ñð	€
ð ‡�ñó ðò8ô2ôDô>ò "ô&ôDô<ô2ò(*Mô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Ð(°·±·±Ô?ØðÐ ð QÐ*ÐPÐ,<ÐPÐ?OÐP€ðØ ðàðð ðÐ ðØ!ðàðð ðÐ ð ‡�×Ò˜ Ó1ñOó 2ðOð ‡�×Ò˜ Ó1ñLó 2ðLð ‡�×Ò˜ Ó1ñQó 2ðQðB ‡�×Ò˜ Ó1ñMó 2ðMð( ‡�×Ò˜ Ó1Ø‡�×Ò˜ D¨' ?Ó3ñ>ó 4ó 2ð>ð ‡�×Ò˜ Ó1Ø‡�×ÒØÒMóñMóó 2ðMð ‡�×Ò˜ Ó1ñJó 2ðJð ‡�×Ò˜Ð!5Ó6ñ.ó 7ð.ð ‡�×Ò˜Ð!5Ó6ñ.ó 7ð.ð$ ‡�×Ò˜Ð!<Ó=ñó >ðð6 ‡�×Ò˜Ð!5Ó6ñ!ó 7ð!ð& ‡�×Ò˜Ð!<Ó=ñ!ó >ð!ð ‡�×Ò˜Ð!<Ó=ñ	!ó >ð	!ð ‡�×Ò˜Ð!7Ó8ñ>ó 9ð>ð" ‡�×Ò˜Ð!6Ó7ñFó 8ðFð> ‡�×Ò˜Ð!2Ó3ñ!$ó 4ð!$ðH ‡�×Ò˜Ð!7Ó8Ø‡�×ÒÐ)¨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=ð ‡�×Ò˜Ð!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Ø‡�×Ò˜ 7¨HÐ"5Ó6Ø‡�×ÒØà	�ŠÐ,Ð.HÐIØ	�Š�w Ð/à×ÑØ!Ø&ð	
ð
 
×	Ñ	˜W |Ð5ð	óñ!,óó 7ó 8ð!,ðH ‡�×Ò˜Ð!6Ó7ñ?ó 8ð?ð ‡�×Ò˜ Ó1ñ+4ó 2ð+4ð\ ‡�×Ò˜ Ó1ñ
;ó 2ð
;ð ‡�×Ò˜ Ó1Ø‡�×ÒØ%òóñ"(ó#ó 2ð$(ð$ ‡�×Ò˜ Ó1ñF
ó 2ðF
ðR ‡�×Ò˜ Ó1ñ=ó 2ð=ð& ‡�×Ò˜ Ó1Ø‡�×ÒØàØØØ˜Ñð	óñ,óó 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ò4ð& €×Ò�hÓñ4ó  ð4ð ‡�×Ò˜Ð!<Ó=ñ,ó >ð,ð ‡�×Ò˜Ð!<Ó=ñ(ó >ð(ð ‡�×Ò˜ Ó1ñ#ó 2ð#ò
/ð €×Ò�lÓ#ñ1ó $ð1ð €×Ò�lÓ#ñ+ó $ð+ò #ò"ò1ð$ ‡�×Ò˜Ð!7Ó8ñ+ó 9ð+ð( ‡�×Ò˜Ð!7Ó8ñ0ó 9ð0ð2 ‡�×Ò˜ oÓ6ñ/ó 7ð/ð ‡�×Ò˜ oÓ6ñ!:ó 7ð!:ðH ‡�×Ò˜ Ó1ñ/ó 2ð/ð* ‡�×Ò˜Ð!5Ó6ñ<ó 7ð<ð ‡�×Ò˜Ð!<Ó=ñ!ó >ð!ð ‡�×Ò˜Ð!<Ó=ñXó >ðXð ‡�×Ò˜Ð!<Ó=ñ:ó >ð:ð ‡�×Ò˜Ð!=Ó>ñ=ó ?ð=ð, ‡�×Ò˜Ð!7Ó8ñ&ó 9ð&ð ‡�×Ò˜Ð!=Ó>ñ<ó ?ð<ð ‡�×Ò˜Ð!7Ó8Ø‡�×Ò˜¨°Ð/@Ð(AÓBñ
*ó Có 9ð
*ð ‡�×Ò˜Ð!7Ó8ñ	*ó 9ð	*ð ‡�×Ò˜Ð!7Ó8ñ-ó 9ð-ð ‡�×Ò˜Ð!7Ó8ñ,ó 9ð,ð< ‡�×Ò˜Ð!7Ó8ñ	,ó 9ð	,ð ‡�×Ò˜Ð!7Ó8ñ	?ó 9ð	?ð ‡�×Ò˜Ð!=Ó>ñ?ó ?ð?ð> ‡�×Ò˜Ð!7Ó8ñ,ó 9ð,ð2 ‡�×Ò˜Ð!7Ó8ñ,ó 9ð,ð0 ‡�×Ò˜Ð!7Ó8ñ	-ó 9ð	-ð ‡�×Ò˜Ð!7Ó8ñ#ó 9ð#ð4 ‡�×Ò˜Ð!7Ó8ñHó 9ðHð ‡�×Ò˜Ð!7Ó8ñ&ó 9ð&ð ‡�×Ò˜Ð!7Ó8ñ&ó 9ð&ð" ‡�×Ò˜Ð!7Ó8ñ&ó 9ð&ð$ ‡�×Ò˜ Ó1ñ$ó 2ð$ðN ‡�×Ò˜ Ó1ñ ó 2ð ð ‡�×Ò˜ Ó1ñ&ó 2ð&ðR ‡�×Ò˜Ð!7Ó8ñNó 9ðNð: ‡�×Ò˜Ð!7Ó8ñ&&ó 9ð&&ðR ‡�×Ò˜Ð!7Ó8ñ!5ó 9ð!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ñ
!ð( ‡�×Ò˜Ð!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 ‡�‡�ò!'ó ñ!'ôH:ô/ð ‡�×Ò™¡e©T ]Ó3ò)ó 4ñ)ô$BôNô,@ô&&ô@'ö..ô,ô64ô.-ô*ô(Kô*/ô,Uô
+õ O+r,   