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

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

    CREATE PROCEDURE get_testdb ()

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

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