Ë
    u™ãjÿ[ ã                  ó|6  — 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Zd dlmZ d dlZd dlm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( d dl)m*Z* d dl+m,Z, d dl-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4 erd dl5Z5ejl                  jo                  d«      ejl                  jp                  gZ9ejt                  d„ «       Z;d„ Z<�dFd„Z=�dFd„Z>�dFd„Z?d„ Z@�dGd„ZA�dHd„ZB�dHd„ZC�dId„ZDd„ ZE�dJd„ZF�dKd„ZGejt                  d„ «       ZHejt                  d„ «       ZIejt                  d „ «       ZJejt                  d!„ «       ZKejt                  d"„ «       ZLd#„ ZMd$„ ZN	 	 	 	 �dLd&„ZO	 	 	 	 �dMd'„ZP�dNd(„ZQ ejt                  d)¬*«      d+„ «       ZRejt                  d,„ «       ZSejt                  d-„ «       ZTejt                  d.„ «       ZUejt                  d/„ «       ZVejt                  d0„ «       ZWejt                  d1„ «       ZX ejt                  d)¬*«      d2„ «       ZYejt                  d3„ «       ZZejt                  d4„ «       Z[ejt                  d5„ «       Z\ejt                  d6„ «       Z] ejt                  d)¬*«      d7„ «       Z^ejt                  d8„ «       Z_ejt                  d9„ «       Z`ejt                  d:„ «       Zaejt                  d;„ «       Zbejt                  d<„ «       Zcejt                  d=„ «       Zdejt                  d>„ «       Zeejt                  d?„ «       Zfejt                  d@„ «       Zgejt                  dA„ «       Zhejt                  dB„ «       Ziejt                  dC„ «       Zjejt                  dD„ «       Zkejt                  dE„ «       Zlejt                  dF„ «       Zmejt                  dG„ «       Znejt                  dH„ «       Zoejt                  dI„ «       Zpejt                  dJ„ «       Zqejt                  dK„ «       Zr ejæ                  dLejl                  jè                  ¬M«       ejæ                  dNejl                  jè                  ¬M«      gZu ejæ                  dOejl                  jè                  ¬M«       ejæ                  dPejl                  jè                  ¬M«      gZv ejæ                  dQejl                  jè                  ¬M«       ejæ                  dRejl                  jè                  ¬M«      gZw ejæ                  dSejl                  jè                  ¬M«       ejæ                  dTejl                  jè                  ¬M«      gZx ejæ                  dUejl                  jè                  ¬M«       ejæ                  dVejl                  jè                  ¬M«      gZy ejæ                  dWejl                  jè                  ¬M«       ejæ                  dXejl                  jè                  ¬M«      gZzg dY¢Z{g dZ¢Z|g d[¢Z}euexz   e{z   Z~eveyz   e|z   Zewezz   e}z   Z€d\ ejæ                  d]ejl                  jè                  ¬M«      gZ� ejæ                  d^ejl                  jè                  ¬M«      d_gZ‚ ejæ                  d`ejl                  jè                  ¬M«      dagZƒg e~¢db‘e�¢Z„g e¢dc‘e‚¢Z…g e€¢dd‘eƒ¢Z†ejl                  �j                  d%e„«      de„ «       Zˆejl                  �j                  d%e„«      df„ «       Z‰ejl                  �j                  d%e„«      dg„ «       ZŠejl                  �j                  d%e„«      dh„ «       Z‹ejl                  �j                  d%e„«      ejl                  �j                  diddjg«      dk„ «       «       ZŒejl                  �j                  d%e„«      ejl                  �j                  dlg dm¢«      dn„ «       «       Z�ejl                  �j                  d%e„«      do„ «       ZŽejl                  �j                  d%e…«      dp„ «       Z�ejl                  �j                  d%e…«      dq„ «       Z�ejl                  �j                  d%e«      dr„ «       Z‘ejl                  �j                  d%e…«      ds„ «       Z’ejl                  �j                  d%e«      dt„ «       Z“ejl                  �j                  d%e«      du„ «       Z”ejl                  �j                  d%e~«      dv„ «       Z•ejl                  �j                  d%e†«      dw„ «       Z–ejl                  �j                  d%eu«      dx„ «       Z—ejl                  �j                  d%ex«      ejl                  �j                  dydzd{g«      d|„ «       «       Z˜ejl                  �j                  d%ex«      d}„ «       Z™ejl                  �j                  d%e„«      d~„ «       Zšejl                  �j                  d%eu«      d„ «       Z›ejl                  �j                  d%ex«      d€„ «       Zœd�„ Z�d‚„ Zždƒ„ ZŸejl                  �j                  d%e…«      d„„ «       Z ejl                  �j                  d%e~«      d…„ «       Z¡ejl                  �j                  d%e…«      d†„ «       Z¢ejl                  �j                  d%e…«      d‡„ «       Z£ejl                  �j                  d%e…«      dˆ„ «       Z¤ejl                  �j                  d%e…«      d‰„ «       Z¥ejl                  �j                  d%e„«      dŠ„ «       Z¦ejl                  �j                  d%e„«      d‹„ «       Z§ejl                  �j                  d%e„«      dŒ„ «       Z¨ejl                  �j                  d%e„«      d�„ «       Z©ejl                  �j                  d%e„«      dŽ„ «       Zªejl                  �j                  d%e„«      d�„ «       Z«ejl                  �j                  d%e„«      d�„ «       Z¬ejl                  �j                  d%e„«      d‘„ «       Z­ejl                  �j                  d%e…«      d’„ «       Z®ejl                  �j                  d%e†«      d“„ «       Z¯ejl                  �j                  d%e†«      d”„ «       Z°ejl                  �j                  d%e†«      d•„ «       Z±ejl                  �j                  d%e†«      ejl                  �j                  d–d—d˜g«      ejl                  �j                  d™e,�jd                  dšd›fe,�jd                  dœd�fe,jf                  dšd›fe,jh                  dœd�fg«      dž„ «       «       «       Z³ejl                  �j                  d%e†«      dŸ„ «       Z´ejl                  �j                  d%e„«      d „ «       Zµejl                  �j                  d%e„«      d¡„ «       Z¶ejl                  �j                  d%e„«      ejl                  �j                  d¢g d£¢«      d¤„ «       «       Z·ejl                  �j                  d%e„«      d¥„ «       Z¸ejl                  �j                  d%e„«      d¦„ «       Z¹ejl                  �j                  d%e„«      ejl                  �j                  d§deºe»eºe»d¨œg«      d©„ «       «       Z¼ejl                  �j                  d%e„«      dª„ «       Z½ejl                  �j                  d%e„«      d«„ «       Z¾ejl                  �j                  d%e„«      d¬„ «       Z¿ejl                  �j                  d%e„«      d­„ «       ZÀejl                  �j                  d%e„«      d®„ «       ZÁejl                  �j                  d%e„«      d¯„ «       ZÂejl                  �j                  d%e„«      d°„ «       ZÃejl                  �j                  d%e„«      d±„ «       ZÄejl                  �j                  d%e„«      d²„ «       ZÅejl                  �j                  d%e„«      d³„ «       ZÆejl                  �j                  d%e„«      d´„ «       ZÇejl                  �j                  d%e„«      dµ„ «       ZÈejl                  �j                  d%e„«      d¶„ «       ZÉejl                  �j                  d%e…«      d·„ «       ZÊd¸„ ZËejl                  �j                  d%e„«      d¹„ «       ZÌejl                  �j                  d%e~«      dº„ «       ZÍejl                  �j                  d%e~«      ejl                  �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jl                  �j                  d%e~«      ejl                  �j                  dÎdÏdÐg«      dÑ„ «       «       ZÑdÒ„ ZÒ e#�j¦                  dÓ«      dÔ„ «       ZÔejl                  �j                  d%e«      dÕ„ «       ZÕejl                  �j                  d%e«      dÖ„ «       ZÖejl                  �j                  d%e„«      d×„ «       Z×dØ„ ZØ e#�j¦                  d�«      dÙ„ «       ZÙ e#�j¦                  d�«      dÚ„ «       ZÚdÛ„ ZÛdÜ„ ZÜdÝ„ ZÝejl                  �j                  d%e~«      dÞ„ «       ZÞejl                  �j                  d%e~«      dß„ «       Zßejl                  �j                  dàe„«      dá„ «       Zàejl                  �j                  dàe„«      dâ„ «       Záejl                  �j                  d%e„«      dã„ «       Zâejl                  �j                  d%e…«      dä„ «       Zãejl                  �j                  d%e«      då„ «       Zäejl                  �j                  d%e«      dæ„ «       Zåejl                  �j                  d%e«      dç„ «       Zæejl                  �j                  d%e€«      dè„ «       Zçejl                  �j                  d%e~«      dé„ «       Zèejl                  �j                  d%e€«      dê„ «       Zéejl                  �j                  d%ex«      ejl                  �j                  dëddìgg«      dí„ «       «       Zêejl                  �j                  d%ex«      dî„ «       Zëejl                  �j                  d%ex«      dï„ «       Zìejl                  �j                  d%e~«      dð„ «       Zíejl                  �j                  d%e~«      dñ„ «       Zîejl                  �j                  d%e~«      dò„ «       Zïejl                  �j                  d%e€«      dó„ «       Zðejl                  �j                  d%e~«      dô„ «       Zñejl                  �j                  d%e~«      dõ„ «       Zòejl                  �j                  d%e~«      dö„ «       Zóejl                  �j                  d%e~«      d÷„ «       Zôejl                  �j                  d%e~«      dø„ «       Zõejl                  �j                  d%e~«      dù„ «       Zöejl                  �j                  d%e~«      dú„ «       Z÷ejl                  �j                  d%e~«      dû„ «       Zøejl                  �j                  d%e„«      dü„ «       Zùejl                  �j                  d%e„«      dý„ «       Zúejl                  �j                  d%e„«      dþ„ «       Zûejl                  �j                  d%e~«      dÿ„ «       Züejl                  �j                  d%e~«      �d „ «       Zýejl                  �j                  d%e~«      �d„ «       Zþejl                  �j                  d%e~«      �d„ «       Zÿ�d„ �Z ejl                  �j                  d%e~«      �d„ «       �Zejl                  �j                  d%e~«      ejl                  �j                  �d�de�j                  gi�de�j                   gie�j                   g�dg�dœg«      �d	„ «       «       �Zejl                  �j                  d%e~«      �d
„ «       �Zejl                  �j                  d%e„«      �d„ «       �Zejl                  �j                  d%e„«      �d„ «       �Zejl                  �j                  d%e~«      �d„ «       �Zejl                  �j                  d%e„«      �d„ «       �Z�d„ �Z	ejl                  �j                  d%e„«      ejl                  �j                  �d�d�dg«      �d„ «       «       �Z
ejl                  �j                  d%e„«      ejl                  �j                  �d�d�dg«      �d„ «       «       �Zejl                  �j                  d%e„«      ejl                  �j                  �dg �d¢«      �d„ «       «       �Zejt                  �dO�d„«       �Zejt                  �d„ «       �Zejl                  �j                  d%e„«      �d„ «       �Zejl                  �j                  d%e„«      ejl                  �j                  �de�j                   �dg«      ejl                  �j                  �d�d�dg«      �d„ «       «       «       �Z�d„ �Z�d„ �Zejl                  �j                  �d �d!�d"g�d#�d"ig«      �d$„ «       �Z�d%„ �Z�d&„ �Z�d'„ �Zejt                  �d(„ «       �Z�d)„ �Zejl                  jè                  �d*„ «       �Zejl                  jè                  �d+„ «       �Z�d,„ �Z�d-„ �Zejl                  �j                  �d.�d/�d0g«      �d1„ «       �Z�d2„ �Z�d3„ �Z �d4„ �Z!�d5„ �Z"�d6„ �Z#�dP�d7„�Z$�d8„ �Z%�d9„ �Z&�d:„ �Z'�d;„ �Z(�d<„ �Z)�d=„ �Z*�d>„ �Z+�d?„ �Z,�d@„ �Z-ejl                  �j                  �dAd�d"g«      �dB„ «       �Z.�dC„ �Z/ejl                  jè                  �dD„ «       �Z0ejl                  jè                  �dE„ «       �Z1y(Q  é    )ÚannotationsN)ÚdateÚdatetimeÚtimeÚ	timedelta)ÚDecimal)ÚStringIO©ÚPath)ÚSimpleNamespace)ÚTYPE_CHECKING)Úusing_string_dtype)Úlib)Úimport_optional_dependency)ÚPandas4Warning)Ú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"   ó    úc/var/www/html/python-recuperauto-other/env/lib/python3.12/site-packages/pandas/tests/io/test_sql.pyÚsql_stringsr%   9   sA   € ð JØNØSñ
ðððñ"
ð ?Ø?ØFñ,
ñ'ð r#   c                 óž   — ddl m} m}m}m}m}  |«       } |d| | d|«       | d|«       | d|«       | d|«       | d |d	«      «      «      }|S )
Nr   )ÚColumnÚDoubleÚMetaDataÚStringÚTableÚirisÚSepalLengthÚ
SepalWidthÚPetalLengthÚ
PetalWidthÚNameéÈ   )Ú
sqlalchemyr'   r(   r)   r*   r+   )r'   r(   r)   r*   r+   Úmetadatar,   s          r$   Úiris_table_metadatar5   V   sb   € ÷õ ñ ‹z€HÙØØÙˆ}˜fÓ%Ùˆ|˜VÓ$Ùˆ}˜fÓ%Ùˆ|˜VÓ$Ùˆ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ÚcsvfilerC   ÚrecordsÚrows           r$   Úcreate_and_load_iris_sqlite3rP   l   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
        )r7   r8   z+INSERT INTO iris VALUES($1, $2, $3, $4, $5)r   r;   r<   r=   r>   )	r?   r@   rA   rB   rC   rD   rE   rF   rH   )rI   rJ   rK   rL   rM   rC   rO   rN   s           r$   Úcreate_and_load_iris_postgresqlrR   Ž   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        ||d¬«      «      ‘Œ }} ||«      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   ©Úinsertr7   r8   T©Ústrict©Ú
checkfirst©Úbind)r3   rU   r5   rA   rB   rC   rD   ÚdictÚzipÚvaluesÚbeginÚdropÚcreater@   )rI   rJ   rU   r,   rM   rC   ÚheaderrO   ÚparamsrK   Úcons              r$   Úcreate_and_load_irisre   ­   sÕ   € Ý!äÓ €Dà	�‰ ¨wˆÓ	7ð ¸7Ü—‘˜GÓ$ˆÜ�f“ˆØAGÖH¸#”$”s˜6 3¨tÔ4Õ5ÐHˆÐHÙ�d‹|×"Ñ" 6Ó*ˆØ�Z‰Z‹\ð 	˜SØ�I‰I�c dˆIÔ+Ø�K‰K˜SˆKÔ!Ø�K‰K˜Ô÷	÷ð ùò I÷	ð 	ú÷ð ús5   ¤%C)Á	CÁ')C)Â7CÃC)ÃC)ÃC&	Ã"C)Ã)C2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Ú
Connectionr?   r@   r   rH   r3   rl   r_   )rI   rK   rL   Úadbcrl   rd   s         r$   Úcreate_and_load_iris_viewrq   ½   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ÚBooleanr'   ÚDateTimeÚFloatÚIntegerr)   r+   r   ÚtypesÚTextColÚDateColÚ
IntDateColÚIntDateOnlyColÚFloatColÚIntColÚBoolColÚIntColWithNullÚBoolColWithNull)	r3   rs   rt   r'   ru   rv   rw   r)   r+   )Údialectrs   rt   r'   ru   rv   rw   r)   r+   Ú	date_typeÚ	bool_typer4   rx   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(?, ?, ?, ?, ?, ?, ?, ?, ?)
                )rm   rn   ro   r?   r@   rF   rH   )rI   Ú
types_datarK   Úins_stmtrL   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)
                )r?   r@   rF   rH   )rI   r‡   rL   rK   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   rT   ©ÚEngineTrX   rZ   )r3   rU   Úsqlalchemy.enginerŽ   r…   r^   rm   Úconnectr_   r`   ra   r@   )rI   r‡   r‚   rU   rŽ   rx   rK   s          r$   Úcreate_and_load_typesr‘   )  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        j                   dd¬«      t        j                   dd¬«      g}t        j"                  |d¬«      j%                  d«      S # 1 sw Y   ŒµxY w# 1 sw Y   ŒixY w# 1 sw Y   ŒuxY w)Nr   )r'   ru   r)   r+   rU   r�   ÚdatetzÚDateColWithTzT)Útimezonez2000-01-01 00:00:00-08:00z2000-06-01 00:00:00-07:00rX   rZ   z2000-01-01 08:00:00ÚUTC©Útzz2000-06-01 07:00:00©ÚnameúM8[us, UTC])r3   r'   ru   r)   r+   rU   r�   rŽ   r^   rm   r�   r_   r`   ra   r@   ÚpdÚ	TimestampÚSeriesÚastype)rI   r'   ru   r)   r+   rU   rŽ   r4   r“   Údatetz_datarK   Úexpected_datas               r$   Úcreate_and_load_postgres_datetzr¢   =  sp  € ÷õ õ )á‹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˜Ô÷	ô 	�‰Ð*¨uÔ5Ü
�‰Ð*¨uÔ5ð€Mô �9‰9�]¨Ô9×@Ñ@ÀÓOÐO÷'#ð #ú÷	#ð 	#ú÷	ð 	ús0   Á/E7Â 7E+Â7E7Ã7FÅ+E4	Å0E7Å7F ÆFc                ó0  — | j                   j                  d   j                  }| j                  d   }t        |t        j
                  «      sJ ‚t        j                  |t        j                  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œ   rž   ÚcolumnsÚshape)ÚframeÚpytyperO   s      r$   Úcheck_iris_framer¸   j  sx   € Ø�\‰\×Ñ˜qÑ!×&Ñ&€FØ
�*‰*�Q‰-€CÜ�fœbŸk™kÔ*Ð*Ð*Ü×ÑØŒR�Y‰YÒ:À%Ç-Á-ÐVWÔXôð �;‰;Ð,Ñ,Ð,Ñ,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 rg   rh   ri   r   )Úcreate_enginer�   )r   rm   rn   ro   r?   r@   Úfetchoner3   rº   r�   rŽ   Ústrr�   Úexec_driver_sqlÚ
scalar_oneÚdispose)rI   Ú
table_namerK   rp   rL   rº   rŽ   Úengines           r$   Ú
count_rowsrÂ   t  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ÚdatarB   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$@r;   F©	ry   rz   r{   r|   r}   r~   r   r€   r�   ú2000-01-04 00:00:00i 'âPi\¸2r"   r"   r#   r$   r‡   r‡   –  sP   € ð Ø,Ø#Ø&ØØØØØ$ñ
	
ð Ø,Ø$Ø&ØØØØ"Ø#ñ
	
ðð r#   c           
     óˆ   — ddddddddddœ	}t        j                  | «      }||j                  «          j                  |«      S )Nr¼   Úint64rE   rË   )rœ   Ú	DataFrameÚkeysrŸ   )r‡   r¬   Údfs      r$   Útypes_data_framerÒ   ²  sR   € ð ØØØ!ØØØØ!Ø"ñ
€Fô 
�‰�jÓ	!€BØˆf�k‰k‹mÑ×#Ñ# FÓ+Ð+r#   c                 ó@   — g d¢} g d¢}t        j                  || ¬«      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´   rÅ   s     r$   Útest_frame1rà   Ã  s!   € â+€Gò€Dô< �<‰<˜ gÔ.Ð.r#   c                 ó@   — g d¢} g d¢}t        j                  || ¬«      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ô �<‰<˜ gÔ.Ð.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   rg   rh   ri   Úcatalog_nameÚcatalog_db_schemasÚdb_schema_nameÚdb_schema_tablesÚ
table_typeÚviewrÀ   ©Úinspect)rm   rn   ro   r@   Úfetchallr   Úadbc_get_objectsÚread_allÚ	to_pylistÚappendr3   rë   Úget_view_names)rI   Úcré   rp   Ú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   rg   rh   ri   rå   rç   rè   r÷   rÀ   rê   )rm   rn   ro   r@   rì   r   rí   rî   rï   rð   r3   rë   Úget_table_names)
rI   rò   r÷   rp   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rI   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 rg   rh   ri   zDROP TABLE IF EXISTS "ú")rm   rn   ro   r@   r   Ú_get_valid_sqlite_namerH   r   r?   r_   r   Ú
drop_table)rÀ   rI   rp   rL   rd   Údbs         r$   r   r   $  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 rg   rh   ri   zDROP VIEW IF EXISTS "rþ   )r3   rm   rn   ro   r@   r   rÿ   rH   r   r?   rÁ   r‚   Úidentifier_preparerÚquote_identifierrl   r_   )rø   rI   r3   rp   rL   Úquoted_viewrK   rd   s           r$   Ú	drop_viewr  7  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           	     ó8  — t         j                  j                  d«      ry	  |«       j                  «        y# t        $ rX}t        |«      j                  d«      d   }t        j                  d| › dt        |«      j                  › d|› �«       Y d}~yd}~ww xY w)a_  
    Skip the test if the database `name` is not reachable.

    Call this only from module-scoped fixtures, so that a failed connection is
    paid for once rather than for every parametrized test.

    On CI the databases are expected to be up, so we leave the connection error
    alone there instead of silently skipping the whole test suite.
    ÚCINú
r   zCould not connect to z database: z: )ÚosÚenvironÚgetrG   Ú	Exceptionr¼   ÚsplitÚpytestÚskipr®   Ú__name__)rš   r�   ÚerrÚ
first_lines       r$   Úskip_if_no_dbr  N  s�   € ô 
‡z�z‡~�~�dÔØð
Ù‹	�‰ÕøÜò 
ä˜“X—^‘^ DÓ)¨!Ñ,ˆ
Ü�‰Ø# D 6¨´T¸#³Y×5GÑ5GÐ4HÈÈ:È,ÐW÷	
ñ 	
ûð
ús   ¢8 ¸	BÁABÂBÚmodule)Úscopec               #  óF  K  — t        j                  d«      } t        j                  d«      } | j                  dd|j                  j                  j
                  i| j                  j                  ¬«      }t        d|j                  «       |–— |j                  «        y ­w)Nr3   Úpymysqlz*mysql+pymysql://root@localhost:3306/pandasÚclient_flag)Úconnect_argsÚ	poolclassr   )r  Úimportorskiprº   Ú	constantsÚCLIENTÚMULTI_STATEMENTSÚpoolÚNullPoolr  r�   r¿   )r3   r  rÁ   s      r$   Ú_mysql_pymysql_enginer"  e  s�   è ø€ ä×$Ñ$ \Ó2€JÜ×!Ñ! )Ó,€GØ%ˆZ×%Ñ%Ø4Ø# W×%6Ñ%6×%=Ñ%=×%NÑ%NÐOØ—/‘/×*Ñ*ô€Fô
 �'˜6Ÿ>™>Ô*Ø
‚LØ
‡N�NÕùs   ‚BB!c              #  ó„   K  — | –— t        | «      D ]  }t        || «       Œ t        | «      D ]  }t        || «       Œ y ­w©N©rù   r  rü   r   )r"  ré   Útbls      r$   Úmysql_pymysql_enginer'  s  sL   è ø€ à
ÒÜÐ3Ó4ò /ˆÜ�$Ð-Õ.ð/äÐ3Ó4ò /ˆÜ�3Ð-Õ.ñ/ùó   ‚>A c                ó4   — t        | |«       t        | «       | S r$  ©re   rq   )r'  rÇ   s     r$   Úmysql_pymysql_engine_irisr+  |  s   € äÐ-¨yÔ9ÜÐ2Ô3ØÐr#   c                ó    — t        | |d«       | S )Nr   ©r‘   )r'  r‡   s     r$   Úmysql_pymysql_engine_typesr.  ƒ  s   € äÐ.°
¸GÔDØÐr#   c              #  ó^   K  — | j                  «       5 }|–— d d d «       y # 1 sw Y   y xY w­wr$  ©r�   )r'  rI   s     r$   Úmysql_pymysql_connr1  ‰  s-   è ø€ à	×	%Ñ	%Ó	'ð ¨4ØŠ
÷÷ ñ üó   ‚-“!˜	-¡*¦-c              #  ó^   K  — | j                  «       5 }|–— d d d «       y # 1 sw Y   y xY w­wr$  r0  )r+  rI   s     r$   Úmysql_pymysql_conn_irisr4  �  s-   è ø€ à	"×	*Ñ	*Ó	,ð °ØŠ
÷÷ ñ ür2  c              #  ó^   K  — | j                  «       5 }|–— d d d «       y # 1 sw Y   y xY w­wr$  r0  )r.  rI   s     r$   Úmysql_pymysql_conn_typesr6  •  ó-   è ø€ à	#×	+Ñ	+Ó	-ð °ØŠ
÷÷ ñ ür2  c               #  ó  K  — t        j                  d«      } t        j                  d«        | j                  d| j                  j                  ¬«      }t        d|j                  «       |–— |j                  «        y ­w)Nr3   Úpsycopg2z=postgresql+psycopg2://postgres:postgres@localhost:5432/pandas©r  r   )r  r  rº   r   r!  r  r�   r¿   )r3   rÁ   s     r$   Ú_postgresql_psycopg2_enginer;  ›  se   è ø€ ä×$Ñ$ \Ó2€JÜ
×Ñ˜
Ô#Ø%ˆZ×%Ñ%ØGØ—/‘/×*Ñ*ô€Fô �, §¡Ô/Ø
‚LØ
‡N�NÕùs   ‚A>B c              #  ó„   K  — | –— t        | «      D ]  }t        || «       Œ t        | «      D ]  }t        || «       Œ y ­wr$  r%  )r;  ré   r&  s      r$   Úpostgresql_psycopg2_enginer=  ¨  sL   è ø€ à
%Ò%ÜÐ9Ó:ò 5ˆÜ�$Ð3Õ4ð5äÐ9Ó:ò 5ˆÜ�3Ð3Õ4ñ5ùr(  c                ó4   — t        | |«       t        | «       | S r$  r*  )r=  rÇ   s     r$   Úpostgresql_psycopg2_engine_irisr?  ±  s   € äÐ3°YÔ?ÜÐ8Ô9Ø%Ð%r#   c                ó    — t        | |d«       | S )NÚpostgresr-  )r=  r‡   s     r$   Ú postgresql_psycopg2_engine_typesrB  ¸  s   € äÐ4°jÀ*ÔMØ%Ð%r#   c              #  ó^   K  — | j                  «       5 }|–— d d d «       y # 1 sw Y   y xY w­wr$  r0  )r=  rI   s     r$   Úpostgresql_psycopg2_connrD  ¾  r7  r2  c                 óŽ   ‡ ‡— t        j                  d«       t        j                  d«       ddlmŠ  dŠt	        dˆ ˆfd„«       ‰S )NÚpyarrowÚadbc_driver_postgresqlr   ©Údbapiz4postgresql://postgres:postgres@localhost:5432/pandaszpostgresql (adbc)c                 ó&   •— ‰ j                  ‰«      S r$  r0  ©rI  Úuris   €€r$   ú<lambda>z&_postgresql_adbc_uri.<locals>.<lambda>Ë  s   ø€ ¨u¯}©}¸SÓ/A€ r#   )r  r  rG  rI  r  rK  s   @@r$   Ú_postgresql_adbc_urirN  Ä  s9   ù€ ä
×Ñ˜	Ô"Ü
×ÑÐ0Ô1Ý,à
@€CÜÐ%Ô'AÔBØ€Jr#   c              #  óü   K  — ddl m} |j                  | «      5 }|–— t        |«      D ]  }t	        ||«       Œ t        |«      D ]  }t        ||«       Œ |j                  «        d d d «       y # 1 sw Y   y xY w­w)Nr   rH  )rG  rI  r�   rù   r  rü   r   rH   )rN  rI  rI   ré   r&  s        r$   Úpostgresql_adbc_connrP  Ï  sv   è ø€ å,à	�‰Ð+Ó	,ð °ØŠ
Ü! $Ó'ò 	"ˆDÜ�d˜DÕ!ð	"ä! $Ó'ò 	"ˆCÜ�s˜DÕ!ð	"à�‰Œ÷÷ ñ üs   ‚A<šAA0Á'	A<Á0A9Á5A<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   r,   Ú	iris_view)Úadbc_driver_managerÚadbc_get_table_schemaÚProgrammingErrorÚrollbackrR   rq   )rP  rÇ   ÚmgrrI   s       r$   Úpostgresql_adbc_irisrY  Ü  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   rx   )rT  rU  rV  rW  Útupler^   r‹   )rP  r‡   rX  rI   ÚentryÚnew_datas         r$   Úpostgresql_adbc_typesr_  ï  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$  r0  )r?  rI   s     r$   Úpostgresql_psycopg2_conn_irisra     s-   è ø€ à	(×	0Ñ	0Ó	2ð °dØŠ
÷÷ ñ ür2  c              #  ó^   K  — | j                  «       5 }|–— d d d «       y # 1 sw Y   y xY w­wr$  r0  )rB  rI   s     r$   Úpostgresql_psycopg2_conn_typesrc    s-   è ø€ à	)×	1Ñ	1Ó	3ð °tØŠ
÷÷ ñ ür2  c                ó6   — t        j                  d«       d| › �S )Nr3   ú
sqlite:///)r  r  )Ú	temp_files    r$   Ú
sqlite_strrg    s   € ä
×Ñ˜Ô%Ø˜	�{Ð#Ð#r#   c              #  ó  K  — t        j                  d«      } |j                  | |j                  j                  ¬«      }|–— t        |«      D ]  }t        ||«       Œ t        |«      D ]  }t        ||«       Œ |j                  «        y ­w)Nr3   r:  )
r  r  rº   r   r!  rù   r  rü   r   r¿   )rg  r3   rÁ   ré   r&  s        r$   Úsqlite_engineri    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$  r0  )ri  rI   s     r$   Úsqlite_connrk    s-   è ø€ à	×	Ñ	Ó	 ð  DØŠ
÷÷ ñ ür2  c                ó¢   — t        j                  d«      } |j                  | «      }t        ||«       t	        |«       |j                  «        | S )Nr3   )r  r  rº   re   rq   r¿   )rg  rÇ   r3   rÁ   s       r$   Úsqlite_str_irisrm  $  sF   € ä×$Ñ$ \Ó2€JØ%ˆZ×%Ñ% jÓ1€FÜ˜ Ô+Ü˜fÔ%Ø
‡N�NÔØÐr#   c                ó4   — t        | |«       t        | «       | S r$  r*  )ri  rÇ   s     r$   Úsqlite_engine_irisro  .  s   € ä˜¨	Ô2Ü˜mÔ,ØÐr#   c              #  ó^   K  — | j                  «       5 }|–— d d d «       y # 1 sw Y   y xY w­wr$  r0  )ro  rI   s     r$   Úsqlite_conn_irisrq  5  s-   è ø€ à	×	#Ñ	#Ó	%ð ¨ØŠ
÷÷ ñ ür2  c                óŽ   — t        j                  d«      } |j                  | «      }t        ||d«       |j	                  «        | S )Nr3   r   )r  r  rº   r‘   r¿   )rg  r‡   r3   rÁ   s       r$   Úsqlite_str_typesrs  ;  s@   € ä×$Ñ$ \Ó2€JØ%ˆZ×%Ñ% jÓ1€FÜ˜& *¨hÔ7Ø
‡N�NÔØÐr#   c                ó    — t        | |d«       | S )Nr   r-  )ri  r‡   s     r$   Úsqlite_engine_typesru  D  s   € ä˜-¨°XÔ>ØÐr#   c              #  ó^   K  — | j                  «       5 }|–— d d d «       y # 1 sw Y   y xY w­wr$  r0  )ru  rI   s     r$   Úsqlite_conn_typesrw  J  s-   è ø€ à	×	$Ñ	$Ó	&ð ¨$ØŠ
÷÷ ñ ür2  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)NrF  Úadbc_driver_sqliter   rH  zfile:)
r  r  ry  rI  r�   rù   r  rü   r   rH   )rf  rI  rL  rI   ré   r&  s         r$   Úsqlite_adbc_connrz  P  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rR  )rT  rU  rV  rW  rP   rq   )rz  rÇ   rX  rI   s       r$   Úsqlite_adbc_irisr|  `  s�   € ã%à€Dð6Ø×"Ñ" 6Ô*ð(Ø×"Ñ" ;Ô/ð €Køð ×Ñò 6Ø�‰ŒÜ$ T¨9Ö5ð6ûð
 ×Ñò (Ø�‰ŒÜ! $Õ'Ø€Kð(úrZ  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   rx   r   r�   )
rT  rU  rV  rW  Úintrð   r\  r^   r‰   rH   )rz  r‡   rX  rI   r^  r]  s         r$   Úsqlite_adbc_typesr  r  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Úclosingrn   r�   ©Úclosing_connrI   s     r$   Úsqlite_buildinr†  ˆ  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$  )rP   rq   )r†  rÇ   s     r$   Úsqlite_buildin_irisrˆ  �  s   € ä  °Ô;Ü˜nÔ-ØÐr#   c                ót   — |D �cg c]  }t        |j                  «       «      ‘Œ }}t        | |«       | S c c}w r$  )r\  r^   r‰   )r†  r‡   r]  s      r$   Úsqlite_buildin_typesrŠ  –  s6   € à5?Ö@¨E”%˜Ÿ™›Õ'Ð@€JÐ@Ü! .°*Ô=ØÐùò As   … 5r'  )Úmarksr1  r+  r4  r.  r6  r=  rD  r?  ra  rB  rc  )ri  rk  rg  )ro  rq  rm  )ru  rw  rs  rz  rP  rY  r|  r_  r  r†  rˆ  rŠ  c                óP   — |j                  | «      } |j                  d| dd¬«       y )NÚtestrð   F©rš   rd   Ú	if_existsr¨   )ÚgetfixturevalueÚto_sql)rI   rà   Úrequests      r$   Útest_dataframe_to_sqlr“  ö  s+   € ð ×"Ñ" 4Ó(€DØ×Ñ˜F¨¸ÈÐÕNr#   c                ój  — | dk(  ryt        «       sot        j                  d«      }t        |j                  «      t        d«      k  r9|j
                  j                  t        j                  j                  d¬«      «       |j                  | «      } |j                  d d }|j                  d| dd	¬
«       y )NrP  rG  z1.11z>postgres ADBC driver < 1.11 cannot insert index with null type©Úreasonr   r�  rð   FrŽ  )r   r  r  r   Ú__version__ÚnodeÚ
add_markerÚmarkÚxfailr�  r­   r‘  )rI   rà   r’  Úadbc_pgÚempty_dfs        r$   Útest_dataframe_to_sql_emptyrž  ý  s�   € àÐ%Ò%Ô.@Ô.BÜ×%Ñ%Ð&>Ó?ˆÜ�7×&Ñ&Ó'¬'°&«/Ò9Ø�L‰L×#Ñ#Ü—‘×!Ñ!àXð "ó ôð ×"Ñ" 4Ó(€DØ×Ñ  Ð#€HØ‡O�O˜ T°XÀU€OÕKr#   c                óv  — t        j                  d«       t        j                  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 }d}| dk(  r|j                  dg¬«      }nt        }d}|j                  | «      } t        j                  ||d¬«      5  |j                  d| dd¬«       d d d «       y # 1 sw Y   y xY w)NrF  r;   zint8[pyarrow]©Údtypeéç  útimestamp[ns][pyarrow]zdate32[day][pyarrow]zduration[ns][pyarrow]Úazstring[pyarrow])r~  r   r   r   Ústringrp   Ú rz  r   rÝ   zthe 'timedelta'F©ÚmatchÚcheck_stacklevelÚ
test_arrowÚreplacerŽ  )r  r  rœ   rÏ   Úarrayr   r   r   r`   ÚUserWarningr�  r²   Úassert_produces_warningr‘  )rI   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ä!ˆØˆà×"Ñ" 4Ó(€DÜ	×	#Ñ	# K°sÈUÔ	Sñ QØ
�	‰	�|¨¸È%ˆ	ÔP÷Q÷ Qñ Qús   ÄD/Ä/D8c           
     ó8  — t        j                  d«       t        |t        «      rt        j                  d¬«       t        j                  dt        j                  t        ddd«      |gd¬«      i«      }|j                  | «      } |j                  d	| d
d¬«       y )NrF  z?Decimal('NaN') not supported in constructor for timestamp dtyper•  r   r¢  r;   r£  r   rª  r«  FrŽ  )r  r  rm   r   r  rœ   rÏ   r¬  r   r�  r‘  )rI   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¶  rp   z)'method' not implemented for ADBC driversT©r–  rW   ©Úneed_transactionÚ
test_frame©rµ  )r˜  r™  r  rš  r›  r�  r   r‘  Ú	has_tablerÂ   Úlen)rI   rµ  rà   r’  Ú	pandasSQLs        r$   Útest_to_sqlrÀ  D  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«  r;   )rð   r<   )Údelete_rowsr;   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¾  )rI   ÚmodeÚnum_row_coefrà   r’  r¿  s         r$   Útest_to_sql_existrÈ  U  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)rI   rà   r’  r¿  r°  s        r$   Útest_to_sql_exist_failrÍ  b  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ª   r.   )r�  r   r¸   rœ   Úread_sqlrµ   r´   ©rI   r’  Ú
iris_frames      r$   Útest_read_iris_queryrÕ  n  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        j                  t        d| d¬«      «      }t        |«       t        j                  t        j                  d| d¬«      «      }t        |«       t        j                  t        j                  d| d¬«      «      }|j                  d	k(  sJ ‚d
|j                  v sJ ‚y )Nrp   ú,'chunksize' not implemented for ADBC driversTr¸  rÏ  é   ©Ú	chunksizerÐ  rÑ  r.   )r˜  r™  r  rš  r›  r�  rœ   Úconcatr   r¸   rÒ  rµ   r´   rÓ  s      r$   Útest_read_iris_query_chunksizerÜ  z  sØ   € à��~Ø�‰×ÑÜ�K‰K×ÑØEØð ó ô	
ð ×"Ñ" 4Ó(€DÜ—‘œ>Ð*>ÀÐPQÔRÓS€JÜ�ZÔ Ü—‘œ2Ÿ;™;Ð';¸TÈQÔOÓP€JÜ�ZÔ Ü—‘Ü
�‰Ð2°DÀAÔFó€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 )Nrp   r×  Tr¸  r   )r)   r+   rº   Úselectr,   )Úautoload_withr§   r¥   ©rš   Úlength©rc   )r˜  r™  r  rš  r›  r�  r3   r)   r+   rº   rÞ  rm   r¼   r   r¸   r¿   )
rI   r’  r)   r+   rº   rÞ  r4   Úautoload_conr,   rÔ  s
             r$   Ú.test_read_iris_query_expression_with_parameterrä  �  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 )
Nrp   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¸   )rI   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 )Nr,   )r�  r   r¸   rœ   rÒ  rÓ  s      r$   Útest_read_iris_tablerì  ¿  s@   € ð ×"Ñ" 4Ó(€DÜ ¨Ó-€JÜ�ZÔ Ü—‘˜V TÓ*€JÜ�ZÕ r#   c                ód  — d| v r9|j                   j                  t        j                  j	                  d¬«      «       |j                  | «      } t        j                  t        d| d¬«      «      }t        |«       t        j                  t        j                  d| d¬«      «      }t        |«       y )Nrp   ú+chunksize argument NotImplemented with ADBCr•  r,   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Ü—‘œ>¨&°$À!ÔDÓE€JÜ�ZÔ Ü—‘œ2Ÿ;™; v¨t¸qÔAÓB€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        ||d¬«      «      ‘Œ }}|j                  | j                  j                  «       |«       y c c}w )Nr;   TrV   )rð   r\   r]   r@   r÷   rU   )Úpd_tablerI   rÐ   Ú	data_iterrO   rÅ   Úchecks         €r$   Úsamplez$test_to_sql_callable.<locals>.sampleÜ  sP   ø€ Ø�‰�QŒØ=FÖG°c””S˜˜s¨4Ô0Õ1ÐGˆÐGØ�‰�X—^‘^×*Ñ*Ó,¨dÕ3ùò Hs   —A"Tr¹  r»  r¼  r;   rÅ  )rI   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 )NrŠ  ú;sqlite_buildin connection does not implement read_sql_tabler•  rx   r   )Úapplymarkerr  rš  r›  r�  r   r   r¯   r}   r¡  r®   r°   r±   r~   Úintegerr   Úbool_r€   r�   Úobject©rI   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        j                  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   rk   r�   ©r;   r<   r=   ©çš™™™™™¹?r¦   ç333333Ó?©r¤  Úbr»  F©rš   rd   r¨   z}DROP PROCEDURE IF EXISTS get_testdb;

    CREATE PROCEDURE get_testdb ()

    BEGIN
        SELECT * FROM test_frame;
    ENDzCALL get_testdb();)r�  r3   rl   r�   rŽ   rœ   rÏ   r‘  rm   r�   r_   r@   r   r   r²   Úassert_frame_equalrÒ  )	rI   r’  rl   rŽ   rÑ   ÚprocÚengine_connÚres1Úres2s	            r$   Útest_read_procedurer    s#  € à×"Ñ" 4Ó(€Dõ
  Ý(ä	�‰šIªOÑ<Ó	=€BØ‡I�I�< T°€IÔ7ð€Dñ �‹:€DÜ�$˜ÔØ�\‰\‹^ð 	*˜{Ø×"Ñ"Ó$ñ *Ø×#Ñ# DÔ)÷*÷	*ð 	*ð �Z‰Z‹\ñ 	Ø�L‰L˜Ô÷	ô ×ÑÐ2°DÓ9€DÜ×Ñ˜"˜dÔ#ô �<‰<Ð,¨dÓ3€DÜ×Ñ˜"˜dÕ#÷*ð *ú÷	*ð 	*ú÷	ð 	ús0   Á4D7ÂD+ÂD7Â8EÄ+D4	Ä0D7Ä7E ÅEÚexpected_countr<   zSuccess!c                ó  ‡— ˆfd„}|j                  | «      } t        j                  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)Ú
connectionr?   r	   rB   ÚwriterÚ	writerowsÚseekÚjoinrö   rš   Úcopy_expert)r÷   rI   rÐ   ró  Ú
dbapi_connrL   Ús_bufr  Úkr´   rÀ   Ú	sql_queryr  s               €r$   Úpsql_insert_copyzBtest_copy_from_callable_insertion_method.<locals>.psql_insert_copy3  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,r;   r<   r  r¦   r¤  Ún©Úcol1Úcol2Úcol3r»  F)rš   rd   r¨   rµ  ©r�  rœ   rÏ   r‘  r   r   r²   r  )rI   r  r’  r  ÚexpectedÚresult_countÚresults    `     r$   Ú(test_copy_from_callable_insertion_methodr'  -  sœ   ø€ ôð& ×"Ñ" 4Ó(€DÜ�|‰| a¨ V°c¸3°ZÈ#ÈsÈÑTÓU€HØ—?‘?Ø˜t¨5Ð9Ið #ó €Lð ÐØÐ#Ð#Ð#à˜~Ò-Ð-Ð-Ü×Ñ ¨dÓ3€FÜ×Ñ˜& (Õ+r#   c                óf  ‡— |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        j                  g d¢gt        d«      ¬	«      }|j                  d
| dd¬«       t        j                  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   rT   r�   rk   c           
     óô   •— |D �cg c]  }t        t        ||d¬«      «      ‘Œ }} ‰| j                  «      j                  |«      j	                  dg¬«      }|j                  |«      }|j                  S c c}w )NTrV   r¤  )Úindex_elements)r\   r]   r÷   r^   Úon_conflict_do_nothingr@   Úrowcount©	r÷   rI   rÐ   ró  rO   rÅ   rK   r&  rU   s	           €r$   Úinsert_on_conflictzHtest_insertion_method_on_conflict_do_nothing.<locals>.insert_on_conflict]  sn   ø€ Ø=FÖG°c””S˜˜s¨4Ô0Õ1ÐGˆÐGá�5—;‘;Óß‰V�D‹\ß#Ñ#°C°5Ð#Ó9ð 	ð
 —‘˜dÓ#ˆØ�‰Ðùò Hs   †A5zx
    CREATE TABLE test_insert_conflict (
        a  integer PRIMARY KEY,
        b  numeric,
        c  text
    );
    ©r;   çÍÌÌÌÌÌ @r¤  ÚabcrÝ   Útest_insert_conflictrð   FrŽ  ©r;   gš™™™™™	@r  ©rš   rd   r¨   r�  rµ  Tr¹  )r�  Úsqlalchemy.dialects.postgresqlrU   r�   rŽ   Úsqlalchemy.sqlrl   rm   r�   r_   r@   rœ   rÏ   Úlistr‘  r   r   r²   r  r   r   )rI   r’  rŽ   rl   r.  Ú
create_sqlrd   r$  Ú	df_insertÚinsertedr&  r¿  rU   s               @r$   Ú,test_insertion_method_on_conflict_do_nothingr;  T  s•  ø€ ð ×"Ñ" 4Ó(€Då5Ý(Ý#ôñ ð	ó€Jô �$˜ÔØ�\‰\‹^ð 	(˜sØ—‘“ñ (Ø—‘˜JÔ'÷(÷	(ð 	(ð �Z‰Z‹\ñ 	%Ø�L‰L˜Ô$÷	%ô �|‰|š]˜O´T¸%³[ÔA€HØ‡O�OØ#¨¸Èð ô ô —‘šm˜_´d¸5³kÔB€IØ×ÑØ#ØØØØ!ð  ó €Hô ×ÑÐ 6¸Ó=€FÜ×Ñ˜& (Ô+Ø�qŠ=Ðˆ=ô 
�‰˜°Ô	5ð 5¸Ø×ÑÐ3Ô4÷5ð 5÷1(ñ (ú÷	(ð 	(ú÷	%ð 	%ú÷*5ð 5úó<   ÁFÁFÁ1FÂFÅ'F'ÆF	ÆFÆFÆF$Æ'F0c                óh  — d| v sd| v r/|j                  t        j                  j                  d¬«      «       |j	                  | «      } t        j                  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/  )r<   gÍÌÌÌÌÌ@r  r1  rÝ   Útest_public_schemarð   FÚpublic)rš   rd   r�  r¨   rö   ©rö   )rù  r  rš  r›  r�  rœ   rÏ   r7  r‘  r   r   r²   r  )rI   r’  Ú	test_dataÚdf_outs       r$   Útest_to_sql_on_public_schemarC  Ž  s¬   € à�4Ñ˜7 d™?Ø×ÑÜ�K‰K×ÑØKð ó ô	
ð ×"Ñ" 4Ó(€Dä—‘šmª]Ð;ÄTÈ%Ã[ÔQ€IØ×ÑØ!ØØØØð ô ô ×ÑÐ 4°dÀ8ÔL€FÜ×Ñ˜) VÕ,r#   c                óf  ‡— |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        j                  g d¢gt        d«      ¬	«      }|j                  d
| dd¬«       t        j                  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   rT   r�   rk   c           
     óH  •— |D �cg c]  }t        t        ||d¬«      «      ‘Œ }} ‰| j                  «      j                  |«      }|j	                  |j
                  j                  |j
                  j                  ¬«      }|j                  |«      }|j                  S c c}w )NTrV   )r  rò   )
r\   r]   r÷   r^   Úon_duplicate_key_updater:  r  rò   r@   r,  r-  s	           €r$   r.  zDtest_insertion_method_on_conflict_update.<locals>.insert_on_conflict¯  s€   ø€ Ø=FÖG°c””S˜˜s¨4Ô0Õ1ÐGˆÐGÙ�e—k‘kÓ"×)Ñ)¨$Ó/ˆØ×+Ñ+¨d¯m©m¯o©oÀÇÁÇÁÐ+ÓQˆØ—‘˜dÓ#ˆØ�‰Ðùò	 Hs   †Bzv
    CREATE TABLE test_insert_conflict (
        a INT PRIMARY KEY,
        b FLOAT,
        c VARCHAR(10)
    );
    r/  r1  rÝ   r2  rð   FrŽ  r3  r4  r<   Tr¹  )r�  Úsqlalchemy.dialects.mysqlrU   r�   rŽ   r6  rl   rm   r�   r_   r@   rœ   rÏ   r7  r‘  r   r   r²   r  r   r   )rI   r’  rŽ   rl   r.  r8  rd   rÑ   r$  r:  r&  r¿  rU   s               @r$   Ú(test_insertion_method_on_conflict_updaterH  ¦  sŒ  ø€ ð ×"Ñ" 4Ó(€Då0Ý(Ý#ôñ ð	ó€Jô �$˜ÔØ�\‰\‹^ð 	(˜sØ—‘“ñ (Ø—‘˜JÔ'÷(÷	(ð 	(ð �Z‰Z‹\ñ 	%Ø�L‰L˜Ô$÷	%ô 
�‰’}�o¬t°E«{Ô	;€BØ‡I�IÐ)¨t¸xÈu€IÔUä�|‰|š]˜O´T¸%³[ÔA€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        j                  dgddœ«      }	t        j                   ||	«       y # 1 sw Y   ŒxxY w# 1 sw Y   ŒQxY w# 1 sw Y   Œ]xY w)Nr   r�   rk   Ú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;
    r;   rš   ©Úgroup_idrš   )r�  r�   rŽ   r6  rl   ÚuuidÚuuid4Úhexrm   r�   r_   r@   r   rœ   rÏ   r²   r  )
rI   r’  rŽ   rl   rÀ   rø   Úsql_stmtrd   r&  r$  s
             r$   Útest_read_view_postgresrR  Û  sB  € ð ×"Ñ" 4Ó(€Då(Ý#àœ$Ÿ*™*›,×*Ñ*Ð+Ð,€JØœdŸj™j›l×.Ñ.Ð/Ð0€IáðØ�ð ð �ð à�ð à�,ð ð
	ó€Hô �$˜ÔØ�\‰\‹^ð 	&˜sØ—‘“ñ &Ø—‘˜HÔ%÷&÷	&ð 	&ð �Z‰Z‹\ñ 	#Ø�L‰L˜Ô"÷	#ä˜I tÓ,€FÜ�|‰|¨!¨°fÑ=Ó>€HÜ×Ñ˜& (Õ+÷&ð &ú÷	&ð 	&ú÷	#ð 	#ús0   ÂD7Â"D+Â4D7ÃEÄ+D4	Ä0D7Ä7E ÅEc                ó   — d}d}d}| j                  |«       | j                  |«       | j                  |«       t        j                  d| «      }t        j                  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_viewr;   rš   rL  )r@   rœ   rÒ  rÏ   r²   r  )r†  Úcreate_tableÚinsert_intoÚcreate_viewr&  r$  s         r$   Útest_read_view_sqliterW  ÿ  sy   € ð€Lð€Kð€Kð
 ×Ñ˜<Ô(Ø×Ñ˜;Ô'Ø×Ñ˜;Ô'Ü�[‰[Ð3°^ÓD€FÜ�|‰|¨!¨°fÑ=Ó>€HÜ×Ñ˜& (Õ+r#   c                óŒ  — t        j                  dgdgdœ«      j                  d| d¬«       d}t        j                  t
        j                  |¬«      5  t        j                  d| «       d d d «       t        j                  d	| «      }t        j                  dgdgdœ«      }t        j                  ||«       y # 1 sw Y   ŒPxY w)
Nr;   r<   r  ÚdemoF©r¨   zAReading a table by name is only supported when using a SQLAlchemyrÊ  zSELECT * FROM demo)
rœ   rÏ   r‘  r  rË  r   ÚDatabaseErrorrÒ  r²   r  )r†  r°  r&  r$  s       r$   Ú3test_read_sql_bare_table_name_dbapi_message_gh54233r\    sŸ   € ä‡L�L˜�s ! Ñ%Ó&×-Ñ-¨f°nÈEÐ-ÔRà
M€CÜ	�‰”s×(Ñ(°Ô	4ñ ,Ü
�‰�F˜NÔ+÷,ô �[‰[Ð-¨~Ó>€FÜ�|‰| 1 #¨Q¨CÑ0Ó1€HÜ×Ñ˜& (Õ+÷,ð ,ús   ÁB:Â:C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$   Úflavorr^  &  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)Nrp   ú)'params' not implemented for ADBC driversTr¸  r   ræ  râ  ©r˜  r™  r  rš  r›  r�  r^  r   Úrun_transactionÚ
read_queryr¸   ©rI   r’  r%   rþ  ré  rc   r¿  rÔ  s           r$   Útest_read_sql_iris_parameterre  1  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                óÌ  — t        j                  d«      }|j                  | «      } t        j                  ddgi«      }t        j
                  |j                  d«      | «      }t        j                  ||«       t        j
                  |j                  |j                  d«      |j                  d«      z  j                  d«      «      | «      }t        j                  ||«       y )Nr3   Úrr;   zSELECT 5 % 2 AS rrª   r<   )r  r  r�  rœ   rÏ   rÒ  rl   r²   r  rÞ  ÚliteralÚlabel)rI   r’  Úsar$  r&  s        r$   Ú-test_read_sql_percent_operator_and_selectablerk  D  s¬   € ô 
×	Ñ	˜\Ó	*€BØ×"Ñ" 4Ó(€Dä�|‰|˜S 1 #˜JÓ'€Hä�[‰[˜Ÿ™Ð!4Ó5°tÓ<€FÜ×Ñ˜& (Ô+ä�[‰[˜Ÿ™ B§J¡J¨q£M°B·J±J¸q³MÑ$A×#HÑ#HÈÓ#MÓNÐPTÓU€FÜ×Ñ˜& (Õ+r#   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)
Nrp   r`  Tr¸  r    r§   r¥   rà  râ  ra  rd  s           r$   Ú"test_read_sql_iris_named_parameterrm  S  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   rp   zbroken testr•  r!   râ  )
rù  r  rš  r›  r�  r^  r   rb  rc  r¸   )rI   r’  r%   rþ  ré  r¿  rÔ  s          r$   Ú,test_read_sql_iris_no_parameter_with_percentro  g  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  z  s-   € à×"Ñ" 4Ó(€DÜ×#Ñ#Ð$=¸tÓD€JÜ�ZÕ r#   c                óR  — d| v r9|j                   j                  t        j                  j	                  d¬«      «       |j                  | «      } d}t        j                  || d¬«      }t        j                  || «      }t        j                  t        j                  |«      |«       y )Nrp   rî  r•  z1SELECT * FROM iris_view WHERE "SepalLength" < 0.0rª   rÙ  )r˜  r™  r  rš  r›  r�  r   r   r²   r  rœ   rÛ  )rI   r’  ré  Ú
with_batchÚwithout_batchs        r$   Ú*test_api_read_sql_with_chunksize_no_resultru  �  s‡   € à��~Ø�‰×ÑÜ�K‰K×ÑÐ%RÐÓSô	
ð ×"Ñ" 4Ó(€DØ?€EÜ×#Ñ# E¨4¸1Ô=€JÜ×&Ñ& u¨dÓ3€MÜ×Ñœ"Ÿ)™) JÓ/°Õ?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‘  )rI   r’  rà   r¿  s       r$   Útest_api_to_sqlrw  Ž  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Ì  )rI   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Â   ©rI   r’  rà   r¿  Únum_entriesÚnum_rowss         r$   Útest_api_to_sql_replacer€  ¨  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Ä  r>   rð   r<   r|  r}  s         r$   Útest_api_to_sql_appendrƒ  º  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ús   ¿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¹  FrZ  zSELECT * FROM test_frame5)	r�  r   r½  r   r   r‘  rÒ  r²   r  )rI   r’  râ   r¿  r&  s        r$   Útest_api_to_sql_type_mappingr†  Í  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        j                  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™   FrZ  zSELECT * FROM test_series)r�  r   r½  r   r   rœ   rž   r°   Úaranger‘  r   r²   r  Úto_frame)rI   r’  r¿  ÚsÚs2s        r$   Útest_api_to_sql_seriesrŽ  Ú  s«   € à×"Ñ" 4Ó(€DÜ
‡}�}�] DÔ)Ü�_‰_˜T°DÔ9ð 	0¸YØ× Ñ  Ô/÷	0ô 	�	‰	”"—)‘)˜A WÔ-°HÔ=€AÜ‡J�Jˆq�- ¨UÕ3Ü	×	Ñ	Ð7¸Ó	>€BÜ×Ñ˜!Ÿ*™*›,¨Õ+÷	0ð 	0úó   ¿CÃC"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¹  ©rd   ú"SELECT * FROM test_frame_roundtriprp   Ú__index_level_0__rÝ   Úlevel_0)
r�  r   r½  r   r   r‘  r   r`   r²   r  ©rI   r’  rà   rþ  r¿  r&  s         r$   Útest_api_roundtripr—  ç  s»   € à€IØ×"Ñ" 4Ó(€DÜ
‡}�}Ð+¨TÔ2Ü�_‰_˜T°DÔ9ð 	9¸YØ× Ñ Ð!7Ô8÷	9ô ‡J�Jˆ{Ð2¸Õ=Ü×ÑÐ DÈ$ÔO€Fð �ÑØ—‘Ð%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)Nrp   rî  r•  r‘  Tr¹  Fr<   )rd   r¨   rÚ  r“  r’  )r˜  r™  r  rš  r›  r�  r   r½  r   r   r‘  r   r²   r  )rI   r’  rà   r¿  r&  s        r$   Útest_api_roundtrip_chunksizer™  ú  sÈ   € à��~Ø�‰×ÑÜ�K‰K×ÑÐ%RÐÓSô	
ð ×"Ñ" 4Ó(€DÜ
‡}�}Ð+¨TÔ2Ü�_‰_˜T°DÔ9ð 	9¸YØ× Ñ Ð!7Ô8÷	9ô ‡J�JØØØØØõô ×ÑÐ DÈ$ÔO€FÜ×Ñ˜& +Õ.÷	9ð 	9ús   Á<CÃC'c                ó   — |j                  | «      } t        j                  | «      5 }|j                  d«      }|j	                  «       }|j                  «        d d d «       t        «      g d¢k(  sJ ‚y # 1 sw Y   ŒxY w©NrÏ  r¤   )r�  r   r   r@   r»   rG   r7  )rI   r’  Ú
pandas_sqlÚiris_resultsrO   s        r$   Útest_api_execute_sqlrž    sy   € ð ×"Ñ" 4Ó(€DÜ	×	Ñ	˜tÓ	$ð ¨
Ø!×)Ñ)Ð*>Ó?ˆØ×#Ñ#Ó%ˆØ×ÑÔ÷ô �‹9Ò;Ò;Ð;Ñ;÷	ð ús   §2A4Á4A=c           
     óš  — | }|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        j                  dddd	d	d	«      t        j                  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        j                  dddd	d	d	«      t        j                  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        j                  dddd	d	d	«      t        j                  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        j                  dddd	d	d	«      t        j                  dddd	d	d	«      gk(  sJ ‚d}t        j                  t        |d¬«      5  t        j                  d| ddi¬«      }d d d «       t        |j                   j
                  j                  t        j                  «      sJ ‚|j                   j                  «       t        j                  d«      t        j                  d«      gk(  sJ ‚y # 1 sw Y   Œ‹xY w)NúSELECT * FROM typesr   rA  rz   ©Úparse_datesiÐ  r;   r=   r   r>   ú%Y-%m-%d %H:%M:%Sr{   iÂ  é   é   iÝ  rŒ  ú9Passing a format for integer or float columns to read_sqlFr§  r|   ú%Y%m%dú
2010-10-10ú
2010-12-12)r�  r   r   r¯   rz   r¡  r®   r°   Ú
datetime64Útolistrœ   r�   r{   r²   r®  r   r|   ©rI   r’  rþ  rÑ   r°  s        r$   Útest_api_date_parsingr­    sV  € à€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¯]©]Ô;Ð;Ð;Ø�:‰:×ÑÓÜ
�‰�T˜1˜a  A qÓ)Ü
�‰�T˜1˜a  A qÓ)ð#ò ð ð ô
 
×	Ñ	ØØØÐ 3Ð4ô
€Bô
 �b—j‘j×&Ñ&×+Ñ+¬R¯]©]Ô;Ð;Ð;Ø�:‰:×ÑÓÜ
�‰�T˜1˜a  A qÓ)Ü
�‰�T˜1˜a  A qÓ)ð#ò ð ð ô
 
×	Ñ	Ð1°4ÀlÀ^Ô	T€BÜ�b—m‘m×)Ñ)×.Ñ.´·±Ô>Ð>Ð>Ø�=‰=×ÑÓ!Ü
�‰�T˜2˜r 1 a¨Ó+Ü
�‰�T˜1˜a  A qÓ)ð&ò ð ð ô
 
×	Ñ	Ø˜t°,ÀÐ1Dô
€Bô �b—m‘m×)Ñ)×.Ñ.´·±Ô>Ð>Ð>Ø�=‰=×ÑÓ!Ü
�‰�T˜2˜r 1 a¨Ó+Ü
�‰�T˜1˜a  A qÓ)ð&ò ð ð ð F€CÜ	×	#Ñ	#¤N¸#ÐPUÔ	Vñ 
Ü×ÑØ!ØØ)¨8Ð4ô
ˆ÷
ô �b×'Ñ'×-Ñ-×2Ñ2´B·M±MÔBÐBÐBØ×Ñ×#Ñ#Ó%Ü
�‰�\Ó"Ü
�‰�\Ó"ð*ò ð ñ ÷
ð 
ús   ÌOÏO
c                óD  — |j                  | «      } d}t        j                  t        |d¬«      5  t	        j
                  d| dddii¬«      }d d d «       d   j                  «       t        j                  d	«      t        j                  d
«      gk(  sJ ‚y # 1 sw Y   ŒJxY w)Nr¦  Fr§  r   r|   Úformatr§  r¡  r¨  r©  )	r�  r²   r®  r   r   r   r«  rœ   r�   )rI   r’  r°  rÑ   s       r$   Ú)test_api_date_parsing_int_col_dict_formatr°  V  s¤   € ð ×"Ñ" 4Ó(€DØ
E€CÜ	×	#Ñ	#¤N¸#ÐPUÔ	Vñ 
Ü×ÑØ!ØØ)¨H°hÐ+?Ð@ô
ˆ÷
ð ÐÑ×&Ñ&Ó(Ü
�‰�\Ó"Ü
�‰�\Ó"ð-ò ð ñ ÷
ð 
ús   °BÂBc                ó  — t        j                  d«       |j                  | «      } t        j                  d| d¬«      }t        j                  d| dgd¬«      }t        j                  |d   d¬«      }t        j                  |d   |«       y )NrF  r   ©Údtype_backendr{   )r¢  r³  Úcoerceri   )	r  r  r�  r   r   rœ   Úto_datetimer²   r³   )rI   r’  ÚrawrÑ   r$  s        r$   Ú7test_api_date_parsing_int_col_no_format_pyarrow_backendr·  h  s�   € ô ×Ñ˜	Ô"Ø×"Ñ" 4Ó(€DÜ
×
Ñ
Ð2°DÈ	Ô
R€CÜ	×	Ñ	ØØØ!�NØô	
€Bô �~‰~˜c ,Ñ/¸ÔA€HÜ×Ñ˜2˜lÑ+¨XÕ6r#   ÚerrorÚraiser´  zread_sql, text, moder   )r3   Úfallbackrx   r3   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 )Nrx   rŠ  z failing combination of argumentsr•  rz   zdatetime64[us]rj   )rd   r¢  rA  r   r�   r_  Úint32)r{   r|   r~   )
r�  rù  r  rš  r›  rŸ   r~  rE   r²   r  )
rI   r’  rÒ  rl   rÆ  r¸  rÒ   rþ  r$  r&  s
             r$   Ú!test_api_custom_dateparsing_errorr½  y  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   rz   r{   )Ú	index_colr¢  )
r�  r   r   r¯   r¨   r¡  r®   r°   rª  r{   ©rI   r’  rÑ   s      r$   Útest_api_date_and_indexrÁ  ¬  s}   € ð ×"Ñ" 4Ó(€DÜ	×	Ñ	ØØØØ Ð-ô	
€Bô �b—h‘h—n‘n×)Ñ)¬2¯=©=Ô9Ð9Ð9Ü�b—m‘m×)Ñ)×.Ñ.´·±Ô>Ð>Ñ>r#   c           	     óŽ  — | }|j                  | «      } t        j                  d| «      r1t        j                  | d¬«      5 }|j	                  d«       d d d «       t        j                  t        j                  ddgd¬«      «      j                  «       }|dk(  r9|j                  j                  t        j                  j                  d	¬
«      «       d|v rd }nt        }d}t        j                   |d|¬«      5  |j#                  d| ¬«      }d d d «       dk(  sJ ‚t        j$                  d| «      }|dk(  rHt        j                  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   �Œ]xY w# 1 sw Y   Œ®xY w)NÚtest_timedeltaTr¹  z00:00:01z00:00:03Úfoor™   rz  z.sqlite ADBC driver doesn't implement timedeltar•  rp   z%the 'timedelta' type is not supportedF)r©  r¨  ©rš   rd   r<   zSELECT * FROM test_timedeltarP  r   i@B )ÚmonthsÚdaysÚmicrosecondsÚnanosecondsiÀÆ- rÎ   )r�  r   r½  r   r   rœ   Úto_timedeltarž   r‹  r˜  r™  r  rš  r›  r­  r²   r®  r‘  r   Ú
DateOffsetrŸ   r³   )
rI   r’  rþ  r¿  rÑ   r¯  r°  r%  r&  r$  s
             r$   Útest_api_timedeltarÌ  »  s¦  € ð €IØ×"Ñ" 4Ó(€DÜ
‡}�}Ð% tÔ,Ü�_‰_˜T°DÔ9ð 	3¸YØ× Ñ Ð!1Ô2÷	3ô 
�‰œŸ™ J°
Ð#;À%ÔHÓ	I×	RÑ	RÓ	T€BàÐ&Ò&Ø�‰×ÑÜ�K‰K×ÑØGð ó ô	
ð �ÑØ‰ä!ˆà
1€CÜ	×	#Ñ	# KÀ%ÈsÔ	Sñ BØ—y‘yÐ&6¸D�yÓAˆ÷Bà˜1ÒÐÐÜ×ÑÐ >ÀÓE€FàÐ*Ò*ô —9‘9ä—‘ Q¨Q¸WÐRSÔTÜ—‘ Q¨Q¸WÐRSÔTðð ô
‰ð �e‘9×#Ñ# GÓ,ˆÜ×Ñ˜6 %™=¨(Õ3÷I	3ñ 	3ú÷$Bð Bús   ÁF.Ã:F;Æ.F8Æ;Gc                óú   — | }|j                  | «      } t        j                  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               @rp   zdatatypes not supportedzComplex datatypes not supportedrÊ  Útest_complexr’  )r�  rœ   rÏ   r  rË  rÌ  r‘  r¬  s        r$   Útest_api_complex_raisesrÏ  è  s|   € à€IØ×"Ñ" 4Ó(€DÜ	�‰�s˜V R˜LÐ)Ó	*€Bà�ÑØ'‰à/ˆÜ	�‰”z¨Ô	-ñ ;Ø�y‰y˜¨TˆyÓ2Ð:Ð:Ñ:÷;÷ ;ñ ;ús   ÁA1Á1A:zindex_name,index_label,expected))NNr¨   )NÚother_labelrÐ  )Ú
index_nameNrÑ  )rÑ  rÐ  rÐ  )r   NÚ0)Nr   rÒ  c                ó2  — 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t        d«      i«      }||j                  _        d	}t        j                  |d| |¬
«       t        j                   || «      }|j"                  d   |k(  sJ ‚y # 1 sw Y   Œ€xY w)Nrp   ú-index_label argument NotImplemented with ADBCr•  Útest_index_labelTr¹  r   r>   úSELECT * FROM test_index_label)Úindex_labelr   )r˜  r™  r  rš  r›  r�  r   r½  r   r   rœ   rÏ   Úranger¨   rš   r‘  r   r´   )	rI   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ô —‘˜v¤u¨Q£xÐ0Ó1€JØ&€J×ÑÔØ,€EÜ‡J�JˆzÐ-¨tÀÕMÜ×Ñ˜u dÓ+€EØ�=‰=˜Ñ˜xÒ'Ð'Ñ'÷	5ð 	5ús   Á<DÄDc                óØ  — | }d|v r0|j                  t        j                  j                  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        j                  d
t        d	«      it        j                  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 keyr•  rp   rÔ  rÕ  Tr¹  r>   r   )ÚA0ÚA1)ÚB0ÚB1rZ  rÖ  r   r•  r;   Úlevel_1r«  rÔ   rÕ   )r�  r×  r<   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Ø  Ú
MultiIndexÚfrom_productr‘  r   r´   r«  r¨   ÚnamesrË  rÌ  )	rI   r’  rþ  r¿  Úexpected_row_countrÙ  r&  r¶   r°  s	            r$   Ú&test_api_to_sql_index_label_multiindexrå    sí  € à€IØ�)ÑØ×ÑÜ�K‰K×ÑÐ%VÐÓWõ	
ð 
�9Ñ	Ø�‰×ÑÜ�K‰K×ÑÐ%TÐÓUô	
ð ×"Ñ" 4Ó(€DÜ
‡}�}Ð'¨Ô.Ü�_‰_˜T°DÔ9ð 	5¸YØ× Ñ Ð!3Ô4÷	5ð ÐÜ—‘Ø	”�q“ÐÜ�m‰m×(Ñ(¨,¸Ð)EÓFô€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   Â2KÊ/K ËKË K)c                ó¦  — |j                  | «      } t        j                  d| «      r1t        j                  | d¬«      5 }|j	                  d«       d d d «       t
        j                  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   ŒwxY w)NÚtest_multiindex_roundtripTr¹  ©r;   r0  Úline1©r<   ç      ø?Ú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œ   rÏ   Úfrom_recordsr‘  r   r²   r  )rI   r’  r¿  rÑ   r&  s        r$   Útest_api_multiindex_roundtripró  b  sÅ   € à×"Ñ" 4Ó(€DÜ
‡}�}Ð0°$Ô7Ü�_‰_˜T°DÔ9ð 	>¸YØ× Ñ Ð!<Ô=÷	>ô 
�‰×	"Ñ	"Ø	Ð-Ð.ÚØ�Cˆjð 
#ó 
€Bð ‡I�IÐ.°D€IÔ9Ü×ÑØ1°4ÀCÈÀ:ô€Fô ×Ñ˜"˜f°tÖ<÷	>ð 	>ús   ¿CÃCr¡  ©rÔ   rÕ   c                óÎ  — | }|j                  | «      } t        j                  d| «      r1t        j                  | d¬«      5 }|j	                  d«       d d d «       t        j                  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Å  r<   rA  z(SELECT "A", "B" FROM test_dtype_argumentz$SELECT A, B FROM test_dtype_argument©rd   r¡  )r�  r   r½  r   r   rœ   rÏ   r‘  rŸ   r   r²   r  )	rI   r’  r¡  rþ  r¿  rÑ   r$  ré  r&  s	            r$   Útest_api_dtype_argumentrú  v  sß   € ð €IØ×"Ñ" 4Ó(€DÜ
‡}�}Ð*¨DÔ1Ü�_‰_˜T°DÔ9ð 	8¸YØ× Ñ Ð!6Ô7÷	8ô 
�‰˜˜S�z C¨ :Ð.¸¸c¸
Ô	C€BØ�9‰9Ð/°Tˆ9Ó:¸aÒ?Ð?Ð?à�y‰y˜Ó€Hà�YÑØ:‰à6ˆÜ×Ñ ¨4°uÔ=€Fä×Ñ˜& (Õ+÷	8ð 	8ús   ÁCÃC$c                ó–   — |j                  | «      } t        j                  ddgddggddg¬«      }t        j                  |d| d¬	«       y )
Nr;   r<   r=   r>   r   rÝ   Útest_frame_integer_col_namesr«  rÄ  )r�  rœ   rÏ   r   r‘  rÀ  s      r$   Útest_api_integer_col_namesrý  –  sF   € à×"Ñ" 4Ó(€DÜ	�‰˜˜1�v  1˜vÐ&°°A°Ô	7€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 )Nrp   ú-'get_schema' not implemented for ADBC driversTr¸  r�  r’  ÚCREATE©r˜  r™  r  rš  r›  r�  r   Ú
get_schema©rI   r’  rà   r8  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 )	Nrp   rÿ  Tr¸  r�  Úpypi)rd   rö   zCREATE TABLE pypi.r  r  s       r$   Útest_api_get_schema_with_schemar  «  sn   € ð ��~Ø�‰×ÑÜ�K‰K×ÑØFØð ó ô	
ð ×"Ñ" 4Ó(€DÜ—‘ ¨V¸ÀfÔM€JØ :Ñ-Ð-Ñ-r#   c                óL  — d| v r:|j                   j                  t        j                  j	                  dd¬«      «       | }|j                  | «      } t        j                  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 )Nrp   rÿ  Tr¸  çš™™™™™ñ?r÷  r0  çš™™™™™@r  r†  ÚINTEGERr   )rw   r�  r  rù  r   )r˜  r™  r  rš  r›  r�  rœ   rÏ   r3   rw   r   r  )rI   r’  rþ  Úfloat_framer¡  rw   r8  s          r$   Útest_api_get_schema_dtypesr  º  s´   € à��~Ø�‰×ÑÜ�K‰K×ÑØFØð ó ô	
ð €IØ×"Ñ" 4Ó(€DÜ—,‘, c¨3 Z°s¸C°jÑAÓB€KàÐ$Ò$Ø‰å&àˆÜ—‘ ¨V¸ÀcÈ5À\ÔR€JØ�zÑ!Ð!Ð!Ø˜
Ñ"Ð"Ñ"r#   c                ó‚  — d| v r:|j                   j                  t        j                  j	                  dd¬«      «       | }|j                  | «      } t        j                  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 )Nrp   rÿ  Tr¸  r	  r÷  r0  r
  )ÚCol1ÚCol2r�  r  )rd   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   r  )rI   r’  rà   rþ  r¶   r8  Úconstraint_sentences          r$   Útest_api_get_schema_keysr  Ò  sÜ   € à��~Ø�‰×ÑÜ�K‰K×ÑØFØð ó ô	
ð €IØ×"Ñ" 4Ó(€DÜ�L‰L 3¨ *°s¸C°jÑAÓB€EÜ—‘  v°4¸fÔE€Jà�)ÑØGÑàGÐØ *Ñ,Ð,Ð,ô —‘ ¨V¸ÀSÈ#ÀJÔO€JØ�)ÑØIÑàIÐØ *Ñ,Ð,Ñ,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        j                  t        j                  j                  d«      j                  d«      t!        d	«      ¬
«      }|j#                  d| d¬«       t        j$                  d| «      }t        j                  «       }d}g d¢}t        j$                  d| d¬«      D ]3  }	t        j&                  ||	gd¬«      }t)        |	«      ||   k(  sJ ‚|dz  }Œ5 t+        j,                  ||«       |dk(  r?d}
t        j.                  t0        |
¬«      5  t        j2                  d| d¬«       d d d «       y t        j                  «       }d}g d¢}t        j2                  d| d¬«      D ]3  }	t        j&                  ||	gd¬«      }t)        |	«      ||   k(  sJ ‚|dz  }Œ5 t+        j,                  ||«       y # 1 sw Y   �ŒÁxY w# 1 sw Y   y xY w)Nrp   rî  r•  Útest_chunksizeTr¹  r<   )é   rª   ÚabcderÝ   Fr  zselect * from test_chunksizer   )rª   rª   rª   rª   r<   rª   rÙ  ©Úignore_indexr;   r†  z3read_sql_table not supported for a DBAPI connectionrÊ  )r˜  r™  r  rš  r›  r�  r   r½  r   r   rœ   rÏ   r°   ÚrandomÚdefault_rngÚstandard_normalr7  r‘  r   rÛ  r¾  r²   r  rË  ÚNotImplementedErrorr   )rI   r’  rþ  r¿  rÑ   r  r  ÚiÚsizesÚchunkr°  Úres3s               r$   Útest_api_chunksize_readr!  ï  s1  € à��~Ø�‰×ÑÜ�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ò ˆÜ�y‰y˜$ ˜°TÔ:ˆÜ�5‹z˜U 1™XÒ%Ð%Ð%Ø	ˆQ‰‰ðô
 ×Ñ˜$ Ô%ð Ð$Ò$ØCˆÜ�]‰]Ô.°cÔ:ñ 	DÜ×ÑÐ/°ÀÕC÷	Dð 	Dô �|‰|‹~ˆØˆÚˆä×'Ñ'Ð(8¸$È!ÔLò 	ˆEÜ—9‘9˜d E˜]¸Ô>ˆDÜ�u“:  q¡Ò)Ð)Ð)Ø�‰F‰Að	ô
 	×Ñ˜d DÕ)÷M	3ñ 	3ú÷4	Dð 	Dús   Á>IÆ.IÉIÉI%c                óÒ  — |j                  | «      } t        j                  d| «      r1t        j                  | d¬«      5 }|j	                  d«       d d d «       t        j                  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)NÚtest_categoricalTr¹  r  )úJohn P. Doez	Jane Dover$  )Ú	person_idÚperson_namer&  ÚcategoryFr  zSELECT * FROM test_categorical)r�  r   r½  r   r   rœ   rÏ   ÚcopyrŸ   r‘  r   r²   r  )rI   r’  r¿  rÑ   Údf2Úress         r$   Útest_api_categoricalr+  !	  sÏ   € ð ×"Ñ" 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   ¿CÃC&c                ó2  — |j                  | «      } t        j                  d| «      r1t        j                  | d¬«      5 }|j	                  d«       d d d «       t        j                  ddgddggdd	g¬
«      }|j                  d| d¬«       y # 1 sw Y   Œ=xY w)NÚtest_unicodeTr¹  r;   r<   r=   r>   õ   Ã©r  rÝ   Fr  )r�  r   r½  r   r   rœ   rÏ   r‘  )rI   r’  r¿  rÑ   s       r$   Útest_api_unicode_column_namer/  9	  sŠ   € ð ×"Ñ" 4Ó(€DÜ
‡}�}�^ TÔ*Ü�_‰_˜T°DÔ9ð 	1¸YØ× Ñ  Ô0÷	1ô 
�‰˜˜1�v  1˜vÐ&°¸°Ô	>€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        j                  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   Œ~xY w)Nzd1187b08-4943-4c8d-a7f6Tr¹  ©r   r;   r<   r¦   rø  rô  Fr  rA  z'SELECT * FROM "d1187b08-4943-4c8d-a7f6"z'SELECT * FROM `d1187b08-4943-4c8d-a7f6`)r�  r   r½  r   r   rœ   rÏ   r°   Únanr‘  r   r²   r  )rI   r’  rþ  r¿  rÑ   ré  r*  s          r$   Útest_api_escaped_table_namer3  E	  sÃ   € ð €IØ×"Ñ" 4Ó(€DÜ
‡}�}Ð.°Ô5Ü�_‰_˜T°DÔ9ð 	<¸YØ× Ñ Ð!:Ô;÷	<ô 
�‰šI¨S´"·&±&¸#Ð,>Ñ?Ó	@€BØ‡I�IÐ,°$¸e€IÔDà�YÑØ9‰à9ˆÜ
×
Ñ
˜U DÓ
)€Cä×Ñ˜#˜rÕ"÷	<ð 	<ús   ÁCÃCc                óv  — | }|dk(  rt        j                  d«       |j                  | «      } d}t        j                  g d¢g d¢dœ«      }|j                  || dd¬	«       t        || «      }t        j                  ||«       |j                  || dd
¬	«       t        || «      }t        j                  ||«       y )Nr†  rø  zmy tabler  )r>   rª   é   r  Fr«  )r¨   r�  rÁ  )	r  r  r�  rœ   rÏ   r‘  r   r²   r  )rI   r’  rþ  Útricky_namerÑ   r&  s         r$   Útest_api_table_name_quotedr7  Z	  s©   € ð €IØÐ$Ò$Ü�‰ÐQÔRà×"Ñ" 4Ó(€Dà€KÜ	�‰šIªIÑ6Ó	7€Bð ‡I�Iˆk˜4 u¸	€IÔBä˜K¨Ó.€FÜ×Ñ˜& "Ô%à‡I�Iˆk˜4 u¸€IÔFÜ˜K¨Ó.€FÜ×Ñ˜& "Õ%r#   c                óÊ  — |j                  | «      } t        j                  d| «      r1t        j                  | d¬«      5 }|j	                  d«       d d d «       t        j                  g d¢g d¢ddœ«      }|j                  d| d¬	«       t        j                  d
| «      }t        j                  g d¢g d¢g d¢gg d¢¬«      }t        j                  ||«       y # 1 sw Y   Œ‰xY w)NÚ
test_tableTr¹  r  r  r;   ©r¤  r  rò   Fr  z)SELECT a, b, a +1 as a, c FROM test_table)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  )rI   r’  r¿  rÑ   r&  r$  s         r$   Ú#test_api_read_sql_duplicate_columnsr;  r	  s¼   € ð ×"Ñ" 4Ó(€DÜ
‡}�}�\ 4Ô(Ü�_‰_˜T°DÔ9ð 	/¸YØ× Ñ  Ô.÷	/ô 
�‰šIªOÀ!ÑDÓ	E€BØ‡I�I�< T°€IÔ7ä�[‰[ÐDÀdÓK€FÜ�|‰|Ú	šªÐ8Ú$ô€Hô ×Ñ˜& (Õ+÷	/ð 	/úr�  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 )Nr†  úNot Implementedr•  r»  rÔ   rÕ   rÝ   )
rù  r  rš  r›  r�  r   r‘  r   r´   r«  )rI   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 )Nr†  r=  r•  r»  r¨   rï  rÔ   rÕ   rÖ   r×   )r¿  r´   )rù  r  rš  r›  r�  r   r‘  r   r¨   rã  r´   r«  )rI   r’  rà   rþ  r&  s        r$   Útest_read_table_index_colrA  •	  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 )Nrˆ  rø  r•  rÏ  r,   )rù  r  rš  r›  r�  r   r   rÒ  r²   r  r   )rI   r’  Úiris_frame1Úiris_frame2s       r$   Útest_read_sql_delegaterE  ¬	  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   rk   r�   z,CREATE TABLE invalid (x INTEGER, y UNKNOWN);z0CREATE TABLE other_table (x INTEGER, y INTEGER);Úother_tablezSELECT * FROM other_table)r3   rl   r�   rŽ   rm   r�   r_   r@   r²   r®  r   r   r   )rk  rI   rl   rŽ   Ú
query_listré  s         r$   Útest_not_reflect_all_tablesrI  ¿	  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)Nr†  rp   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‘  )rI   r’  rà   rþ  r  s        r$   Ú(test_warning_case_insensitive_table_namerN  Ø	  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                ór  — |j                  | «      } ddlm} t        j                  dt        j
                  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�  r3   rP  rœ   rÏ   rµ  r   r   ÚSQLTablerm   r÷   rò   r®   )rI   r’  rP  rÑ   r  r÷   s         r$   Útest_sqlalchemy_type_mappingrX  ð	  s�   € à×"Ñ" 4Ó(€DÝ$ô 
�‰Ø	”—‘Ð!3Ð5GÐ HÈdÔSÐTó
€Bô 
�‰˜Ó	ð A "Ü—‘˜[¨"°BÔ7ˆä˜%Ÿ+™+Ÿ-™-¨Ñ/×4Ñ4°iÔ@Ð@Ñ@÷A÷ Añ Aús   ÁAB-Â-B6zinteger, expected)Úint8ÚSMALLINT)ÚInt8rZ  )Úuint8rZ  )ÚUInt8rZ  )Úint16rZ  )ÚInt16rZ  )Úuint16r  )ÚUInt16r  )r¼  r  )ÚInt32r  )Úuint32ÚBIGINT)ÚUInt32rd  )rÎ   rd  )ÚInt64rd  rÎ   rd  r  c                óT  — |j                  | «      } t        j                  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   r;   r¤  ©r´   r¡  rU  rV  )r�  rœ   rÏ   r   r   rW  r¼   r÷   rò   r¤  r®   )rI   r’  rú  r$  rÑ   r  r÷   r&  s           r$   Útest_sqlalchemy_integer_mappingri  ÿ	  s�   € ð. ×"Ñ" 4Ó(€DÜ	�‰�q˜!�f s e°7Ô	;€BÜ	�‰˜Ó	ð + "Ü—‘˜[¨"°BÔ7ˆä�U—[‘[—]‘]—_‘_×)Ñ)Ó*ˆ÷+ð �XÒÐÑ÷	+ð +ús   ÁABÂB'rú  Úuint64ÚUInt64c                ó@  — |j                  | «      } t        j                  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   r;   r¤  rh  z1Unsigned 64 bit integer datatype is not supportedrÊ  rU  rV  )	r�  rœ   rÏ   r   r   r  rË  rÌ  rW  )rI   r’  rú  rÑ   r  s        r$   Ú(test_sqlalchemy_integer_overload_mappingrm  
  s�   € ð ×"Ñ" 4Ó(€Dä	�‰�q˜!�f s e°7Ô	;€BÜ	�‰˜Ó	ð 4 "Ü�]‰]ÜÐQô
ñ 	4ô �L‰L˜ b°Õ3÷	4÷4ð 4÷	4ð 	4ú÷4ð 4ús$   ÁBÁBÁ7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 )Nr3   re  r,   r«  FrŽ  rÏ  )
r  r  r¼   r‘  r   rÒ  r   r   r²   r  )
rf  r’  rà   rš   Údb_urir÷   ry  râ   ré  r‚  s
             r$   Útest_database_uri_stringrp  ,
  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)Nr3   z)postgresql+pg8000://user:pass@host/dbnamerq  rÊ  zselect * from table)r  r  rË  ÚImportErrorr   rÒ  )r’  ro  s     r$   Ú(test_pg8000_sqlalchemy_passthrough_errorrt  ?
  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   rk   rA  z%select * from iris where "Name"=:namez#select * from iris where name=:namerš   zIris-versicolorrâ  r1   )r�  r3   rl   r   rÒ  Úset)rI   r’  rþ  rl   Ú	name_textÚiris_dfÚ	all_namess          r$   Útest_query_by_text_objrz  I
  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â  r1   )r�  r3   r|  rÞ  r5   Úwhererò   r1   r   rÒ  rv  )rI   r’  r|  rÞ  r,   Úname_selectrx  ry  s           r$   Útest_query_by_select_objr  Y
  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                óJ  — | }|dk(  r/|j                  t        j                  j                  d¬«      «       |j	                  | «      } t        j                  g d¢g d¢dœ«      }|j                  d| d¬	«       t        j                  d| «      }t        j                  ||«       y )
Nr†  r=  r•  r1  ©r=   r>   rª   )rÔ   z%_variationÚtest_column_percentageFr  )rù  r  rš  r›  r�  rœ   rÏ   r‘  r   r   r²   r  )rI   r’  rþ  rÑ   r*  s        r$   Útest_column_with_percentagerƒ  i
  sŒ   € ð €IØÐ$Ò$Ø×ÑœFŸK™K×-Ñ-Ð5FÐ-ÓGÔHà×"Ñ" 4Ó(€DÜ	�‰šI²iÑ@Ó	A€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_legacyFrZ  r>   z!SELECT * FROM test_frame3_legacy;)	r‚  rƒ  rn   r�   r   r‘  r   r²   r  )rf  râ   rI   r&  s       r$   Útest_sql_open_closer†  y
  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 a URI string requires 'sqlalchemy'rÊ  rÏ  )r  rË  rs  r   rÒ  )rI   r°  s     r$   Útest_con_string_import_errorrˆ  †
  s>   € à*€DØ
4€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$  )rn   ro   rI   )Ú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$  )ÚgetattrrI   )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$  )rI   rG   ©r�  s    r$   rG   zntest_con_unknown_dbapi2_class_does_not_error_without_sql_alchemy_installed.<locals>.MockSqliteConnection.close—
  s   € Ø�I‰I�O‰OÕr#   N)ÚreturnÚNone)r  Ú
__module__Ú__qualname__r�  r“  rG   r"   r#   r$   ÚMockSqliteConnectionr‹  �
  s   „ ó	<ò	,ó	r#   rš  r�  zonly supports SQLAlchemyrÊ  zSELECT 1)r‚  rƒ  r²   r®  r­  r   rÒ  )rš  rI   s     r$   ÚJtest_con_unknown_dbapi2_class_does_not_error_without_sql_alchemy_installedr›  Ž
  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Ê  r,   )r   r   rÒ  r²   r  r  rË  r[  )rˆ  rI   rC  rD  r°  s        r$   Útest_sqlite_read_sql_delegater�  Ÿ
  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 )Nr�  r   )r   r  )rà   r8  s     r$   Útest_get_schema2rŸ  ª
  s    € ä—‘ ¨VÓ4€JØ�zÑ!Ð!Ñ!r#   c                ó†  — | }t        j                  dt        j                  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   rQ  rR  TrS  rU  rV  r	  r   rþ   r;   rP  )	rœ   rÏ   rµ  r   r   ÚSQLiteTableÚ
sql_schemar  Ústrip)r†  rI   rÑ   r  r÷   rö   Úcols          r$   Útest_sqlite_type_mappingr¥  °
  s®   € à€DÜ	�‰Ø	”—‘Ð!3Ð5GÐ HÈdÔSÐTó
€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        j                  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)Nrg  ú#sqlite_str has no inspection systemr   rê   ©ç      ð?ç       @ç      @ç      @©r¬  r«  rª  r©  ©ÚoneÚtwoTr¹  rÙ  r>   )r  r  r�  r3   rë   rœ   rÏ   r   r   r‘  r½  r   ©rI   r’  rë   rÙ  r¿  Úinsps         r$   Útest_create_tabler³  Â
  sÚ   € àˆ|ÒÜ�‰Ð9Ô:à×"Ñ" 4Ó(€Då"ä—‘Ú$Ò-AÑBó€Jô 
�‰˜°Ô	5ð ?¸Ø×Ñ 
¨LÓ9¸QÒ>Ð>Ñ>÷?ñ �4‹=€DØ�>‰>˜,Ô'Ð'Ð'ô 
�‰˜°Ô	5ð +¸Ø×Ñ˜\Ô*÷+ð +÷?ð ?ú÷+ð +ús   Á%CÂ8CÃCÃC(c                óv  — | dk(  rt        j                  d«       |j                  | «      } ddlm} t        j                  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)
Nrg  r§  r   rê   r¨  r­  r®  rÙ  r>   )r  r  r�  r3   rë   rœ   rÏ   r   r   rb  r‘  r½  r   Úclear_cacheÚAttributeErrorr±  s         r$   Útest_drop_tabler·  Ù
  s2  € àˆ|ÒÜ�‰Ð9Ô:à×"Ñ" 4Ó(€Då"ä—‘Ú$Ò-AÑBó€Jô 
�‰˜Ó	ð 0 )Ø×&Ñ&Ó(ñ 	CØ×#Ñ# J°Ó=ÀÒBÐBÑB÷	Cñ �t‹}ˆØ�~‰~˜lÔ+Ð+Ð+à×&Ñ&Ó(ñ 	/Ø× Ñ  Ô.÷	/ð	Ø×ÑÔð —>‘> ,Ô/Ð/Ð/Ð/÷0ð 0÷	Cð 	Cú÷	/ð 	/ûô ò 	Ùð	ú÷0ð 0ús`   Á#D/Á4DÂ3D/Ã DÃD/ÃD Ã+D/ÄD	ÄD/ÄD	ÄD/Ä 	D,Ä)D/Ä+D,Ä,D/Ä/D8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   rb  r‘  rµ   rÁ  rÂ   r½  )rþ  rà   r’  rÀ   rI   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        j                  ddgd	d
gdœd¬«      }t        j                  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)Nr3   Útemp_delete_rows_atomic_framezCREATE TABLE z' (a INTEGER, b INTEGER UNIQUE NOT NULL)r†  rp   r;   r<   r=   r>   r  r¼  r   )rª   r5  rØ  )r«   r«   r«   rð   F©r�  r¨   rÁ  úSELECT * FROM )r  r  rl   rœ   rÏ   r�  r   rb  r@   r‘  rË  rj   r[  rc  r²   r  )rþ  r’  r3   rÀ   Ú
table_stmtÚoriginal_dfÚreplacing_dfrI   r¿  rL   Ú	result_dfs              r$   Útest_delete_rows_is_atomicrÃ    sÜ  € ä×$Ñ$ \Ó2€Jà0€JØ   Ð,SÐT€JàÐ$Ò$¨°yÑ)@Ø$�Z—_‘_ ZÓ0ˆ
ô —,‘, a¨ V°1°a°&Ñ9ÀÔI€KÜ—<‘<¢i²iÑ @ÈÔP€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Â4GÃF(Ã"5GÄG Ä(F4Ä>G ÅGÅ-GÆGÆF%	Æ!GÆ(F1	Æ-GÆ4F=Æ9G Ç G		ÇGÇ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 |j                  _
        t        j                  ||«       y # 1 sw Y   ŒbxY w# 1 sw Y   ŒfxY w)
Nrg  r§  r‘  r>   r“  rp   r”  r•  rÝ   )r  r  r�  r   rb  r‘  rc  ÚrenameÚ	set_indexr¨   rš   r²   r  r–  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ˆØ×Ñ˜iÓ(€Fð €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   rb  r@   r»   rG   r7  )rI   r’  r¿  r�  rO   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 )Nr,   r’  )r�  r   r   r¸   rÓ  s      r$   Útest_sqlalchemy_read_tablerË  K  s,   € à×"Ñ" 4Ó(€DÜ×#Ñ# F°Ô5€JÜ�ZÕ r#   c                óÄ   — |j                  | «      } t        j                  d| ddg¬«      }t        j                  |j
                  t        j                  ddg«      «       y )Nr,   r-   )rd   r´   ÚSepalLength__1)r�  r   r   r²   Úassert_index_equalr´   rœ   ÚIndexrÓ  s      r$   Ú"test_sqlalchemy_read_table_columnsrÐ  R  sX   € à×"Ñ" 4Ó(€DÜ×#Ñ#Ø�D =°-Ð"@ô€Jô ×ÑØ×ÑœBŸH™H mÐ5EÐ%FÓGõr#   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_existr’  )r�  r  rË  rÌ  r   r   )rI   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 )Nrg  ú.types tables not created in sqlite_str fixturer   r   z#boolean dtype not inferred properlyr•  rx   )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Ö  e  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        j                  ddgi¬«      }|j                  d| d¬«      dk(  sJ ‚t	        j
                  d| «      }t        j                  ||«       y )NÚi64l            )rÅ   Útest_bigintFr  r;   r#  ©rI   r’  rÑ   r&  s       r$   rÙ  rÙ  |  sh   € ð ×"Ñ" 4Ó(€DÜ	�‰˜E E 7Ð+Ô	,€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 )Nrg  rÕ  r   z"sqlite does not read date properlyr•  rx   )r  r  rù  rš  r›  r�  r   r   r¯   rz   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³   )rI   r’  r¢  r$  rÑ   r¤  s         r$   Ú!test_datetime_with_timezone_queryrß  —  sJ   € ð ×"Ñ" 4Ó(€DÜ.¨tÓ4€Hô 
Ð.°À+Ô	N€BØ
×
Ñ
€CÜ×Ñ˜3 Õ)r#   c           	     óØ   — |j                  | «      } t        | «      }t        j                  t	        t        d| d¬«      «      d¬«      }|j                  }t        j                  ||«       y )NrÞ  r;   rÙ  Tr  )	r�  r¢   rœ   rÛ  r7  r   r”   r²   r³   )rI   r’  r$  rÑ   r¤  s        r$   Ú+test_datetime_with_timezone_query_chunksizerá  ¦  s\   € à×"Ñ" 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   r‹  r²   r  )rI   r’  r$  r&  Ú	exp_frames        r$   Ú!test_datetime_with_timezone_tablerä  ³  sL   € à×"Ñ" 4Ó(€DÜ.¨tÓ4€HÜ×Ñ ¨$Ó/€Fà×!Ñ!Ó#€IÜ×Ñ˜& )Õ,r#   c           	     ó¤  — | }|j                  | «      } t        j                  dt        j                  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 rSt        |j                  d   t        «      sJ ‚t        j                   |d   «      j
                  j#                  d«      |d<   t        j                  ||«       y )NrÔ   ú2013-01-01 09:00:00r=   ú
US/PacificÚus)Úperiodsr˜   ÚunitÚtest_datetime_tzFr  r   r–   zSELECT * FROM test_datetime_tzr   ©r   rÔ   )r�  rœ   rÏ   Ú
date_ranger‘  ÚdtÚ
tz_convertÚtz_localizer   r   r²   r  r   rm   Úlocr¼   rµ  Úas_unit)rI   r’  rþ  r$  r&  s        r$   Ú%test_datetime_with_timezone_roundtripró  ½  s7  € à€IØ×"Ñ" 4Ó(€Dô
 �|‰|à”—‘Ø%¨q°\Èôð	
ó€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Ü—n‘n V¨C¡[Ó1×4Ñ4×<Ñ<¸TÓBˆˆs‰Ü×Ñ˜& (Õ+r#   c           	     ól  — |j                  | «      } t        j                  dt        ddd«      idg¬«      }|j	                  d| d¬«      dk(  sJ ‚t        j                  d| «      }t        j                  t        j                  t        ddd«      gd	¬
«      dg¬«      }t        j                  ||«       y )Nr   i'  r;   r   rZ  Útest_datetime_obbFr  úM8[us]r   rÝ   )r�  rœ   rÏ   r   r‘  r   r   r°   r¬  r²   r  )rI   r’  rÅ   r&  r$  s        r$   Útest_out_of_bounds_datetimer÷  à  s£   € ð ×"Ñ" 4Ó(€DÜ�<‰<˜¤¨$°°1Ó!5Ð6¸q¸cÔB€DØ�;‰;Ð/°TÀˆ;ÓGÈ1ÒLÐLÐLÜ×ÑÐ 3°TÓ:€FÜ�|‰|Ü
�‰”(˜4  AÓ&Ð'¨xÔ8À6À(ô€Hô ×Ñ˜& (Õ+r#   c                óL  — |j                  | «      } t        j                  dddd¬«      j                  d «      }t        j                  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ê  ÚnumsrZ  Ú	foo_tableÚ	info_date)rš   rd   r×  rï  F)Úcheck_names)r�  rœ   rí  Ú
_with_freqrÏ   rØ  r‘  r   r   r²   r  )rI   r’  Údatesr$  r&  s        r$   Ú"test_naive_datetimeindex_roundtripr  í  s•   € ð ×"Ñ" 4Ó(€DÜ�M‰M˜,°¸À4ÔH×SÑSØó€Eô �|‰|˜V¤U¨1£XÐ.°eÔ<€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 )
Nrx   r   rz   r¡  r£  r¯  r{   rŒ  rê  )r�  r   r   rü  r°   rª  r¯   rz   r¡  r®   r{   )rI   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                óŠ  — | }|j                  | «      } t        j                  t        j                  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 r:t        |j                  d   t         «      sJ ‚t        j"                  |d   «      |d<   t        j                  ||«       y )Nræ  r=   ©ré  r«  rô  Útest_datetimerÅ  r¨   r;   )ÚaxisrÔ   rö  úSELECT * FROM test_datetimer   rì  )r�  rœ   rÏ   rí  r°   rŠ  r‘  r   r   r`   rŸ   r²   r  r   rm   rñ  r¼   rµ  ©rI   r’  rþ  rÑ   r&  r$  s         r$   r  r    s#  € à€IØ×"Ñ" 4Ó(€DÜ	�‰Ü�m‰mÐ1¸1Ô=ÄBÇIÁIÈcÃNÑSó
€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Ü—n‘n V¨C¡[Ó1ˆˆs‰Ü×Ñ˜& (Õ+r#   c                ó~  — | }|j                  | «      } t        j                  t        j                  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 r<t        |j                  d   t         «      sJ ‚t        j"                  |d
   d¬«      |d
<   t        j                  ||«       y )Nræ  r=   r  r«  rô  ©r;   rÔ   r  Fr  rÔ   rö  r	  r   rì  r´  ri   )r�  rœ   rÏ   rí  r°   rŠ  r2  rñ  r‘  r   r   rŸ   r²   r  r   rm   r¼   rµ  r
  s         r$   Útest_datetime_NaTr  6  s  € à€IØ×"Ñ" 4Ó(€DÜ	�‰Ü�m‰mÐ1¸1Ô=ÄBÇIÁIÈcÃNÑSó
€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Ü—n‘n V¨C¡[¸ÔBˆˆs‰ä×Ñ˜& (Õ+r#   c                ó6  — |j                  | «      } t        j                  t        ddd«      t        ddd«      gdg¬«      }|j	                  d| d¬«      dk(  sJ ‚t        d| «      }|d   }t        j                  |d   «      }t        j                  ||«       y )	NéÞ  r;   r<   r¤  rÝ   Ú	test_dateFr  )	r�  rœ   rÏ   r   r‘  r   rµ  r²   r³   )rI   r’  rÑ   r*  r&  r$  s         r$   Útest_datetime_dater  O  s‘   € ð ×"Ñ" 4Ó(€DÜ	�‰”t˜D ! QÓ'¬¨d°A°qÓ)9Ð:ÀSÀEÔ	J€BØ�9‰9˜+¨4°uˆ9Ó=ÀÒBÐBÐBÜ
˜ dÓ
+€CØ�‰X€FÜ�~‰~˜b ™gÓ&€Hä×Ñ˜6 8Õ,r#   c                óÔ  — | }|j                  | «      } t        j                  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   r;   é   r¤  rÝ   Ú	test_timeFr  r<   Ú
test_time2rZ  zSELECT * FROM test_time2c                ó$   — | j                  d«      S ©Nz%H:%M:%S.%f©Ústrftime©Ú_s    r$   rM  z$test_datetime_time.<locals>.<lambda>k  s   € ˜1Ÿ:™: mÓ4€ r#   Ú
test_time3r   zSELECT * FROM test_time3c                ó$   — | j                  d«      S r  r  r  s    r$   rM  z$test_datetime_time.<locals>.<lambda>q  s   € ˜qŸz™z¨-Ó8€ r#   )r�  rœ   rÏ   r   r‘  r   r²   r  r   r   Úmap)rI   r’  r†  rþ  rÑ   r*  rk  Úrefs           r$   Útest_datetime_timer!  \  sH  € ð €IØ×"Ñ" 4Ó(€DÜ	�‰”t˜A˜q !“}¤d¨1¨a°£nÐ5À¸uÔ	E€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                óz  — |j                  | «      } t        j                  dt        j                  ¬«      }t        j                  dt        j
                  ¬«      }t        j                  ||dœ«      }|j                  d| d¬«      dk(  sJ ‚t        j                  d| «      }t        j                  ||dd	¬
«       y )Ni  r   g        )Ús1r�  Útest_read_writeFr  r;   T)Úcheck_dtypeÚcheck_exact)r�  rœ   rž   r°   r¼  Úfloat32rÏ   r‘  r   r   r²   r  )rI   r’  r#  r�  rÑ   r)  s         r$   Útest_mixed_dtype_insertr(  w  s–   € ð ×"Ñ" 4Ó(€DÜ	�‰�9¤B§H¡HÔ	-€BÜ	�‰�3œbŸj™jÔ	)€BÜ	�‰˜R rÑ*Ó	+€Bð �9‰9Ð+°¸Uˆ9ÓCÀqÒHÐHÐHÜ
×
Ñ
Ð.°Ó
5€Cä×Ñ˜"˜c¨uÀ$ÖGr#   c                ó^  — |j                  | «      } t        j                  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 )
Nr1  r¦   rø  rô  Útest_nanFr  r=   úSELECT * FROM test_nan)r�  rœ   rÏ   r°   r2  r‘  r   r   r²   r  r   rÚ  s       r$   Útest_nan_numericr,  †  s˜   € ð ×"Ñ" 4Ó(€DÜ	�‰šI¨S´"·&±&¸#Ð,>Ñ?Ó	@€BØ�9‰9˜*¨$°eˆ9Ó<ÀÒAÐAÐAô ×Ñ 
¨DÓ1€FÜ×Ñ˜& "Ô%ô ×ÑÐ 8¸$Ó?€FÜ×Ñ˜& "Õ%r#   c                óÎ  — |j                  | «      } t        j                  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 )
Nr1  rô  r*  Fr  r=   rÕ   rü  r+  )r�  rœ   rÏ   r°   r2  r‘  r   r   r²   r  rŸ   r   rÚ  s       r$   Útest_nan_fullcolumnr.  –  s¿   € ð ×"Ñ" 4Ó(€DÜ	�‰šI¬R¯V©V´R·V±V¼R¿V¹VÐ,DÑEÓ	F€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                ó|  — |j                  | «      } t        j                  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 )Nr1  r¤  r  rô  r*  Fr  r=   ©r<   rÕ   r+  )r�  rœ   rÏ   r°   r2  r‘  rñ  r   r   r²   r  r   rÚ  s       r$   Útest_nan_stringr1  ¨  s§   € ð ×"Ñ" 4Ó(€DÜ	�‰šI¨S°#´r·v±vÐ,>Ñ?Ó	@€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                  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 )Nrp   z)ADBC implementation does not create indexTr¸  rè  rê  rí  rÔ   rî  Útest_to_sql_saves_indexr<   >   rg  r†  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ò  r   rb  r‘  r   r   rš   rð   r«  r3   rë   Úget_indexes)rI   r’  rþ  rÑ   Útbl_namer¿  ÚixsÚix_colsÚix_nameÚix_inforë   r²  r  s                r$   Útest_to_sql_save_indexr=  »  s£  € à��~Ø�‰×ÑÜ�K‰K×ÑØBÈ4ð ó ô	
ð
 €IØ×"Ñ" 4Ó(€DÜ	�‰×	"Ñ	"Ø	Ð-Ð.ºÐPSÈuð 
#ó 
€Bð )€HÜ	˜4Ó	 ð 7 IØ×&Ñ&Ó(ñ 	7Ø×#Ñ# B¨Ó1°QÒ6Ð6Ñ6÷	7÷7ð Ð4Ñ4Ü× Ñ ðØ'˜j¨ð+àó
ˆð
 ˆØ—x‘xò 	2ˆGÜ×(Ñ(Ð+=¸g¸YÀaÐ)HÈ$ÓOˆGØ�N‰N˜7Ÿ<™<×.Ñ.Ó0Õ1ñ	2õ 	'á�t‹}ˆà×Ñ˜xÓ(ˆØ.1Ö2¨�1�^Ó$Ð2ˆÐ2à˜�u�gÒÐÑ÷+	7ð 	7ú÷7ð 7üò( 3s*   ÂE<ÂE0Â0E<ÅFÅ0E9	Å5E<Å<F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)r†  rp   r   rk   )r�  r3   rl   r   rb  r@   )rI   r’  rþ  rK   rl   r¿  Útranss          r$   Útest_transactionsrA  ã  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?  rp   r   rk   c                  ó   — e Zd Zy)ú1test_transaction_rollback.<locals>.DummyExceptionN)r  r˜  r™  r"   r#   r$   ÚDummyExceptionrD    s   „ Ør#   rE  z/INSERT INTO test_trans (A,B) VALUES (1, 'blah')r¸  zSELECT * FROM test_transr;   )r�  r   rb  rm   r   r@   r3   rl   r  r   rc  r¾  )rI   r’  rþ  r¿  r@  rK   rl   rE  Úins_sqlr*  r  s              r$   Útest_transaction_rollbackrG  ó  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)Nrg  z(test does not support sqlite_str fixturer•  r   rk   r�   Útest_get_schema_create_tabler’  Frð  )rù  r  rš  r›  r�  r3   rl   r�   rŽ   r   r  r­   rm   r�   r_   r@   r   r²   r  )
rI   r’  râ   rl   rŽ   r&  r8  Úblank_test_dfÚnewconÚreturned_dfs
             r$   rI  rI    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                ód  — | dk(  rt        j                  d«       |j                  | «      } ddlm}m} ddlm} ddg}dd	g}t        j                  ||¬
«      }|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)Nrg  r§  r   )rs   r*   ©r)   rÔ   rÕ   ©gš™™™™™é?T©gÍÌÌÌÌÌì?NrÝ   Ú
dtype_testrÅ  r<   Údtype_test2©rš   rd   r¡  rZ   z&The type of B is not a SQLAlchemy typerÊ  r¸  Údtype_test3é
   Úsingle_dtype_test)r  r  r�  r3   rs   r*   Úsqlalchemy.schemar)   rœ   rÏ   r‘  ÚreflectÚtablesr´   r®   rm   rË  rÌ  r¼   rá  )rI   r’  rs   r*   r)   r>  rÅ   rÑ   ÚmetaÚsqltyper°  ÚsqltypeaÚsqltypebs                r$   Ú
test_dtyper^  ;  s  € àˆ|ÒÜ�‰Ð9Ô:à×"Ñ" 4Ó(€D÷õ +à�ˆ:€DØ˜Ð%€DÜ	�‰�d DÔ	)€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   Ã6H%È%H/c                ó(  — | dk(  rt        j                  d«       | }|j                  | «      } ddlm}m}m}m} ddlm	} t        j                  dd g«      t        j                  t        ddd	«      d g«      t        j                  d	d gd
¬«      t        j                  dd g«      dœ}t        j                  |«      }	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 )Nrg  r§  r   )rt   ru   rv   rw   rN  TéÜ  rª   r;   rü  r   r	  ©ÚBoolÚDateÚIntrv   Únotna_dtype_testrÅ  r<   rZ   r   rb  rc  rd  rv   )r  r  r�  r3   rt   ru   rv   rw   rW  r)   rœ   rž   r   rÏ   r‘  r   r   rX  rY  r´   rm   r®   )rI   r’  rþ  rt   ru   rv   rw   r)   r>  rÑ   r&  r  rZ  Úmy_typeÚcol_dicts                  r$   Útest_notna_dtyperh  e  st  € àˆ|ÒÜ�‰Ð9Ô:à€IØ×"Ñ" 4Ó(€D÷ó õ +ô —	‘	˜4 ˜,Ó'Ü—	‘	œ8 D¨!¨QÓ/°Ð6Ó7Ü�y‰y˜!˜T˜¨(Ô3Ü—‘˜C ˜;Ó'ñ	€Dô 
�‰�dÓ	€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        j                  t        j                  |gd¬«      t        j                  |gd	¬«      t        j                  |gd	¬«      t        j                  d
gd¬«      t        j                  d
gd¬«      dœ«      }|j                  d| ddd |d¬«      i¬«      dk(  sJ ‚t        j                  d| «      }t        j                   |d   |d   d¬«        |«       }	|	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 )Nrg  r§  r   )Ú
BigIntegerrv   rw   rN  çñYÉBÊÀó?r'  r   Úfloat64rª   r¼  rÎ   )Úf32Úf64Ú
f64_as_f32Úi32rØ  Útest_dtypesFr«  ro  é   )Ú	precision)rš   rd   r¨   r�  r¡  r;   rn  T©r&  rZ   rm  rp  rØ  )r  r  r�  r3   rj  rv   rw   rW  r)   rœ   rÏ   rž   r‘  r   r   r²   r³   rX  rY  r´   r¼   r®   rm   )rI   r’  rj  rv   rw   r)   ÚVrÑ   r*  rZ  rg  s              r$   Útest_double_precisionrv  Š  sÌ  € àˆ|ÒÜ�‰Ð9Ô:à×"Ñ" 4Ó(€D÷ñ õ
 +à€Aä	�‰ä—9‘9˜a˜S¨	Ô2Ü—9‘9˜a˜S¨	Ô2ÜŸ)™) Q C¨yÔ9Ü—9‘9˜a˜S¨Ô0Ü—9‘9˜a˜S¨Ô0ñ	
ó
€Bð 	�	‰	ØØØØØ¡°Ô!4Ð5ð 	ó 	
ð ò	ð	ð	ô ×
Ñ
˜]¨DÓ
1€Cä×Ñ˜2˜e™9 c¨%¡j¸dÕCñ ‹:€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                óZ  ‡— ddl mŠm} t        j                  dddgi«      }|j                  d| d¬«       ˆfd	„}t        j                  | «      5 }|j                  |j                  d
|«       |j                  d«      }d d d «       t        j                  |d¬«       y # 1 sw Y   Œ"xY w)Nr   )rv   ÚeventÚvrk  gpé~°=Útest_float_asdecimalFr  c                ó   •—  ‰d¬«      |d<   y )NT)Ú	asdecimalr®   r"   )Ú	inspectorr÷   Úcolumn_inforv   s      €r$   Úas_decimal_floatz=test_read_sql_table_float_asdecimal.<locals>.as_decimal_floatÇ  s   ø€ Ù#¨dÔ3ˆ�FÒr#   Úcolumn_reflectTrt  )r3   rv   rx  rœ   rÏ   r‘  r   r   ÚlistenrZ  Ú
read_tabler²   r  )ri  rx  rÑ   r  rœ  r*  rv   s         @r$   Ú#test_read_sql_table_float_asdecimalrƒ  ½  s›   ø€ ÷ô
 
�‰�sÐ/°Ð9Ð:Ó	;€BØ‡I�IÐ)¨}ÀE€IÔJô4ô 
�‰˜Ó	'ð <¨:Ø�‰�Z—_‘_Ð&6Ð8HÔIØ×#Ñ#Ð$:Ó;ˆ÷<ô ×Ñ˜#˜r¨tÖ4÷<ð <ús   Á/B!Â!B*c                óÌ   ‡‡‡‡— |j                  | «      } ddlmŠ d„ Šd„ Šˆˆfd„Šˆˆfd„}t        j                  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_datar’  )r   r   )r  ré  s     r$   Útest_selectz3test_connectable_issue_example.<locals>.test_selectØ  s   € Ø9ˆÜ×!Ñ! %¨ZÔ8Ð8r#   c                ó,   — |j                  d| d¬«       y )NÚtest_foo_datarð   )rš   rd   r�  )r‘  )r  rÅ   s     r$   Útest_appendz3test_connectable_issue_example.<locals>.test_appendÜ  s   € Ø�‰˜¨jÀHˆÕMr#   c                ó(   •—  ‰| «      } ‰| |«       y r$  r"   )rI   Úfoo_datar‰  r†  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$  )rm   r�   r_   )ÚconnectablerI   rŽ   rŒ  s     €€r$   Úmainz,test_connectable_issue_example.<locals>.mainå  se   ø€ Ü�k 6Ô*Ø×$Ñ$Ó&ð +¨$Ø—Z‘Z“\ñ +Ù$ TÔ*÷+÷+ð +ñ ˜[Õ)÷+ð +ú÷+ð +ús!   žA¯	A¸AÁA	ÁAÁA'rˆ  r1  rÅ  r=   )r�  r�   rŽ   rœ   rÏ   r‘  )rI   r’  r�  rŽ   r‰  rŒ  r†  s      @@@@r$   Útest_connectable_issue_exampler�  Ð  sr   û€ à×"Ñ" 4Ó(€Dõ )ò9òNõ$õ*ô 	�‰�o¢yÐ1Ó2×9Ñ9Ø  dð 	:ó 	
ð ò	ðð	ñ
 	ˆ…Jr#   ÚinputrÄ  Úbar)rÄ  Úinfe0c                óœ  — t        j                  |«      }| }|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  r;   )rœ   rÏ   r�  r  rË  rj   r[  r‘  r   r   r²   Úassert_equal)rI   r’  r‘  rÑ   rþ  r°  r*  s          r$   Útest_to_sql_with_negative_npinfr˜  ö  s¹   € ô 
�‰�eÓ	€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   ÁCÃCc                óŒ  ‡‡‡— | dk(  rt        j                  d«       |j                  | «      } ddlmŠmŠmŠm} ddlm	}m
} d}t        j                  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)Nrg  z&test does not work with str connectionr   )r'   rw   Ú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)r  r˜  r™  Ú__tablename__Ú__table_args__Úidr�  )r'   rw   rš  s   €€€r$   Ú	TemporaryrŸ  %  s0   ø„ Ø#ˆØ$ { mÐ4ˆÚ‘G¨Ô.ˆÚ’g˜b“k¨EÔ2‰r#   r©  )r�  )r   rd   )r  r  r�  r3   r'   rw   rš  rÞ  Úsqlalchemy.ormr›  rœ  rœ   rÏ   r_   r  Ú	__table__ra   ÚaddÚflushr   r   r�  r²   r  )rI   r’  rÞ  r›  rœ  rA  r$  ÚBaser©  ÚsessionrÑ   r'   rw   rš  s              @@@r$   Útest_temporary_tabler°    s  ú€ àˆ|ÒÜ�‰Ð<Ô=à×"Ñ" 4Ó(€D÷ó ÷ð
  €IÜ�|‰|˜V i [Ð1Ó2€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%   Á;D:ÂA;D.ÄD:Ä.D7	Ä3D:Ä:E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)
Nr†  rp   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‘  )rI   r’  rà   r°  r¿  s        r$   Útest_invalid_enginer´  5  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à   Úautor³  r>   N)r�  r   rb  r‘  r½  r¾  rÂ   r}  s         r$   Útest_to_sql_with_sql_enginer·  E  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.enginer3   rà   r>   ©	r�  rœ   Úoption_contextr   rb  r‘  r½  r¾  rÂ   r}  s         r$   Útest_options_sqlalchemyr¼  T  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à   r>   rº  r}  s         r$   Útest_options_autor¿  c  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)Nr3   r¹  r¶  )r  r  rm   r   r   rœ   r»  r"   r#   r$   Útest_options_get_enginerÁ  r  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)Nr�  Fr«  ©rš   rd   r¨   r�  úmode.string_storageúSelect * from r²  rp   z(adbc does not support chunksize argumentr•  r=   )rd   r³  rÚ  )r�  r‘  rœ   r»  r’  r²   r  rù  r  rš  r›  ©rI   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   rp   zhSQLite actually returns proper boolean values via read_sql_table, but before pytest refactor was skippedr•  r�  Fr«  rÄ  rÅ  r²  r=   )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)	Nr�  Fr«  rÄ  zPdtype_backend numpy is invalid, only 'numpy_nullable' and 'pyarrow' are allowed.rÊ  Únumpyr²  )r�  r‘  r  rË  rÌ  r’  rœ   )rI   r’  rÂ  rÉ  r÷   rÑ   r°  s          r$   Ú)test_read_sql_invalid_dtype_backend_tablerÑ  Û  sv   € ð ×"Ñ" 4Ó(€DØ€EØ	€BØ‡I�I�5˜d¨%¸9€IÔEð	!ð ô 
�‰”z¨Ô	-ñ >ØŒ”�DÓ˜% °WÕ=÷>÷ >ñ >ús   ÁA+Á+A4c                 óB  — t        j                  t        j                  dt         j                  dgd¬«      t        j                  g d¢d¬«      t        j                  dt         j                  dgd¬«      t        j                  g d	¢d¬«      g d
¢g d¢g d¢g d¢dœ«      S )Nr;   r=   rf  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É  ë  sq   € ä�<‰<ä—‘˜AœrŸu™u a˜=°Ô8Ü—‘š9¨GÔ4Ü—‘˜C¤§¡¨Ð,°IÔ>Ü—‘š?°)Ô<Ú$Ú$Ú Ú!ñ		
óð r#   c                 ó   — dd„} | S )Nc                óú  — |dk(  r9t        j                  d«      }t        j                  |j	                  «       «      }nt        j
                  | «      }t        j                  t        j                  dt        j                  dgd¬«      t        j                  g d¢d¬«      t        j                  dt        j                  dgd	¬«      t        j                  g d
¢d	¬«      t        j                  ddt        j                  gd¬«      t        j                  g d¢d¬«      t        j                  g d¢|¬«      t        j                  g d¢|¬«      dœ«      }|dk(  rct        j                  d«      }ddl	m
} t        j                  |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 )NrF  r;   r=   rf  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þ  ÚpaÚstring_dtyperÑ   râ  r¤  s           r$   rÂ  z$dtype_backend_expected.<locals>.funcý  s™  € à˜IÒ%Ü×$Ñ$ YÓ/ˆBÜŸ=™=¨¯©«Ó5‰LäŸ>™>¨.Ó9ˆLä�\‰\ä—Y‘Y ¤2§5¡5¨!˜}°GÔ<Ü—Y‘Yšy°Ô8Ü—Y‘Y ¤R§U¡U¨CÐ0¸	ÔBÜ—Y‘Yš°iÔ@Ü—Y‘Y  e¬R¯U©UÐ3¸9ÔEÜ—Y‘YÒ2¸)ÔDÜ—Y‘Yš°lÔCÜ—Y‘YÒ/°|ÔDñ	ó
ˆð ˜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   Æ$G8©r–  úpd.DataFramer"   )rÂ  s    r$   rÊ  rÊ  û  s   € ó&ðP €Kr#   c                ó–  — d| v r9|j                   j                  t        j                  j	                  d¬«      «       |j                  | «      } dddœ}t        j                  ddg¬	«      j                  |«      }|j                  «       }|j                  d
| dd¬«       t        d| |d¬«      D ]  }t        j                  ||«       Œ y )Nrp   rî  r•  rÎ   rü  r  r¤  r  rÝ   r�  Fr«  rÄ  zSELECT * FROM testr;   )r¡  rÚ  )r˜  r™  r  rš  r›  r�  rœ   rÏ   rŸ   r(  r‘  r   r²   r  )rI   r’  r¬   rÑ   r$  r&  s         r$   Útest_chunksize_empty_dtypesrí  (  s½   € ð ��~Ø�‰×ÑÜ�K‰K×ÑÐ%RÐÓSô	
ð ×"Ñ" 4Ó(€DØ Ñ*€FÜ	�‰˜s C˜jÔ	)×	0Ñ	0°Ó	8€BØ�w‰w‹y€HØ‡I�I�6˜t¨5¸I€IÔFä ØØØØô	ò 0ˆô 	×Ñ˜f hÕ/ñ0r#   r³  rä  c                óÄ  — |j                  | «      } d}t        j                  g d¢ddœ«      }|j                  || dd¬«        t	        t        |«      d|› �| d	t
        j                  i|¬
«      }t        j                  t        j                  g d¢t
        j                  ¬«      t        j                  g d¢|dk(  sdnd¬«      dœ«      }t        j                  ||«       y )Nr�  r  rª   r  Fr«  rÄ  rÆ  r¤  )r¡  r³  r   )rª   rª   rª   rä  rÎ   rf  )
r�  rœ   rÏ   r‘  r’  r°   rl  rž   r²   r  )rI   r’  rÂ  r³  r÷   rÑ   r&  r$  s           r$   Útest_read_sql_dtyperï  >  sÄ   € ð
 ×"Ñ" 4Ó(€DØ€EÜ	�‰šI¨AÑ.Ó	/€BØ‡I�I�5˜d¨%¸9€IÔEàŒW”R˜ÓØ
˜˜Ð ØØ”B—J‘JÐØ#ô	€Fô �|‰|ä—‘š9¬B¯J©JÔ7Ü—‘ÚØ%2Ð6FÒ%F‘gÈGôñ	
ó€Hô ×Ñ˜& (Õ+r#   c                óð   — | }t        j                  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¤  r;   r<   rÎ   r   Útest_bigintwarningFr  )rœ   rÏ   r‘  r²   r®  r   r   ©ri  rI   rÑ   s      r$   Útest_bigint_warningró  Z  sq   € Ø€Dä	�‰�s˜Q ˜F�m¨7Ô	3€BØ�9‰9Ð.°DÀˆ9ÓFÈ!ÒKÐKÐKä	×	#Ñ	# DÓ	)ñ 7Ü×ÑÐ/°Ô6÷7÷ 7ñ 7ús   ÁA,Á,A5c                óÊ   — | }t        j                  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)Nr;   r<   r=   r>   ©r   r!  zEmpty table name specifiedrÊ  r¦  r«  FrŽ  )rœ   rÏ   r  rË  rÌ  r‘  rò  s      r$   Útest_valueerror_exceptionrö  d  s^   € Ø€DÜ	�‰  1˜v°°1¨vÑ6Ó	7€BÜ	�‰”zÐ)EÔ	Fñ GØ
�	‰	�r˜t¨yÀˆ	ÔF÷G÷ Gñ Gús   ºAÁA"rc   ©r;   r;   Úxc                ó  ‡‡— g Š G ˆfd„d«      Š G ˆfd„d«      }t        j                  t        d¬«      5  t        j                  d |«       | ¬«       d d d «       t        ‰«      d	k(  sJ ‚‰d
   | u sJ ‚y # 1 sw Y   Œ#xY w)Nc                  ó*   •— e Zd ZdgZˆ fd„Zd„ Zd„ Zy)ú:test_dbapi_params_passed_through_unchanged.<locals>.Cursor)r¤  c                ó(   •— ‰j                  |«       y r$  )Úextend)r�  r   rŽ  Úreceiveds      €r$   r@   zBtest_dbapi_params_passed_through_unchanged.<locals>.Cursor.executes  s   ø€ Ø�O‰O˜DÕ!r#   c                ó   — dgS )Nr÷  r"   r•  s    r$   rì   zCtest_dbapi_params_passed_through_unchanged.<locals>.Cursor.fetchallv  s	   € Ø�6ˆMr#   c                 ó   — y r$  r"   r•  s    r$   rG   z@test_dbapi_params_passed_through_unchanged.<locals>.Cursor.closey  ó   € Ør#   N)r  r˜  r™  Údescriptionr@   rì   rG   )rþ  s   €r$   ÚCursorrû  p  s   ø„ Ø�hˆô	"ò	ó	r#   r  c                  ó$   •— e Zd Zˆ fd„Zd„ Zd„ Zy)ú7test_dbapi_params_passed_through_unchanged.<locals>.Conc                ó   •—  ‰«       S r$  r"   )r�  r  s    €r$   r?   z>test_dbapi_params_passed_through_unchanged.<locals>.Con.cursor}  s
   ø€ Ù“8ˆOr#   c                 ó   — y r$  r"   r•  s    r$   rH   z>test_dbapi_params_passed_through_unchanged.<locals>.Con.commit€  r  r#   c                 ó   — y r$  r"   r•  s    r$   rW  z@test_dbapi_params_passed_through_unchanged.<locals>.Con.rollbackƒ  r  r#   N)r  r˜  r™  r?   rH   rW  )r  s   €r$   ÚConr  |  s   ø„ ô	ò	ó	r#   r	  zOther DBAPI2 objectsrÊ  zselect 1râ  r;   r   )r²   r®  r­  r   rÒ  r¾  )rc   r	  r  rþ  s     @@r$   Ú*test_dbapi_params_passed_through_unchangedr
  k  s|   ù€ ð €H÷
ó 
÷ó ô 
×	#Ñ	#¤KÐ7MÔ	Nñ 7Ü�‰�Z¡£¨vÕ6÷7äˆx‹=˜AÒÐÐØ�A‰;˜&Ñ Ð Ñ ÷7ð 7ús   ¸A8Á8Bc                ób  ‡
‡‡— | }ddl mŠ
mŠmŠ ddlm}m}  |«       } G ˆ
ˆˆfd„d|«      }|j                  «       5  |j                  j                  |«       d d d «        ||¬«      } |«       5 }t        j                  ddgdd	gd
œ«      }|j                  d|dd¬«      dk(  sJ ‚|j                  «        |j                  |j                  |j                   «      }	t        j                  |	«      }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   ©r'   rw   r*   )rœ  Úsessionmakerc                  óJ   •— e Zd ZdZ W ° W °d¬«      Z W °  W °d«      «      Zy)ú,test_row_object_is_named_tuple.<locals>.Testr»  Tr£  é2   N)r  r˜  r™  r¦  r¨  Ústring_columnr  s   €€€r$   ÚTestr  ž  s"   ø„ Ø$ˆÚ‘G¨Ô.ˆÚšv b›zÓ*‰r#   r  rZ   r;   ÚhelloÚworld)r¨  r  r»  Fr«  rÄ  r<   r¨  r  )r3   r'   rw   r*   rª  rœ  r  r_   r4   Ú
create_allrœ   rÏ   r‘  rH   ré  r¨  r  r7  r´   )ri  rI   rœ  r  Ú	BaseModelr  r›  r¯  rÑ   Ú
test_queryr'   rw   r*   s             @@@r$   Útest_row_object_is_named_tupler  Œ  s   ú€ Ø€D÷
ñ ÷
ñ
 !Ó"€I÷+ð +ˆyô +ð
 
�‰‹ñ ,Ø×Ñ×%Ñ% dÔ+÷,á Ô%€GÙ	‹ð &�gÜ�\‰\ ! Q ¸7ÀGÐ:LÑMÓNˆà�I‰I˜<¨T¸È)ˆIÓTØòð	
ðð 	�‰ÔØ—]‘] 4§7¡7¨D×,>Ñ,>Ó?ˆ
Ü�\‰\˜*Ó%ˆ÷&ô �—
‘
Ó  oÐ6Ò6Ð6Ñ6÷,ð ,ú÷&ð &ús   ¾DÁ2BD%ÄD"Ä%D.c                óÌ   — | }d}t        j                  dddgi«      }|j                  «       }|j                  ||dd¬«       t	        ||«      }t        j                  ||«       y )Nr�  r¤  rø  ÚyFr«  )rd   r¨   r�  )rœ   rÏ   r(  r‘  r   r²   r  )ri  rI   r÷   rÑ   r$  r&  s         r$   Útest_read_sql_string_inferencer  ³  s^   € Ø€Dà€EÜ	�‰�s˜S #˜JÐ'Ó	(€BØ�w‰w‹y€Hà‡I�Iˆe˜ U°i€IÔ@Ü˜E 4Ó(€FÜ×Ñ˜& (Õ+r#   c           	     óÒ   — | }t        j                  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   r�  r«  Fr½  úselect * from test©r   r   z2020-12-31 12:00:00.000000)rœ   rÏ   r   r‘  rÒ  r­   )ri  rI   rÑ   r&  s       r$   Útest_roundtripping_datetimesr"  ¿  sj   € Ø€Dä	�‰�sœX d¨B°°BÓ7Ð8Ð9ÐAQÔ	R€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)Nr�  )Údetect_types)r‚  rƒ  rn   r�   ÚPARSE_DECLTYPESr„  s     r$   Úsqlite_builtin_detect_typesr&  È  sc   è ø€ ä	×	Ñ	Ü�‰˜
´×1HÑ1HÔIó
ð à	Øð 	˜TØŠJ÷	÷ð ÷	ð 	ú÷ð üs3   ‚9A,»A ¾AÁA Á	A,ÁA	ÁA Á A)Á%A,c           	     óø   — | }t        j                  dt        dddd«      gid¬«      }|j                  d|dd	¬
«       t        j                  d|«      j
                  d   }|t        j                  d«      k(  sJ ‚y r  )rœ   rÏ   r   r‘  rÒ  r­   r�   )r&  rI   rÑ   r&  s       r$   Ú)test_roundtripping_datetimes_detect_typesr(  Ñ  ss   € à&€DÜ	�‰�sœX d¨B°°BÓ7Ð8Ð9ÐAQÔ	R€BØ‡I�Iˆf�d i°u€IÔ=Ü�[‰[Ð-¨tÓ4×9Ñ9¸$Ñ?€FØ”R—\‘\Ð">Ó?Ò?Ð?Ñ?r#   c                ó²  — | }t        j                  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        j                  ||gd¬«      |	«       y # 1 sw Y   �Œ6xY w# 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   ŒÍxY w)Nr;   r<   r  r¦   r¤  r  r  z$DROP SCHEMA IF EXISTS other CASCADE;zCREATE SCHEMA other;Útest_schema_publicFr  Útest_schema_public_explicitr?  )rš   rd   r¨   rö   Útest_schema_otherÚotherr@  z!Table test_schema_other not foundrÊ  )rš   rd   rö   r¨   r«  )rš   rd   rö   r¨   r�  rð   Tr  )rœ   rÏ   r�   r_   r½   r‘  r   r   r²   r  r  rË  rÌ  rÛ  )
r=  rI   rÑ   rd   r  r  r   Úres4r°  r*  s
             r$   Útest_psycopg2_schema_supportr/  Ú  sß  € à%€Dô 
�‰  1˜v°°S¨zÀCÈÀ:ÑNÓ	O€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Ü×Ñœ"Ÿ)™) R¨ H¸4Ô@À#ÕF÷}	8ñ 	8ú÷8ñ 8ú÷<Gñ Gú÷	8ð 	8ú÷8ð 8úsS   ²J'Á#JÁ&J'ÆJ4ÇKÇ#KÇ9KÊJ$	ÊJ'Ê'J1Ê4J>ËK
	ËKËKc                óL  — | }ddl m}  |d«      }|j                  «       5 }|j                  «       5  |j	                  |«       d d d «       d d d «       d}t        j                  ||«      }t        j                  dt        j                  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   rk   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;r;   Ú2021r–   r—   r<   r¨  Ú
created_dtrÝ   r›   Tr¹  Úperson)r6  rl   r�   r_   r@   rœ   rÒ  rÏ   r�   rŸ   r²   r  r   r   r   )	r=  rI   rl   rT  rd   r  r&  r$  r¿  s	            r$   Útest_self_join_date_columnsr4  %  s   € ð &€DÝ#áð		ó€Lð 
�‰‹ð &˜3Ø�Y‰Y‹[ñ 	&Ø�K‰K˜Ô%÷	&÷&ð
 	Sð ô �[‰[˜ DÓ)€FÜ�|‰|Ø
ŒR�\‰\˜& UÔ+Ð	,¨qÑ	0Ð1¸DÀ,Ð;OÐRSÑ;Sô€Hð & lÑ3×:Ñ:¸=ÓI€Hˆ\ÑÜ×Ñ˜& (Ô+ô 
�‰˜°Ô	5ð '¸Ø×Ñ˜XÔ&÷'ð '÷	&ð 	&ú÷&ð &ú÷'ð 'ús.   ¡D²DÁDÃ'DÄD	ÄDÄDÄD#c                óÈ  — | }t        j                  g d¢g d¢dœ«      }t        j                  |«      5 }|j	                  «       5  |j                  |d«      dk(  sJ ‚	 d d d «       |j                  d«      sJ ‚|j	                  «       5  |j                  d«       d d d «       |j                  d«      rJ ‚	 d d d «       y # 1 sw Y   ŒcxY w# 1 sw Y   Œ2xY w# 1 sw Y   y xY w)Nr¨  r­  r®  Údrop_test_framer>   )rœ   rÏ   r   r   rb  r‘  r½  r   )ri  rI   rÙ  r¿  s       r$   Útest_create_and_drop_tabler7  J  sê   € Ø€DÜ—‘Ú$Ò-AÑBó€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ÁC Á+CÂ	CÂCÃ C		ÃCÃC	ÃCÃC!c                ó  — | }t        j                  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  r;   r<   r¤  rÝ   r  Fr  zSELECT * FROM test_date)	rœ   rÏ   r   r‘  r   r²   r  rŸ   r¼   )r†  rI   rÑ   r*  s       r$   Útest_sqlite_datetime_dater9  [  sr   € Ø€DÜ	�‰”t˜D ! QÓ'¬¨d°A°qÓ)9Ð:ÀSÀEÔ	J€BØ�9‰9˜+¨4°uˆ9Ó=ÀÒBÐBÐBÜ
Ð2°DÓ
9€Cä×Ñ˜#˜rŸy™y¬›~Õ.r#   Útz_awareFTc                ó¢  — |}| st        ddd«      t        ddd«      g}nKt        j                  ddd¬«      }t        j                  |j	                  «       «      j                  d	„ «      }t        j                  |d
g¬«      }|j                  d|d¬«      dk(  sJ ‚t        d|«      }|j                  d„ «      }t        j                  ||«       y )Nr  r   r;   r  ræ  r<   rç  )ré  r˜   c                ó"   — | j                  «       S r$  )Útimetz)rî  s    r$   rM  z+test_sqlite_datetime_time.<locals>.<lambda>l  s   € À2Ç9Á9Ã;€ r#   r¤  rÝ   r  Fr  zSELECT * FROM test_timec                ó$   — | j                  d«      S r  r  r  s    r$   rM  z+test_sqlite_datetime_time.<locals>.<lambda>s  s   €  §
¡
¨=Ó 9€ r#   )r   rœ   rí  rž   Úto_pydatetimer  rÏ   r‘  r   r²   r  )r:  r†  rI   Útz_timesÚtz_dtrÑ   r*  r$  s           r$   Útest_sqlite_datetime_timerB  d  sµ   € à€DáÜ˜˜A˜q“M¤4¨¨1¨b£>Ð2‰ä—‘Ð3¸QÀ<ÔPˆÜ—9‘9˜U×0Ñ0Ó2Ó3×7Ñ7Ñ8NÓOˆä	�‰�h¨¨Ô	.€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(r5  zTable z	, column z
 not found)r@   rÌ  )
rI   r÷   ÚcolumnÚrecsÚcidrš   ÚctypeÚnot_nullÚdefaultÚpks
             r$   Úget_sqlite_column_typerK  w  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                  ||¬«      }|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Õ   rO  rP  rÝ   rQ  rÅ  r<   rR  ÚSTRINGrS  r  zHInvalid type '<class 'bool'>' for dtype of column 'B': expected a stringrÊ  r¸  rV  )rœ   rÏ   r‘  rK  r  rË  rÌ  Úbool)r†  rI   r>  rÅ   rÑ   r°  s         r$   Útest_sqlite_test_dtyperO    s$  € Ø€DØ�ˆ:€DØ˜Ð%€DÜ	�‰�d DÔ	)€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Ø
U€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   ÂC7Ã7D c                óÆ  — | }t        j                  dd g«      t        j                  t        ddd«      d g«      t        j                  dd gd¬«      t        j                  dd g«      dœ}t        j                  |«      }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 )NTr`  rª   r;   rü  r   r	  ra  re  rÅ  r<   rb  r  rc  rP  rd  rv   ÚREAL)rœ   rž   r   rÏ   r‘  rK  )r†  rI   r>  rÑ   r&  s        r$   Útest_sqlite_notna_dtyperR  •  sæ   € Ø€Dä—	‘	˜4 ˜,Ó'Ü—	‘	œ8 D¨!¨QÓ/°Ð6Ó7Ü�y‰y˜!˜T˜¨(Ô3Ü—‘˜C ˜;Ó'ñ	€Dô 
�‰�dÓ	€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        j                  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        j                  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)Nr;   r<   r=   r>   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Ì  r‘  Ú	enumerater   Útable_exists)r†  rI   rÑ   r°  ÚndxÚ
weird_namer)  Úc_tbls           r$   Útest_sqlite_illegal_namesr\  ¨  s  € à€DÜ	�‰˜˜1�v  1˜vÐ&°°c°
Ô	;€Bà
0€CÜ	�‰”z¨Ô	-ñ %Ø
�	‰	�r˜tˆ	Ô$÷%ô %ò	
óò &‰ˆˆZð �y‰y˜j¨dˆyÓ3°qÒ8Ð8Ð8Ü×Ñ˜ TÔ*ä�l‰l˜Q ˜F Q¨ FÐ+°c¸:Ð5FÔGˆØ% c¨! WÐ-ˆØ�z‰z˜u¨$ˆzÓ/°1Ò4Ð4Ð4Ü×Ñ˜ Õ%ñ)&÷%ð %ús   ¿C2Ã2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 ]N  }t        |t        «      rt        j                  |«      rd }|t        |«         }|j                   ||«      «       ŒP | t        |«      z  S )Nz'{}'z{:.8f}z{:d}c                 ó   — y)NÚNULLr"   )rø  s    r$   rM  zformat_query.<locals>.<lambda>Ð  s   � r#   z{:.10f}z'{!s}')r   r¯  r¼   r°   Ústr_ÚbytesrE   r~  r®   rl  rN  rm   rœ   Úisnarð   r\  )r   rŽ  Ú_formattersÚprocessed_argsÚargÚ	formatters         r$   Úformat_queryrg  È  sÆ   € ä�&—-‘-ÜˆV�]‰]Ü
�‰�—‘Üˆv�}‰}Üˆx�‰ÜˆV�]‰]ÜˆT‹
Ñ$Ü
�
‰
�I×$Ñ$Üˆh�o‰oð
€Kð €NØò .ˆÜ�cœ5Ô!¤b§g¡g¨c¤lØˆ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   r@   rì   r7  )ré  rd   rœ  r*  s       r$   Útqueryri  ß  sS   € ä	×	Ñ	˜sÓ	#ð 3 zØ× Ñ  Ó'×0Ñ0Ó2ˆ÷3à�;ˆ4Ð-¤D¨£IÐ-÷3ð 3ús   – AÁAc           	     ó„  — t        j                  t        j                  j	                  d«      j                  d«      t        j                  t        d«      «      t        j                  ddd¬«      ¬«      }t        j                  |d	| d
¬«      dk(  sJ ‚t        j                  d| «      }|j                  |_        |}t        j                  ||«       dgt        |«      z  |d<   |j!                  «       }t        j                  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 )Nr<   ©rU  r>   ÚABCDú
2000-01-01rU  rÕ   ©ré  rú  rî  r9  Fr  zselect * from test_tabler¤  Útxtr   ÚIdxÚtest_table2zselect * from test_table2rï  )rœ   rÏ   r°   r  r  r  rÏ  r7  rí  r   r‘  rÒ  r¨   r²   r  r¾  r(  rŠ  rÎ   rš   )r†  r¶   r&  r$  Úframe2Únew_idxs         r$   Útest_xsqlite_basicrt  æ  sT  € Ü�L‰LÜ
�	‰	×Ñ˜aÓ ×0Ñ0°Ó9Ü—‘œ˜f›Ó&Ü�m‰m˜L°"¸3Ô?ô€Eô
 �:‰:�e ,°NÈ%ÔPÐTVÒVÐVÐVÜ�\‰\Ð4°nÓE€Fð —;‘;€F„Là€HÜ×Ñ˜& %Ô(à�5œ3˜u›:Ñ%€Eˆ%�LØ�Z‰Z‹\€FÜ�h‰h”r—y‘y¤ V£Ó-´R·X±XÔ>ÀÑC€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           	     óž  — t        j                  t        j                  j	                  d«      j                  d«      t        j                  t        d«      «      t        j                  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 )Nr<   rk  rl  rm  rU  rÕ   rn  rî  r!  r�  z(INSERT INTO test VALUES (%s, %s, %s, %s)r’  r   gü©ñÒMbP?)Úrtol)rœ   rÏ   r°   r  r  r  rÏ  r7  rí  r2  r­   r   r  r?   r@   Úiterrowsrg  ri  rH   rÒ  r¨   r²   r  )	r†  r¶   r8  rL   Úinsr  rO   Úfmt_sqlr&  s	            r$   Útest_xsqlite_write_row_by_rowrz    sÿ   € Ü�L‰LÜ
�	‰	×Ñ˜aÓ ×0Ñ0°Ó9Ü—‘œ˜f›Ó&Ü�m‰m˜L°"¸3Ô?ô€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        j                  t        j                  j	                  d«      j                  d«      t        j                  t        d«      «      t        j                  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)Nr<   rk  rl  rm  rU  rÕ   rn  rî  r�  z$INSERT INTO test VALUES (?, ?, ?, ?)r   r   r;   )rœ   rÏ   r°   r  r  r  rÏ  r7  rí  r   r  r?   r@   r­   r   r\  rH   rÒ  r¨   r²   r  )r†  r¶   r8  rL   rx  rO   rœ  r&  s           r$   Útest_xsqlite_executer|    s  € Ü�L‰LÜ
�	‰	×Ñ˜aÓ ×0Ñ0°Ó9Ü—‘œ˜f›Ó&Ü�m‰m˜L°"¸3Ô?ô€Eô
 —‘  vÓ.€JØ
×
Ñ
Ó
!€CØ‡K�K�
ÔØ
0€Cà
�*‰*�Q‰-€CÜ	×	Ñ	˜~Ó	.ð ,°*Ø×Ñ˜3¤ c£
Ô+÷,à×ÑÔä�\‰\Ð.°Ó?€FØ—;‘;˜r �?€F„LÜ×Ñ˜& %¨¨ )Õ,÷,ð ,ús   ÃEÅEc           	     óR  — t        j                  t        j                  j	                  d«      j                  d«      t        j                  t        d«      «      t        j                  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 )Nr<   rk  rl  rm  rU  rÕ   rn  rî  r�  ú r   rÔ   r;   ÚDATETIME)rÐ   zPRIMARY KEY ("A", "B"))rœ   rÏ   r°   r  r  r  rÏ  r7  rí  r   r  Ú
splitlinesr  r¾  r?   r@   )r†  r¶   r8  ÚlinesÚlineÚtokensrL   s          r$   Útest_xsqlite_schemar„  -  s   € Ü�L‰LÜ
�	‰	×Ñ˜aÓ ×0Ñ0°Ó9Ü—‘œ˜f›Ó&Ü�m‰m˜L°"¸3Ô?ô€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))r?   r@   r   r   r  rË  r[  )r†  r8  rL   rœ  s       r$   Útest_xsqlite_execute_failrˆ  A  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†  r�  r‡  z$Cannot operate on a closed database.rÊ  r   r’  )r‚  rƒ  rn   r�   r?   r@   r   r   r  rË  rV  ri  )r8  rI   rL   rœ  r°  s        r$   Ú&test_xsqlite_execute_closed_connectionrŠ  V  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        j                  dt        j                  d«      i«      }t	        j
                  || dd¬«      dk(  sJ ‚y )NÚFromrª   ÚtestkeywordsF©rd   rš   r¨   )rœ   rÏ   r°   Úonesr   r‘  )r†  rÑ   s     r$   Ú$test_xsqlite_keyword_as_column_namesr�  l  s;   € Ü	�‰�vœrŸw™w q›zÐ*Ó	+€BÜ�:‰:�b˜n°>ÈÔOÐSTÒTÐTÑTr#   c                ó   — t        j                  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 )Nr;   r<   Úc0rÝ   Úmono_dfFrŽ  c              3  ó&   K  — | ]	  }|d    –— Œ y­w)r   Nr"   )Ú.0Úmy_c0s     r$   ú	<genexpr>z4test_xsqlite_onecolumn_of_integer.<locals>.<genexpr>y  s   è ø€ ÒO˜u�%˜•(ÑOùs   ‚zselect * from mono_dfr=   )	rœ   rÏ   r   r‘  Úsumr@   rÒ  r²   r  )r†  r“  Úcon_xÚthe_sumr&  s        r$   Ú!test_xsqlite_onecolumn_of_integerr›  q  s„   € ô �l‰l˜A˜q˜6¨D¨6Ô2€GÜ�:‰:�g >¸	ÈÔOÐSTÒTÐTÐTà€EÜÑO¨¯©Ð6MÓ(NÔOÓO€Gà�aŠ<Ðˆ<ä�\‰\Ð1°5Ó9€FÜ×Ñ˜& 'Õ*r#   c                ó¸  — t        j                  ddgddgdœ«      }t        j                  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)Nr;   r<   rÔ   rÕ   rõ  r�  )rÖ   r×   ÚEÚtable_if_existsr¾  z*'notvalidvalue' is not valid for if_existsrÊ  Únotvalidvalue)r¶   rd   rš   r�  rÃ  z&Table 'table_if_exists' already existsr«  F)r¶   rd   rš   r�  r¨   r’  r  r0  r=   )©r=   rÖ   ©r>   r×   ©rª   r�  rð   )r  r0  r   r¡  r¢  )	rœ   rÏ   r  rË  rÌ  r   r‘  r   ri  )r†  Údf_if_exists_1Údf_if_exists_2rÀ   Ú
sql_selectr°  s         r$   Útest_xsqlite_if_existsr¦  �  s  € Ü—\‘\¨A¨q¨6¸CÀ¸:Ñ"FÓG€NÜ—\‘\ª9ºoÑ"NÓO€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   ÁGÃGÇGÇGrÚ  c                ó  — t        j                  ddgddgdœ«      }|j                  d| d¬«       d	„ }|| _        t	        j
                  d
| |¬«      }|�t        j                  |d¬«      }t        j                  ||ddg   «       y )Nr;   r<   rø  r  r  Ú	dict_rowsFr  c                ól   — t        | j                  |d¬«      D ��ci c]  \  }}|d   |“Œ c}}S c c}}w )NTrV   r   )r]   r  )r?   rO   r¤  Úvals       r$   Údict_factoryz-test_read_sql_dict_rows.<locals>.dict_factoryÙ  s2   € Ü,/°×0BÑ0BÀCÐPTÔ,U×V¡  S��A‘˜‘ÓVÐVùÓVs   œ0zSELECT b, a FROM dict_rowsrÙ  Tr  r  r¤  )	rœ   rÏ   r‘  Úrow_factoryr   r   rÛ  r²   r  )r†  rÚ  rÑ   r«  r&  s        r$   Útest_read_sql_dict_rowsr­  Ó  sˆ   € ô 
�‰˜Q ˜F¨#¨s¨Ñ4Ó	5€BØ‡I�I�; N¸%€IÔ@òWð ".€NÔÜ×ÑØ$ nÀ	ô€Fð ÐÜ—‘˜6°Ô5ˆÜ×Ñ˜& " c¨3 Z¡.Õ1r#   c                óX  ‡— t        j                  d«      Š| j                  d«       | j                  d«       | j                  d«       | j                  d«       d}t        j                  || «      }ˆfd„}|| _        t        j                  || «      }t        j                  ||«       y )Núpsycopg2.extrasz'CREATE TABLE dup_a (id INTEGER, x TEXT)z*CREATE TABLE dup_b (id INTEGER, y INTEGER)z!INSERT INTO dup_a VALUES (1, 'x')z INSERT INTO dup_b VALUES (2, 10)zSELECT * FROM dup_a, dup_bc                óÄ   •— t        | j                  «      D ��ci c]  \  }}|d   |“Œ }}}t        || j                  ¬«      }‰j                  |«      }||d d  |S c c}}w )Nr   )r¨   r  )rW  r  r   ÚDictRow)r?   rO   r  r¤  r¨   Úfake_cursorÚdict_rowÚextrass          €r$   Údict_row_factoryzKtest_read_sql_psycopg2_dict_row_duplicate_columns.<locals>.dict_row_factoryï  sa   ø€ ä)2°6×3EÑ3EÓ)F×G™v˜q #��Q‘˜‘ÐGˆÑGÜ%¨E¸v×?QÑ?QÔRˆØ—>‘> +Ó.ˆØˆ‘ˆØˆùó	 Hs   šA)r  r  r@   r   r   r¬  r²   r  )r†  ré  r$  rµ  r&  r´  s        @r$   Ú1test_read_sql_psycopg2_dict_row_duplicate_columnsr¶  å  s˜   ø€ ä× Ñ Ð!2Ó3€FØ×ÑÐDÔEØ×ÑÐGÔHØ×ÑÐ>Ô?Ø×ÑÐ=Ô>Ø(€EÜ×!Ñ! %¨Ó8€Hôð "2€NÔÜ×Ñ  ~Ó6€FÜ×Ñ˜& (Õ+r#   c                ó   — t        j                  d«      }t        j                  ddgddgdœ«      }|j	                  d| d¬	«       | j                  «       }	 |j                  }|j                  j                  |_	        t        j                  t        d
¬«      5  t        j                  d|«      }d d d «       |j                  «        t        j                   |«       y # 1 sw Y   Œ0xY w# |j                  «        w xY w)Nr  r;   r<   rø  r  r  Údict_cursorFr  úpandas only supportsrÊ  zSELECT * FROM dict_cursor)r  r  rœ   rÏ   r‘  Úraw_connectionÚdriver_connectionÚcursorsÚ
DictCursorÚcursorclassr²   r®  r­  r   r   Ú
invalidater  )r'  r  rÑ   Úraw_connrI   r&  s         r$   Ú!test_read_sql_pymysql_dict_cursorrÁ  ü  sÜ   € ô ×!Ñ! )Ó,€GÜ	�‰˜Q ˜F¨#¨s¨Ñ4Ó	5€BØ‡I�I�=Ð&:À%€IÔHà#×2Ñ2Ó4€HðØ×)Ñ)ˆØ"Ÿ?™?×5Ñ5ˆÔÜ×'Ñ'¬Ð;QÔRñ 	KÜ×'Ñ'Ð(CÀTÓJˆF÷	Kð 	×ÑÔÜ×Ñ˜& "Õ%÷	Kð 	Kûð 	×ÑÕús%   ÁAC+ ÂCÂ0C+ ÃC(Ã$C+ Ã+C=c                ó|  — t        j                  d«      }| }t        j                  dgdgdœ«      j	                  d|d¬«       t        j                  dgdgd	œ«      j	                  d
|d¬«       d}|j                  «       }	 |j                  }|j                  |_        t        j                  t        d¬«      5  t        j                  ||«      }d d d «       |j                  «        t        j                  g d¢gg d¢¬«      }t        j                  |«       y # 1 sw Y   ŒLxY w# |j                  «        w xY w)Nr¯  r;   r¤  )r¨  rø  Údup_aFr  rU  )r¨  r  Údup_bz5SELECT * FROM dup_a JOIN dup_b ON dup_a.id = dup_b.idr¹  rÊ  )r;   r¤  r;   rU  )r¨  rø  r¨  r  rÝ   )r  r  rœ   rÏ   r‘  rº  r»  r½  Úcursor_factoryr²   r®  r­  r   r   r¿  r  )r=  r´  rÁ   ré  rÀ  rI   r&  r$  s           r$   Ú4test_read_sql_psycopg2_dict_cursor_duplicate_columnsrÆ    s  € ô × Ñ Ð!2Ó3€FØ'€FÜ‡L�L˜˜ 3 %Ñ(Ó)×0Ñ0°gÀ6ÐQVÐ0ÔWÜ‡L�L˜˜ 2 $Ñ'Ó(×/Ñ/°WÀ&ÐPUÐ/ÔVØC€Eà×$Ñ$Ó&€HðØ×)Ñ)ˆØ$×/Ñ/ˆÔÜ×'Ñ'¬Ð;QÔRñ 	5Ü×'Ñ'¨¨tÓ4ˆF÷	5ð 	×ÑÔÜ�|‰|š_Ð-Ò7MÔN€HÜ×Ñ˜& (Õ+÷	5ð 	5ûð 	×ÑÕús$   Â8D) Â;DÃD) ÄD&Ä"D) Ä)D;)rJ   r   )r‚   r¼   )r‡   ú
list[dict])r‡   rÇ  r‚   r¼   )r¶   rë  )rÀ   r¼   )rÀ   r¼   rI   úLsqlite3.Connection | sqlalchemy.engine.Engine | sqlalchemy.engine.Connection)rø   r¼   rI   rÈ  )rš   r¼   r–  r—  rê  r$  (2  Ú
__future__r   r‚  rB   r   r   r   r   Údecimalr   rÄ   r	   r
  Úpathlibr   rn   rx   r   Útypingr   rN  rÐ  r°   r  Úpandas._configr   Úpandas._libsr   Úpandas.compat._optionalr   Úpandas.errorsr   Úpandas.util._test_decoratorsÚutilÚ_test_decoratorsÚtdÚpandasrœ   Úpandas._testingÚ_testingr²   Úpandas.util.versionr   Ú	pandas.ior   Úpandas.io.sqlr   r   r   r   r   r   r   r3   rš  ÚfilterwarningsÚ
single_cpuÚ
pytestmarkÚfixturer%   r5   rP   rR   re   rq   r…   r‰   r‹   r‘   r¢   r¸   rÂ   rÇ   r‡   rÒ   rà   râ   rù   rü   r   r  r  r"  r'  r+  r.  r1  r4  r6  r;  r=  r?  rB  rD  rN  rP  rY  r_  ra  rc  rg  ri  rk  rm  ro  rq  rs  ru  rw  rz  r|  r  r†  rˆ  rŠ  Úparamr  Úmysql_connectableÚmysql_connectable_irisÚmysql_connectable_typesÚpostgresql_connectableÚpostgresql_connectable_irisÚpostgresql_connectable_typesÚsqlite_connectableÚsqlite_connectable_irisÚsqlite_connectable_typesÚsqlalchemy_connectableÚsqlalchemy_connectable_irisÚsqlalchemy_connectable_typesÚadbc_connectableÚadbc_connectable_irisÚadbc_connectable_typesÚall_connectableÚall_connectable_irisÚall_connectable_typesÚparametrizer“  rž  r±  r´  rÀ  rÈ  rÍ  rÕ  rÜ  rä  rê  rì  rï  rö  rÿ  r  r'  r;  rC  rH  rR  rW  r\  r^  re  rk  rm  ro  rq  ru  rw  rz  r€  rƒ  r†  rŽ  r—  r™  rž  r­  r°  r·  rÒ  r½  rÁ  rÌ  rÏ  rÚ  rå  ró  r~  rE   rú  rý  r  r  r  r  r!  r+  r/  r3  r7  r;  r?  rA  rE  rI  rN  rX  r¡  rš   ri  rm  rp  Úskip_if_installedrt  rz  r  rƒ  r†  rˆ  r›  r�  rŸ  r¥  r³  r·  rº  rÃ  rÇ  rÉ  rË  rÐ  rÓ  rÖ  rÙ  rÜ  rß  rá  rä  ró  r÷  r  r  r  r  r  r!  r(  r,  r.  r1  r=  rA  rG  rI  r^  rh  rv  rƒ  r�  Úinfr˜  r°  r´  r·  r¼  r¿  rÁ  rÌ  rÎ  rÑ  rÉ  rÊ  rí  Ú
no_defaultrï  ró  rö  r
  r  r  r"  r&  r(  r/  r4  r7  r9  rB  rK  rO  rR  r\  rg  ri  rt  rz  r|  r„  rˆ  rŠ  r�  r›  r¦  r­  r¶  rÁ  rÆ  r"   r#   r$   ú<module>rö     sk  ðÝ "ã Û 
÷ó õ Ý Û 	Ý Û Ý !Ý  Û ã Û å -å Ý >Ý (ß )Ð )ã Ý Ý 'å ÷÷ ñ ñ Ûð ‡K�K×ÑØGóð ‡K�K×Ñð	€
ð ‡�ñó ðò8ô,ôDô>ò "ô&ôDô<ô2ò(*PôZ-ô;ð8 ‡�ñó ðð
 ‡�ñó ðð6 ‡�ñ,ó ð,ð  ‡�ñ /ó ð /ðF ‡�ñ/ó ð/ò2ò23ð0.Øð.à
Vô.ð&"Øð"à
Vô"ô.
ð. €‡��hÔñ
ó  ð
ð ‡�ñ/ó ð/ð ‡�ñ ó ð ð ‡�ñ ó ð ð
 ‡�ñó ðð
 ‡�ñó ðð
 ‡�ñó ðð
 €‡��hÔñ	ó  ð	ð ‡�ñ5ó ð5ð ‡�ñ&ó ð&ð ‡�ñ&ó ð&ð
 ‡�ñó ðð
 €‡��hÔñó  ðð ‡�ñ	ó ð	ð ‡�ñó ðð$ ‡�ñó ðð  ‡�ñó ðð
 ‡�ñó ðð
 ‡�ñ$ó ð$ð
 ‡�ñó ðð ‡�ñó ðð
 ‡�ñó ðð ‡�ñó ðð ‡�ñó ðð
 ‡�ñó ðð ‡�ñó ðð
 ‡�ñó ðð
 ‡�ñó ðð ‡�ñó ðð" ‡�ñó ðð* ‡�ñó ðð ‡�ñó ðð ‡�ñó ðð €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ð< ‡�×Ò˜ Ó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ð!ð$ ‡�×Ò˜Ð!7Ó8ñ,ó 9ð,ð ‡�×Ò˜Ð!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ñ7ó 8ð7ðt ‡�×Ò˜Ð!6Ó7ñó 8ðð" ‡�×Ò˜Ð!6Ó7ñ7ó 8ð7ð  ‡�×Ò˜Ð!6Ó7Ø‡�×Ò˜ 7¨HÐ"5Ó6Ø‡�×ÒØà	�ŠÐ,Ð.HÐIØ	�Š�w Ð/à×ÑØ!Ø&ð	
ð
 
×	Ñ	˜W |Ð5ð	óñ!,óó 7ó 8ð!,ðH ‡�×Ò˜Ð!6Ó7ñ?ó 8ð?ð ‡�×Ò˜ Ó1ñ)4ó 2ð)4ðX ‡�×Ò˜ Ó1ñ
;ó 2ð
;ð ‡�×Ò˜ Ó1Ø‡�×ÒØ%òóñ"(ó#ó 2ð$(ð$ ‡�×Ò˜ Ó1ñD
ó 2ðD
ðN ‡�×Ò˜ Ó1ñ=ó 2ð=ð& ‡�×Ò˜ Ó1Ø‡�×ÒØàØØØ˜Ñð	óñ,óó 2ð,ð, ‡�×Ò˜ Ó1ñNó 2ðNð ‡�×Ò˜ Ó1ñ
"ó 2ð
"ð ‡�×Ò˜ Ó1ñ.ó 2ð.ð ‡�×Ò˜ Ó1ñ#ó 2ð#ð. ‡�×Ò˜ Ó1ñ-ó 2ð-ð8 ‡�×Ò˜ Ó1ñ.*ó 2ð.*ðb ‡�×Ò˜ Ó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ð6 ‡�×Ò˜ oÓ6ñ/ó 7ð/ð ‡�×Ò˜ oÓ6ñ!:ó 7ð!:ðH ‡�×Ò˜ Ó1ñ/ó 2ð/ð* ‡�×Ò˜Ð!5Ó6ñ<ó 7ð<ð ‡�×Ò˜Ð!<Ó=ñ!ó >ð!ð ‡�×Ò˜Ð!<Ó=ñó >ðð ‡�×Ò˜Ð!<Ó=ñ:ó >ð:ð ‡�×Ò˜Ð!=Ó>ñ=ó ?ð=ð, ‡�×Ò˜Ð!7Ó8ñ&ó 9ð&ð ‡�×Ò˜Ð!=Ó>ñ<ó ?ð<ð ‡�×Ò˜Ð!7Ó8Ø‡�×Ò˜¨°Ð/@Ð(AÓBñ
*ó Có 9ð
*ð ‡�×Ò˜Ð!7Ó8ñ	*ó 9ð	*ð ‡�×Ò˜Ð!7Ó8ñ-ó 9ð-ð ‡�×Ò˜Ð!7Ó8ñ,ó 9ð,ðD ‡�×Ò˜Ð!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ò/8ó 9ð/8ôd5ð& ‡�×Ò˜Ð!7Ó8ò"ó 9ñ"ðJ ‡�×Ò˜Ð!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ð ‡�×Ò™¡D©1¨#±±Q¨xÐ#8Ó9ò!ó :ñ!ô@$7ôN	,ô2ð ‡�òó ñô@ð ‡�‡�òGGó ñGGðT ‡�‡�ò!'ó ñ!'ôH:ô"/ð ‡�×Ò™¡e©T ]Ó3ò)ó 4ñ)ô$BôNô,@ô&&ô@'ö..ô,ô64ô.-ô*ô(Kô*/ô,Uô
+ô O+ðd ‡�×Ò™ t©Q iÓ0ò2ó 1ñ2ô",ð. ‡�‡�ò&ó ñ&ð$ ‡�‡�ò,ó ò,r#   