ó
    ®œ‘hc4 ã                  ój3  • S SK Jr  S SKrS SKJr  S SKrS SKJrJrJrJr  S SK	J
r
  S SKJr  S SKrS SKJr  S SKrS SKrS SKrS SKJr  S S	KJr  S S
KJrJr  S SKJr  S SKJs  Jr   S SK!r"S SK!J#r#J$r$J%r%J&r&J'r'J(r(J)r)J*r*J+r+J,r,  S SK-J.r/  S SK0J1r1  S SK2J3r3  S SK4J5r5J6r6J7r7J8r8J9r9J:r:J;r;  \(       a  S SK<r<\Rz                  R}                  S5      \Rz                  R~                  /r@\R‚                  S 5       rBS rCGS1S jrDGS1S jrEGS1S jrFS rGGS2S jrHGS3S jrIGS3S jrJGS4S jrKS rLGS5S jrMGS6S jrN\R‚                  S 5       rO\R‚                  S 5       rP\R‚                  S  5       rQ\R‚                  S! 5       rR\R‚                  S" 5       rSS# rTS$ rU    GS7S& jrV    GS8S' jrW\R‚                  S( 5       rX\R‚                  S) 5       rY\R‚                  S* 5       rZ\R‚                  S+ 5       r[\R‚                  S, 5       r\\R‚                  S- 5       r]\R‚                  S. 5       r^\R‚                  S/ 5       r_\R‚                  S0 5       r`\R‚                  S1 5       ra\R‚                  S2 5       rb\R‚                  S3 5       rc\R‚                  S4 5       rd\R‚                  S5 5       re\R‚                  S6 5       rf\R‚                  S7 5       rg\R‚                  S8 5       rh\R‚                  S9 5       ri\R‚                  S: 5       rj\R‚                  S; 5       rk\R‚                  S< 5       rl\R‚                  S= 5       rm\R‚                  S> 5       rn\R‚                  S? 5       ro\R‚                  S@ 5       rp\R‚                  SA 5       rq\R‚                  SB 5       rr\R‚                  SC 5       rs\R‚                  SD 5       rt\R‚                  SE 5       ru\Rì                  " SF\Rz                  Rî                  SG9\Rì                  " SH\Rz                  Rî                  SG9/rx\Rì                  " SI\Rz                  Rî                  SG9\Rì                  " SJ\Rz                  Rî                  SG9/ry\Rì                  " SK\Rz                  Rî                  SG9\Rì                  " SL\Rz                  Rî                  SG9/rz\Rì                  " SM\Rz                  Rî                  SG9\Rì                  " SN\Rz                  Rî                  SG9/r{\Rì                  " SO\Rz                  Rî                  SG9\Rì                  " SP\Rz                  Rî                  SG9/r|\Rì                  " SQ\Rz                  Rî                  SG9\Rì                  " SR\Rz                  Rî                  SG9/r}/ SSQr~/ STQr/ SUQr€\x\{-   \~-   r�\y\|-   \-   r‚\z\}-   \€-   rƒSV\Rì                  " SW\Rz                  Rî                  SG9/r„\Rì                  " SX\Rz                  Rî                  SG9SY/r…\Rì                  " SZ\Rz                  Rî                  SG9S[/r†\�S\/-   \„-   r‡\‚S]/-   \…-   rˆ\ƒS^/-   \†-   r‰\Rz                  GR                  S%\‡5      S_ 5       r‹\Rz                  GR                  S%\‡5      S` 5       rŒ\Rz                  GR                  S%\‡5      Sa 5       r�\Rz                  GR                  S%\‡5      Sb 5       rŽ\Rz                  GR                  S%\‡5      \Rz                  GR                  ScSSd/5      Se 5       5       r�\Rz                  GR                  S%\‡5      \Rz                  GR                  SfSgSh/5      Si 5       5       r�\Rz                  GR                  S%\‡5      Sj 5       r‘\Rz                  GR                  S%\ˆ5      Sk 5       r’\Rz                  GR                  S%\ˆ5      Sl 5       r“\Rz                  GR                  S%\‚5      Sm 5       r”\Rz                  GR                  S%\ˆ5      Sn 5       r•\Rz                  GR                  S%\‚5      So 5       r–\Rz                  GR                  S%\‚5      Sp 5       r—\Rz                  GR                  S%\�5      Sq 5       r˜\Rz                  GR                  S%\‰5      Sr 5       r™\Rz                  GR                  S%\x5      Ss 5       rš\Rz                  GR                  S%\{5      \Rz                  GR                  StSuSv/5      Sw 5       5       r›\Rz                  GR                  S%\{5      Sx 5       rœ\Rz                  GR                  S%\‡5      Sy 5       r�\Rz                  GR                  S%\x5      Sz 5       rž\Rz                  GR                  S%\{5      S{ 5       rŸS| r S} r¡S~ r¢S r£\Rz                  GR                  S%\ˆ5      S€ 5       r¤\Rz                  GR                  S%\ˆ5      S� 5       r¥\Rz                  GR                  S%\ˆ5      S‚ 5       r¦\Rz                  GR                  S%\ˆ5      Sƒ 5       r§\Rz                  GR                  S%\ˆ5      S„ 5       r¨\Rz                  GR                  S%\‡5      S… 5       r©\Rz                  GR                  S%\‡5      S† 5       rª\Rz                  GR                  S%\‡5      S‡ 5       r«\Rz                  GR                  S%\‡5      Sˆ 5       r¬\Rz                  GR                  S%\‡5      S‰ 5       r­\Rz                  GR                  S%\‡5      SŠ 5       r®\Rz                  GR                  S%\‡5      S‹ 5       r¯\Rz                  GR                  S%\‡5      SŒ 5       r°\Rz                  GR                  S%\ˆ5      S� 5       r±\Rz                  GR                  S%\‰5      SŽ 5       r²\Rz                  GR                  S%\‰5      \Rz                  GR                  S�/ S�Q5      \Rz                  GR                  S‘\3GRf                  S’S“4\3GRf                  S”S•4\3Rt                  S’S“4\3Rv                  S”S•4/5      S– 5       5       5       r´\Rz                  GR                  S%\‰5      S— 5       rµ\Rz                  GR                  S%\‡5      S˜ 5       r¶\Rz                  GR                  S%\‡5      S™ 5       r·\Rz                  GR                  S%\‡5      \Rz                  GR                  Sš/ S›Q5      Sœ 5       5       r¸\Rz                  GR                  S%\‡5      S� 5       r¹\Rz                  GR                  S%\‡5      Sž 5       rº\Rz                  GR                  S%\‡5      \Rz                  GR                  SŸS\»\¼\»\¼S ./5      S¡ 5       5       r½\Rz                  GR                  S%\‡5      S¢ 5       r¾\Rz                  GR                  S%\‡5      S£ 5       r¿\Rz                  GR                  S%\‡5      S¤ 5       rÀ\Rz                  GR                  S%\‡5      S¥ 5       rÁ\Rz                  GR                  S%\‡5      S¦ 5       rÂ\Rz                  GR                  S%\‡5      S§ 5       rÃ\Rz                  GR                  S%\‡5      S¨ 5       rÄ\Rz                  GR                  S%\‡5      S© 5       rÅ\Rz                  GR                  S%\‡5      Sª 5       rÆ\Rz                  GR                  S%\‡5      S« 5       rÇ\Rz                  GR                  S%\‡5      S¬ 5       rÈ\Rz                  GR                  S%\‡5      S­ 5       rÉ\Rz                  GR                  S%\ˆ5      S® 5       rÊS¯ rË\Rz                  GR                  S%\‡5      S° 5       rÌ\Rz                  GR                  S%\�5      S± 5       rÍ\Rz                  GR                  S%\�5      \Rz                  GR                  S²S³S´SµS¶S·S¸S¹SºS»S¼S½S¾S¿SÀ\»\GRœ                  " \»5      GRž                  SÁ:X  a  SÂOSÃ4/5      SÄ 5       5       rÐ\Rz                  GR                  S%\�5      \Rz                  GR                  SÅSÆSÇ/5      SÈ 5       5       rÑ\Rz                  GR                  S%\‡5      SÉ 5       rÒ\ GR¦                  " SÊ5      \Rz                  GR                  S%\‡5      SË 5       5       rÔ\Rz                  GR                  S%\‚5      SÌ 5       rÕ\Rz                  GR                  S%\‚5      SÍ 5       rÖ\Rz                  GR                  S%\‡5      SÎ 5       r×SÏ rØ\ GR¦                  " S•5      SÐ 5       rÙ\ GR¦                  " S•5      SÑ 5       rÚSÒ rÛSÓ rÜSÔ rÝ\Rz                  GR                  S%\�5      SÕ 5       rÞ\Rz                  GR                  S%\�5      SÖ 5       rß\Rz                  GR                  S%\‡5      S× 5       rà\Rz                  GR                  S%\ˆ5      SØ 5       rá\Rz                  GR                  S%\‚5      SÙ 5       râ\Rz                  GR                  S%\‚5      SÚ 5       rã\Rz                  GR                  S%\‚5      SÛ 5       rä\Rz                  GR                  S%\ƒ5      SÜ 5       rå\Rz                  GR                  S%\�5      SÝ 5       ræ\Rz                  GR                  S%\ƒ5      SÞ 5       rç\Rz                  GR                  S%\{5      \Rz                  GR                  SßSSà//5      Sá 5       5       rè\Rz                  GR                  S%\{5      Sâ 5       ré\Rz                  GR                  S%\{5      Sã 5       rê\Rz                  GR                  S%\�5      Sä 5       rë\Rz                  GR                  S%\�5      Så 5       rì\Rz                  GR                  S%\�5      Sæ 5       rí\Rz                  GR                  S%\ƒ5      Sç 5       rî\Rz                  GR                  S%\�5      Sè 5       rï\Rz                  GR                  S%\�5      Sé 5       rð\Rz                  GR                  S%\�5      Sê 5       rñ\Rz                  GR                  S%\�5      Së 5       rò\Rz                  GR                  S%\�5      Sì 5       ró\Rz                  GR                  S%\�5      Sí 5       rô\Rz                  GR                  S%\�5      Sî 5       rõ\Rz                  GR                  S%\�5      Sï 5       rö\Rz                  GR                  S%\‡5      Sð 5       r÷\Rz                  GR                  S%\‡5      Sñ 5       rø\Rz                  GR                  S%\‡5      Sò 5       rù\Rz                  GR                  S%\�5      Só 5       rú\Rz                  GR                  S%\�5      Sô 5       rû\Rz                  GR                  S%\�5      Sõ 5       rü\Rz                  GR                  S%\�5      Sö 5       rý\Rz                  GR                  S%\�5      S÷ 5       rþ\Rz                  GR                  S%\�5      \Rz                  GR                  SøSù\GRþ                  /0Sù\GRþ                  * /0\GRþ                  * /Sú/Sû./5      Sü 5       5       Gr \Rz                  GR                  S%\�5      Sý 5       Gr\Rz                  GR                  S%\‡5      Sþ 5       Gr\Rz                  GR                  S%\‡5      Sÿ 5       Gr\Rz                  GR                  S%\�5      GS  5       Gr\Rz                  GR                  S%\‡5      GS 5       GrGS GrGS Gr\Rz                  GR                  S%\‡5      \Rz                  GR                  GSGSGS/5      GS 5       5       Gr\Rz                  GR                  S%\‡5      \Rz                  GR                  GSGSGS/5      GS	 5       5       Gr	\Rz                  GR                  S%\‡5      \Rz                  GR                  GS/ GS
Q5      GS 5       5       Gr
\R‚                  GS9GS j5       Gr\R‚                  GS 5       Gr\Rz                  GR                  S%\‡5      GS 5       Gr\Rz                  GR                  S%\‡5      \Rz                  GR                  GS\GR                  GS/5      \Rz                  GR                  GSGSGS/5      GS 5       5       5       GrGS GrGS GrGS GrGS GrGS GrGS Gr\R‚                  GS 5       GrGS Gr\Rz                  Rî                  GS 5       Gr\Rz                  Rî                  GS 5       GrGS GrGS Gr\Rz                  GR                  GSGSGS /5      GS! 5       GrGS" GrGS# GrGS$ GrGS% Gr GS& Gr!GS:GS' jGr"GS( Gr#GS) Gr$GS* Gr%GS+ Gr&GS, Gr'GS- Gr(GS. Gr)GS/ Gr*GS0 Gr+g(;  é    )ÚannotationsN)Úclosing)ÚdateÚdatetimeÚtimeÚ	timedelta)ÚStringIO©ÚPath)ÚTYPE_CHECKING)Úusing_string_dtype)Úlib)Úpa_version_under13p0Úpa_version_under14p1)Úimport_optional_dependency)
Ú	DataFrameÚIndexÚ
MultiIndexÚSeriesÚ	TimestampÚconcatÚ
date_rangeÚisnaÚto_datetimeÚto_timedelta)ÚVersion)Úsql)ÚSQLAlchemyEngineÚSQLDatabaseÚSQLiteDatabaseÚ
get_engineÚpandasSQL_builderÚread_sql_queryÚread_sql_tablez=ignore:Passing a BlockManager to DataFrame:DeprecationWarningc                 ó&   • SSSS.SSSS.SS	S
S.S.$ )Nz1SELECT * FROM iris WHERE Name=? AND SepalLength=?z7SELECT * FROM iris WHERE `Name`=%s AND `SepalLength`=%sz7SELECT * FROM iris WHERE "Name"=%s AND "SepalLength"=%s)ÚsqliteÚmysqlÚ
postgresqlz]
                SELECT * FROM iris WHERE Name=:name AND SepalLength=:length
                zw
                SELECT * FROM iris WHERE
                `Name`=%(name)s AND `SepalLength`=%(length)s
                zw
                SELECT * FROM iris WHERE
                "Name"=%(name)s AND "SepalLength"=%(length)s
                z&SELECT * FROM iris WHERE Name LIKE '%'z(SELECT * FROM iris WHERE `Name` LIKE '%'z(SELECT * FROM iris WHERE "Name" LIKE '%')Úread_parametersÚread_named_parametersÚread_no_parameters_with_percent© r,   ó    Ú\C:\Users\psant\Downloads\Noiseback\school\venv\Lib\site-packages\pandas/tests/io/test_sql.pyÚsql_stringsr/   F   sA   € ð JØNØSñ
ðððñ"
ð ?Ø?ØFñ,
ñ'ð r-   c                 óö   • SS K n SSK JnJnJnJnJnJn  [        U R                  5      [        S5      :¼  a  UOUnU" 5       nU" SUU" SU5      U" SU5      U" SU5      U" SU5      U" S	U" S
5      5      5      n	U	$ )Nr   )ÚColumnÚDoubleÚFloatÚMetaDataÚStringÚTablez2.0.0ÚirisÚSepalLengthÚ
SepalWidthÚPetalLengthÚ
PetalWidthÚNameéÈ   )	Ú
sqlalchemyr1   r2   r3   r4   r5   r6   r   Ú__version__)
r>   r1   r2   r3   r4   r5   r6   ÚdtypeÚmetadatar7   s
             r.   Úiris_table_metadatarB   c   sƒ   € Û÷÷ ô ˜j×4Ñ4Ó5¼ÀÓ9IÓI‰FÈu€EÙ‹z€HÙØØÙˆ}˜eÓ$Ùˆ|˜UÓ#Ùˆ}˜eÓ$Ùˆ|˜UÓ#Ùˆv‘v˜c“{Ó#ó€Dð €Kr-   c                óè  • SnU R                  5       nUR                  U5        UR                  S SS9 n[        R                  " U5      n[        U5        Sn/ nU Vs/ s H=  n[        US   5      [        US   5      [        US   5      [        US   5      US	   4PM?     nnUR                  X&5        S S S 5        UR                  5         U R                  5         g s  snf ! , (       d  f       N4= f)
Nz³CREATE TABLE iris (
            "SepalLength" REAL,
            "SepalWidth" REAL,
            "PetalLength" REAL,
            "PetalWidth" REAL,
            "Name" TEXT
        )úutf-8©ÚnewlineÚencodingz&INSERT INTO iris VALUES(?, ?, ?, ?, ?)r   é   é   é   é   )
ÚcursorÚexecuteÚopenÚcsvÚreaderÚnextÚfloatÚexecutemanyÚcloseÚcommit)ÚconnÚ	iris_fileÚstmtÚcurÚcsvfilerP   ÚrecordsÚrows           r.   Úcreate_and_load_iris_sqlite3r]   |   sã   € ð€Dð �+‰+‹-€CØ‡K�K�ÔØ	�‰ ¨wˆÑ	7¸7Ü—’˜GÓ$ˆÜˆVŒØ7ˆàˆñ ó	
ò �ô �c˜!‘f“Ü�c˜!‘f“Ü�c˜!‘f“Ü�c˜!‘f“Ø�A‘óñ ð 	ð 	
ð 	�‰˜Ô&÷# 
8ð$ ‡I�I„Kà‡K�K…Mùò	
÷ 
8Õ	7ús   ´*C#ÁACÂ"C#ÃC#Ã#
C1c                óø  • SnU R                  5        nUR                  U5        UR                  S SS9 n[        R                  " U5      n[        U5        SnU Vs/ s H=  n[        US   5      [        US   5      [        US   5      [        US   5      US	   4PM?     nnUR                  X'5        S S S 5        S S S 5        U R                  5         g s  snf ! , (       d  f       N,= f! , (       d  f       N5= f)
NzãCREATE TABLE iris (
            "SepalLength" DOUBLE PRECISION,
            "SepalWidth" DOUBLE PRECISION,
            "PetalLength" DOUBLE PRECISION,
            "PetalWidth" DOUBLE PRECISION,
            "Name" TEXT
        )rD   rE   z+INSERT INTO iris VALUES($1, $2, $3, $4, $5)r   rH   rI   rJ   rK   )	rL   rM   rN   rO   rP   rQ   rR   rS   rU   )rV   rW   rX   rY   rZ   rP   r\   r[   s           r.   Úcreate_and_load_iris_postgresqlr_   ž   sâ   € ð€Dð 
�‰Œ˜#Ø�‰�DÔØ�^‰^ D°7ˆ^Ñ;¸wÜ—Z’Z Ó(ˆFÜ�ŒLØ@ˆDñ "ó	ò "�Cô ˜#˜a™&“MÜ˜#˜a™&“MÜ˜#˜a™&“MÜ˜#˜a™&“MØ˜‘Fóñ "ð ð 	ð �O‰O˜DÔ*÷! <÷ 
ð( 	‡K�K…Mùò	÷ <Õ;ú÷ 
�ús5   “"C+µ(CÁACÂ!CÂ4C+ÃCÃ
C(	Ã$C+Ã+
C9c           
     óî  • SSK Jn  [        5       nUR                  S SS9 n[        R
                  " U5      n[        U5      nU Vs/ s H  n[        [        Xg5      5      PM     nnU" U5      R                  U5      n	U R                  5        n
UR                  U
SS9  UR                  U
S9  U
R                  U	5        S S S 5        S S S 5        g s  snf ! , (       d  f       N= f! , (       d  f       g = f)Nr   ©ÚinsertrD   rE   T©Ú
checkfirst©Úbind)r>   rb   rB   rN   rO   rP   rQ   ÚdictÚzipÚvaluesÚbeginÚdropÚcreaterM   )rV   rW   rb   r7   rZ   rP   Úheaderr\   ÚparamsrX   Úcons              r.   Úcreate_and_load_irisrp   ½   s¾   € Ý!äÓ €Dà	�‰ ¨wˆÑ	7¸7Ü—’˜GÓ$ˆÜ�f“ˆÙ4:Ó;²F¨S”$”s˜6Ó'Ö(±FˆÐ;Ù�d‹|×"Ñ" 6Ó*ˆØ�Z‰ZŒ\˜SØ�I‰I�c dˆIÑ+Ø�K‰K˜SˆKÑ!Ø�K‰K˜Ô÷ ÷ 
8Ð	7ùò <ç�\ú÷ 
8Õ	7ús5   ¡&C&ÁCÁ%)C&Â1CÂ?C&ÃC&Ã
C#	ÃC&Ã&
C4c                ó
  • Sn[        U [        R                  5      (       a"  U R                  5       nUR	                  U5        g [        SSS9nU(       aU  [        XR                  5      (       a;  U R                  5        nUR	                  U5        S S S 5        U R                  5         g SSKJn  U" U5      nU R                  5        nUR	                  U5        S S S 5        g ! , (       d  f       NX= f! , (       d  f       g = f)Nz+CREATE VIEW iris_view AS SELECT * FROM irisúadbc_driver_manager.dbapiÚignore©Úerrorsr   ©Útext)
Ú
isinstanceÚsqlite3Ú
ConnectionrL   rM   r   rU   r>   rw   rj   )rV   rX   rY   Úadbcrw   ro   s         r.   Úcreate_and_load_iris_viewr|   Í   s®   € Ø8€DÜ�$œ×*Ñ*×+Ñ+Ø�k‰k‹mˆØ�‰�DÕä)Ð*EÈhÑWˆÞ”J˜t§_¡_×5Ñ5Ø—‘” #Ø—‘˜DÔ!÷ à�K‰K�Må'á˜“:ˆDØ—‘” Ø—‘˜DÔ!÷ �÷ •ú÷ •ús   Á?C#ÃC4Ã#
C1Ã4
Dc                ó  • SSK JnJnJnJnJnJnJnJn  U S:X  a  UOUn	U S:X  a  UOUn
U" 5       nU" SUU" SU5      U" SU	5      U" SU5      U" SU5      U" S	U5      U" S
U5      U" SU
5      U" SU5      U" SU
5      5      nU$ )Nr   )ÚTEXTÚBooleanr1   ÚDateTimer3   ÚIntegerr4   r6   r&   ÚtypesÚTextColÚDateColÚ
IntDateColÚIntDateOnlyColÚFloatColÚIntColÚBoolColÚIntColWithNullÚBoolColWithNull)	r>   r~   r   r1   r€   r3   r�   r4   r6   )Údialectr~   r   r1   r€   r3   r�   r4   r6   Ú	date_typeÚ	bool_typerA   r‚   s                r.   Útypes_table_metadatar�   à   sª   € ÷	÷ 	ó 	ð   8Ó+‘°€IØ" hÓ.‘°G€IÙ‹z€HÙØØÙˆy˜$ÓÙˆy˜)Ó$Ùˆ|˜WÓ%ÙÐ Ó)Ùˆz˜5Ó!Ùˆx˜Ó!Ùˆy˜)Ó$ÙÐ Ó)ÙÐ  )Ó,ó€Eð €Lr-   c                óh  • SnSn[        U [        R                  5      (       a3  U R                  5       nUR	                  U5        UR                  X15        g U R                  5        nUR	                  U5        UR                  X15        S S S 5        U R                  5         g ! , (       d  f       N= f)Na”  CREATE TABLE types (
                    "TextCol" TEXT,
                    "DateCol" TEXT,
                    "IntDateCol" INTEGER,
                    "IntDateOnlyCol" INTEGER,
                    "FloatCol" REAL,
                    "IntCol" INTEGER,
                    "BoolCol" INTEGER,
                    "IntColWithNull" INTEGER,
                    "BoolColWithNull" INTEGER
                )ze
                INSERT INTO types
                VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)
                )rx   ry   rz   rL   rM   rS   rU   )rV   Ú
types_datarX   Úins_stmtrY   s        r.   Úcreate_and_load_types_sqlite3r“   ÿ   sƒ   € ð
€Dð€Hô
 �$œ×*Ñ*×+Ñ+Ø�k‰k‹mˆØ�‰�DÔØ�‰˜Õ-à�[‰[Œ]˜cØ�K‰K˜ÔØ�O‰O˜HÔ1÷ ð 	�‰�÷	 �]ús   Á'#B#Â#
B1c                óÄ   • U R                  5        nSnUR                  U5        SnUR                  X15        S S S 5        U R                  5         g ! , (       d  f       N= f)NaÍ  CREATE TABLE types (
                        "TextCol" TEXT,
                        "DateCol" TIMESTAMP,
                        "IntDateCol" INTEGER,
                        "IntDateOnlyCol" INTEGER,
                        "FloatCol" DOUBLE PRECISION,
                        "IntCol" INTEGER,
                        "BoolCol" BOOLEAN,
                        "IntColWithNull" INTEGER,
                        "BoolColWithNull" BOOLEAN
                    )zy
                INSERT INTO types
                VALUES($1, $2::timestamp, $3, $4, $5, $6, $7, $8, $9)
                )rL   rM   rS   rU   )rV   r‘   rY   rX   s       r.   Ú create_and_load_types_postgresqlr•     sO   € Ø	�‰Œ˜#ð
ˆð 	�‰�DÔðˆð
 	�‰˜Ô)÷' 
ð* 	‡K�K…M÷+ 
�ús   ‘'AÁ
Ac                ó>  • SSK Jn  SSKJn  [	        U5      nU" U5      R                  U5      n[        X5      (       ac  U R                  5        n U R                  5          UR                  U SS9  UR                  U S9  U R                  U5        S S S 5        S S S 5        g U R                  5          UR                  U SS9  UR                  U S9  U R                  U5        S S S 5        g ! , (       d  f       Na= f! , (       d  f       g = f! , (       d  f       g = f)Nr   ra   ©ÚEngineTrc   re   )r>   rb   Úsqlalchemy.enginer˜   r�   ri   rx   Úconnectrj   rk   rl   rM   )rV   r‘   rŒ   rb   r˜   r‚   rX   s          r.   Úcreate_and_load_typesr›   6  sÏ   € Ý!Ý(ä  Ó)€Eá�%‹=×Ñ 
Ó+€DÜ�$×ÑØ�\‰\Œ^˜tØ—‘•Ø—
‘
˜4¨D�
Ñ1Ø—‘ $�Ñ'Ø—‘˜TÔ"÷ ÷ ˆ^ð �Z‰Z�\Ø�J‰J�t¨ˆJÑ-Ø�L‰L˜dˆLÑ#Ø�L‰L˜Ô÷ ˆ\÷ •ú÷ �^ú÷ �\ús0   ÁC=Á 1C,ÂC=Â21DÃ,
C:	Ã6C=Ã=
DÄ
Dc                ó¸  • SSK JnJnJnJnJn  SSKJn  U" 5       nU" SXq" SU" SS95      5      nSS0SS	0/n	U" U5      R                  U	5      n
[        X5      (       ac  U R                  5        n U R                  5          UR                  U SS
9  UR                  U S9  U R                  U
5        S S S 5        S S S 5        OIU R                  5          UR                  U SS
9  UR                  U S9  U R                  U
5        S S S 5        [        SSS9[        SSS9/n[!        USS9$ ! , (       d  f       N~= f! , (       d  f       N== f! , (       d  f       NN= f)Nr   )r1   r€   r4   r6   rb   r—   ÚdatetzÚDateColWithTzT)Útimezonez2000-01-01 00:00:00-08:00z2000-06-01 00:00:00-07:00rc   re   z2000-01-01 08:00:00ÚUTC©Útzz2000-06-01 07:00:00©Úname)r>   r1   r€   r4   r6   rb   r™   r˜   ri   rx   rš   rj   rk   rl   rM   r   r   )rV   r1   r€   r4   r6   rb   r˜   rA   r�   Údatetz_datarX   Úexpected_datas               r.   Úcreate_and_load_postgres_datetzr§   J  s?  € ÷õ õ )á‹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   Á/D:Â 1D)Â1D:Ã1EÄ)
D7	Ä3D:Ä:
EÅ
Ec           	     ó&  • U R                   R                  S   R                  nU R                  S   n[        U[        R
                  5      (       d   e[        R                  " U[        / SQU R                  SS95        U R                  S;   d   eg )Nr   ©çffffff@g      @gffffffö?çš™™™™™É?úIris-setosa)Úindexr¤   ))é–   é   )é   r¯   )ÚdtypesÚilocÚtypeÚ
issubclassÚnpÚfloatingÚtmÚassert_series_equalr   ÚcolumnsÚshape)ÚframeÚpytyper\   s      r.   Úcheck_iris_framer½   w  sw   € Ø�\‰\×Ñ˜qÑ!×&Ñ&€FØ
�*‰*�Q‰-€CÜ�fœbŸk™k×*Ñ*Ð*Ð*Ü×ÒØŒVÒ7¸u¿}¹}ÐSTÑUôð �;‰;Ð,Ó,Ð,Ñ,r-   c                óê  • SU 3n[        SSS9n[        U [        R                  5      (       a2  U R	                  5       nUR                  U5      R                  5       S   $ U(       aX  [        XR                  5      (       a>  U R	                  5        nUR                  U5        UR                  5       S   sS S S 5        $ SSKJn  SSK	J
n  [        U [        5      (       aR   U" U 5      nUR                  5        n U R                  U5      R                  5       sS S S 5        UR                  5         $ [        X5      (       a9  U R                  5        n U R                  U5      R                  5       sS S S 5        $ U R                  U5      R                  5       $ ! , (       d  f       g = f! , (       d  f       O= f UR                  5         g ! WR                  5         f = f! , (       d  f       g = f)Nz SELECT count(*) AS count_1 FROM rr   rs   rt   r   )Úcreate_enginer—   )r   rx   ry   rz   rL   rM   Úfetchoner>   r¿   r™   r˜   Ústrrš   Úexec_driver_sqlÚ
scalar_oneÚdispose)rV   Ú
table_namerX   r{   rY   r¿   r˜   Úengines           r.   Ú
count_rowsrÇ   �  so  € Ø-¨j¨\Ð:€DÜ%Ð&AÈ(ÑS€DÜ�$œ×*Ñ*×+Ñ+Ø�k‰k‹mˆØ�{‰{˜4Ó ×)Ñ)Ó+¨AÑ.Ð.Þ	”*˜T§?¡?×3Ñ3Ø�[‰[Œ]˜cØ�K‰K˜ÔØ—<‘<“> !Ñ$÷ ‰]õ 	-Ý,ä�dœC× Ñ ð!Ù& tÓ,�Ø—^‘^Ô%¨Ø×/Ñ/°Ó5×@Ñ@ÓB÷ &Ð%ð —‘Õ Ü˜×%Ñ%Ø—‘” 4Ø×+Ñ+¨DÓ1×<Ñ<Ó>÷  ‘ð ×'Ñ'¨Ó-×8Ñ8Ó:Ð:÷% �]ú÷ &Õ%úÐ%ð —‘Õ ø�—‘Õ úç•ús<   Â$FÃ"G Ã:F,Ä	G ÅG$Æ
F)Æ,
F:Æ6G ÇG!Ç$
G2c                ó.   • U " SSSS5      n[        U5      $ )NÚioÚdatarO   ziris.csvr
   )ÚdatapathÚ	iris_paths     r.   rÌ   rÌ   �  s   € á˜˜v u¨jÓ9€IÜ�	‹?Ðr-   c                 ó2   • SSSSSSSSSS.	SS	S
SSSSS S S.	/$ )NÚfirstú2000-01-03 00:00:00i wði’·2g333333$@rH   F©	rƒ   r„   r…   r†   r‡   rˆ   r‰   rŠ   r‹   ú2000-01-04 00:00:00i 'âPi\¸2r,   r,   r-   r.   r‘   r‘   £  sP   € ð Ø,Ø#Ø&ØØØØØ$ñ
	
ð Ø,Ø$Ø&ØØØØ"Ø#ñ
	
ðð r-   c           
     ór   • SSSSSSSSSS.	n[        U 5      nX!R                  5          R                  U5      $ )NrÁ   Úint64rR   rÐ   )r   ÚkeysÚastype)r‘   r±   Údfs      r.   Útypes_data_framer×   ¿  sL   € ð ØØØ!ØØØØ!Ø"ñ
€Fô 
�:Ó	€BØ�k‰k‹mÑ×#Ñ# FÓ+Ð+r-   c                 ó$   • / SQn / SQn[        XS9$ )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Ñ+Ð+r-   c                 ó$   • / SQn / SQn[        XS9$ )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Ñ+Ð+r-   c                ó8  • [        U [        R                  5      (       a4  U R                  S5      nUR	                  5        Vs/ s H  o"S   PM	     sn$ [        SSS9nU(       a–  [        XR                  5      (       a|  / nU R                  5       R                  5       R                  5       nU HF  nUS     US    H5  nUS     US	    H$  nUS
   S:X  d  M  US   n	UR                  U	5        M&     M7     MH     U$ SSK
Jn
  U
" U 5      R                  5       $ s  snf )Nz0SELECT name FROM sqlite_master WHERE type='view'r   rr   rs   rt   Úcatalog_nameÚcatalog_db_schemasÚdb_schema_nameÚdb_schema_tablesÚ
table_typeÚviewrÅ   ©Úinspect)rx   ry   rz   rM   Úfetchallr   Úadbc_get_objectsÚread_allÚ	to_pylistÚappendr>   rð   Úget_view_names)rV   Úcrî   r{   ÚresultsÚinfoÚcatalogÚschemaÚtableÚ	view_namerð   s              r.   Úget_all_viewsrþ      s  € Ü�$œ×*Ñ*×+Ñ+Ø�L‰LÐKÓLˆØ$%§J¡J¤LÓ1¢L˜D�Q”¡LÑ1Ð1ä)Ð*EÈhÑWˆÞ”J˜t§_¡_×5Ñ5ØˆGØ×(Ñ(Ó*×3Ñ3Ó5×?Ñ?ÓAˆDÛ�Ø˜Ò'Ø%Ð&:Ô;�FØÐ+Ò,Ø!'Ð(:Ô!;˜Ø  Ñ.°&Õ8Ø(-¨lÑ(;˜IØ#ŸN™N¨9Ö5ó "<ó <ñ  ð ˆNå*á˜4“=×/Ñ/Ó1Ð1ùò' 2s   ÁDc                ó$  • [        U [        R                  5      (       a4  U R                  S5      nUR	                  5        Vs/ s H  o"S   PM	     sn$ [        SSS9nU(       aŒ  [        XR                  5      (       ar  / nU R                  5       R                  5       R                  5       nU H<  nUS    H0  nUS    H$  nUS   S	:X  d  M  US
   nUR                  U5        M&     M2     M>     U$ SSK
Jn	  U	" U 5      R                  5       $ s  snf )Nz1SELECT name FROM sqlite_master WHERE type='table'r   rr   rs   rt   rê   rì   rí   rü   rÅ   rï   )rx   ry   rz   rM   rñ   r   rò   ró   rô   rõ   r>   rð   Úget_table_names)
rV   r÷   rü   r{   rø   rù   rú   rû   rÅ   rð   s
             r.   Úget_all_tablesr    só   € Ü�$œ×*Ñ*×+Ñ+Ø�L‰LÐLÓMˆØ&'§j¡j¤lÓ3¢l˜U�a”¡lÑ3Ð3ä)Ð*EÈhÑWˆæ”J˜t§_¡_×5Ñ5ØˆGØ×(Ñ(Ó*×3Ñ3Ó5×?Ñ?ÓAˆDÛ�Ø%Ð&:Ô;�FØ!'Ð(:Ô!;˜Ø  Ñ.°'Õ9Ø).¨|Ñ)<˜JØ#ŸN™N¨:Ö6ó "<ó <ñ  ð ˆNå*á˜4“=×0Ñ0Ó2Ð2ùò% 4s   ÁDrV   c                ó`  • [        U[        R                  5      (       a9  UR                  S[        R
                  " U 5       35        UR                  5         g [        SSS9nU(       aI  [        XR                  5      (       a/  UR                  5        nUR                  SU  S35        S S S 5        g UR                  5        n[        R                  " U5       nUR                  U 5        S S S 5        S S S 5        g ! , (       d  f       g = f! , (       d  f       N(= f! , (       d  f       g = f)NzDROP TABLE IF EXISTS rr   rs   rt   zDROP TABLE IF EXISTS "Ú")rx   ry   rz   rM   r   Ú_get_valid_sqlite_namerU   r   rL   rj   r   Ú
drop_table)rÅ   rV   r{   rY   ro   Údbs         r.   r  r  1  sÔ   € ô �$œ×*Ñ*×+Ñ+Ø�‰Ð,¬S×-GÒ-GÈ
Ó-SÐ,TÐUÔVØ�‰�ô *Ð*EÈhÑWˆÞ”J˜t§_¡_×5Ñ5Ø—‘” #Ø—‘Ð4°Z°LÀÐBÔC÷ �ð —‘” Ü—_’_ SÔ)¨RØ—M‘M *Ô-÷ *÷ �÷ •ú÷ *Õ)ú÷ •ús0   ÂC=ÃDÃDÃ,DÃ=
DÄ
D	ÄDÄ
D-c                ó�  • SS K n[        U[        R                  5      (       a9  UR	                  S[
        R                  " U 5       35        UR                  5         g [        SSS9nU(       aI  [        XR                  5      (       a/  UR                  5        nUR	                  SU  S35        S S S 5        g UR                  R                  R                  R                  U 5      nUR                  " SU 35      nUR                  5        nUR	                  U5        S S S 5        g ! , (       d  f       g = f! , (       d  f       g = f)Nr   zDROP VIEW IF EXISTS rr   rs   rt   zDROP VIEW IF EXISTS "r  )r>   rx   ry   rz   rM   r   r  rU   r   rL   rÆ   rŒ   Úidentifier_preparerÚquote_identifierrw   rj   )rý   rV   r>   r{   rY   Úquoted_viewrX   ro   s           r.   Ú	drop_viewr  D  sô   € ó ä�$œ×*Ñ*×+Ñ+Ø�‰Ð+¬C×,FÒ,FÀyÓ,QÐ+RÐSÔTØ�‰�ä)Ð*EÈhÑWˆÞ”J˜t§_¡_×5Ñ5Ø—‘” #Ø—‘Ð3°I°;¸aÐ@ÔA÷ �ð Ÿ+™+×-Ñ-×AÑA×RÑRØóˆKð —?’?Ð%9¸+¸Ð#GÓHˆDØ—‘” Ø—‘˜DÔ!÷ �÷ •ú÷ •ús   ÂD&ÄD7Ä&
D4Ä7
Ec               #  óŒ  #   • [         R                  " S5      n [         R                  " S5      nU R                  " SSUR                  R                  R
                  0U R                  R                  S9nUv •  [        U5       H  n[        X25        M     [        U5       H  n[        XB5        M     UR                  5         g 7f)Nr>   Úpymysqlz*mysql+pymysql://root@localhost:3306/pandasÚclient_flag)Úconnect_argsÚ	poolclass)ÚpytestÚimportorskipr¿   Ú	constantsÚCLIENTÚMULTI_STATEMENTSÚpoolÚNullPoolrþ   r  r  r  rÄ   )r>   r  rÆ   rî   Útbls        r.   Úmysql_pymysql_enginer  [  sž   é € ä×$Ò$ \Ó2€JÜ×!Ò! )Ó,€GØ×%Ò%Ø4Ø# W×%6Ñ%6×%=Ñ%=×%NÑ%NÐOØ—/‘/×*Ñ*ñ€Fð
 ‚LÜ˜fÖ%ˆÜ�$Öñ &ä˜fÖ%ˆÜ�3Öñ &à
‡N�NÕùs   ‚CCc              #  ó@   #   • [        X5        [        U 5        U v •  g 7f©N©rp   r|   )r  rÌ   s     r.   Úmysql_pymysql_engine_irisr  l  s   é € äÐ-Ô9ÜÐ2Ô3Ø
Óùó   ‚c              #  ó,   #   • [        XS5        U v •  g 7f)Nr'   ©r›   )r  r‘   s     r.   Úmysql_pymysql_engine_typesr!  s  s   é € äÐ.¸GÔDØ
Óùó   ‚c              #  óh   #   • U R                  5        nUv •  S S S 5        g ! , (       d  f       g = f7fr  ©rš   )r  rV   s     r.   Úmysql_pymysql_connr%  y  s#   é € à	×	%Ñ	%Ô	'¨4ØŠ
÷ 
(×	'Ö	'üó   ‚2“!˜	2¡
/«2c              #  óh   #   • U R                  5        nUv •  S S S 5        g ! , (       d  f       g = f7fr  r$  )r  rV   s     r.   Úmysql_pymysql_conn_irisr(    s#   é € à	"×	*Ñ	*Ô	,°ØŠ
÷ 
-×	,Ö	,ür&  c              #  óh   #   • U R                  5        nUv •  S S S 5        g ! , (       d  f       g = f7fr  r$  )r!  rV   s     r.   Úmysql_pymysql_conn_typesr*  …  ó#   é € à	#×	+Ñ	+Ô	-°ØŠ
÷ 
.×	-Ö	-ür&  c               #  óJ  #   • [         R                  " S5      n [         R                  " S5        U R                  " SU R                  R                  S9nUv •  [        U5       H  n[        X!5        M     [        U5       H  n[        X15        M     UR                  5         g 7f)Nr>   Úpsycopg2z=postgresql+psycopg2://postgres:postgres@localhost:5432/pandas©r  ©
r  r  r¿   r  r  rþ   r  r  r  rÄ   )r>   rÆ   rî   r  s       r.   Úpostgresql_psycopg2_enginer0  ‹  s‚   é € ä×$Ò$ \Ó2€JÜ
×Ò˜
Ô#Ø×%Ò%ØGØ—/‘/×*Ñ*ñ€Fð ‚LÜ˜fÖ%ˆÜ�$Öñ &ä˜fÖ%ˆÜ�3Öñ &à
‡N�NÕùs   ‚B!B#c              #  ó@   #   • [        X5        [        U 5        U v •  g 7fr  r  )r0  rÌ   s     r.   Úpostgresql_psycopg2_engine_irisr2  ›  s   é € äÐ3Ô?ÜÐ8Ô9Ø
$Ó$ùr  c              #  ó,   #   • [        XS5        U v •  g 7f)NÚpostgresr   )r0  r‘   s     r.   Ú postgresql_psycopg2_engine_typesr5  ¢  s   é € äÐ4À*ÔMØ
$Ó$ùr"  c              #  óh   #   • U R                  5        nUv •  S S S 5        g ! , (       d  f       g = f7fr  r$  )r0  rV   s     r.   Úpostgresql_psycopg2_connr7  ¨  r+  r&  c               #  óf  #   • [         R                  " S5        [         R                  " S5        SSKJn   SnU R	                  U5       nUv •  [        U5       H  n[        X25        M     [        U5       H  n[        XB5        M     UR                  5         S S S 5        g ! , (       d  f       g = f7f)NÚpyarrowÚadbc_driver_postgresqlr   ©Údbapiz4postgresql://postgres:postgres@localhost:5432/pandas)
r  r  r:  r<  rš   rþ   r  r  r  rU   )r<  ÚurirV   rî   r  s        r.   Úpostgresql_adbc_connr>  ®  s   é € ä
×Ò˜	Ô"Ü
×ÒÐ0Ô1Ý,à
@€CØ	�‰�sÔ	˜tØŠ
Ü! $Ö'ˆDÜ�dÖ!ñ (ä! $Ö'ˆCÜ�sÖ!ñ (à�‰Œ÷ 
×	Ö	üs   ‚AB1ÁAB Â	B1Â 
B.Â*B1c              #  ó,  #   • SS K nU n UR                  S5         UR                  S5        Uv •  g ! UR                   a    UR                  5         [	        X15         NDf = f! UR                   a    UR                  5         [        U5         Ncf = f7f©Nr   r7   Ú	iris_view)Úadbc_driver_managerÚadbc_get_table_schemaÚProgrammingErrorÚrollbackr_   r|   )r>  rÌ   ÚmgrrV   s       r.   Úpostgresql_adbc_irisrG  ¾  sˆ   é € ã%à€Dð9Ø×"Ñ" 6Ô*ð(Ø×"Ñ" ;Ô/ð ƒJøð ×Ñó 9Ø�‰ŒÜ'¨Ö8ð9ûð
 ×Ñó (Ø�‰ŒÜ! $Ö'ð(üóB   ‚BŠ2 œA# ­B²+A ÁBÁA Á BÁ#+BÂBÂBÂBc              #  ó  #   • SS K nU n UR                  S5        Uv •  g ! UR                   aM    UR                  5         U Vs/ s H  n[	        UR                  5       5      PM     Os  snf nn[        X55         Naf = f7f)Nr   r‚   )rB  rC  rD  rE  Útupleri   r•   )r>  r‘   rF  rV   ÚentryÚnew_datas         r.   Úpostgresql_adbc_typesrM  Ñ  sp   é € ã%à€Dð9Ø×"Ñ" 7Ô+ð ƒJøð ×Ñó 9Ø�‰ŒÙ7AÓB²z¨e”E˜%Ÿ,™,›.Ö)²zùÒBˆÐBä(¨Ö8ð	9üs1   ‚B Š  ›B  $A=Á#A(Á'A=Á:B Á<A=Á=B c              #  óh   #   • U R                  5        nUv •  S S S 5        g ! , (       d  f       g = f7fr  r$  )r2  rV   s     r.   Úpostgresql_psycopg2_conn_irisrO  â  s#   é € à	(×	0Ñ	0Ô	2°dØŠ
÷ 
3×	2Ö	2ür&  c              #  óh   #   • U R                  5        nUv •  S S S 5        g ! , (       d  f       g = f7fr  r$  )r5  rV   s     r.   Úpostgresql_psycopg2_conn_typesrQ  è  s#   é € à	)×	1Ñ	1Ô	3°tØŠ
÷ 
4×	3Ö	3ür&  c               #  ó¤   #   • [         R                  " S5        [        R                  " 5        n SU  3v •  S S S 5        g ! , (       d  f       g = f7f)Nr>   ú
sqlite:///)r  r  r·   Úensure_cleanr£   s    r.   Ú
sqlite_strrU  î  s7   é € ä
×Ò˜Ô%Ü	�ŠÔ	˜dØ˜4˜&Ð!Ò!÷ 
×	Ö	üs   ‚,A®?¶	A¿
AÁ	Ac              #  ó  #   • [         R                  " S5      nUR                  " XR                  R                  S9nUv •  [        U5       H  n[        X25        M     [        U5       H  n[        XB5        M     UR                  5         g 7f)Nr>   r.  r/  )rU  r>   rÆ   rî   r  s        r.   Úsqlite_enginerW  õ  sl   é € ä×$Ò$ \Ó2€JØ×%Ò% j¿O¹O×<TÑ<TÑU€FØ
‚LÜ˜fÖ%ˆÜ�$Öñ &ä˜fÖ%ˆÜ�3Öñ &à
‡N�NÕùs   ‚B
Bc              #  óh   #   • U R                  5        nUv •  S S S 5        g ! , (       d  f       g = f7fr  r$  )rW  rV   s     r.   Úsqlite_connrY    s#   é € à	×	Ñ	Ô	  DØŠ
÷ 
!×	 Ö	 ür&  c                ó¢   • [         R                  " S5      nUR                  " U 5      n[        X15        [	        U5        UR                  5         U $ )Nr>   )r  r  r¿   rp   r|   rÄ   )rU  rÌ   r>   rÆ   s       r.   Úsqlite_str_irisr[    sB   € ä×$Ò$ \Ó2€JØ×%Ò% jÓ1€FÜ˜Ô+Ü˜fÔ%Ø
‡N�NÔØÐr-   c              #  ó@   #   • [        X5        [        U 5        U v •  g 7fr  r  )rW  rÌ   s     r.   Úsqlite_engine_irisr]    s   é € ä˜Ô2Ü˜mÔ,Ø
Óùr  c              #  óh   #   • U R                  5        nUv •  S S S 5        g ! , (       d  f       g = f7fr  r$  )r]  rV   s     r.   Úsqlite_conn_irisr_    s#   é € à	×	#Ñ	#Ô	%¨ØŠ
÷ 
&×	%Ö	%ür&  c                óŽ   • [         R                  " S5      nUR                  " U 5      n[        X1S5        UR	                  5         U $ )Nr>   r&   )r  r  r¿   r›   rÄ   )rU  r‘   r>   rÆ   s       r.   Úsqlite_str_typesra    s<   € ä×$Ò$ \Ó2€JØ×%Ò% jÓ1€FÜ˜&¨hÔ7Ø
‡N�NÔØÐr-   c              #  ó,   #   • [        XS5        U v •  g 7f)Nr&   r   )rW  r‘   s     r.   Úsqlite_engine_typesrc  '  s   é € ä˜-°XÔ>Ø
Óùr"  c              #  óh   #   • U R                  5        nUv •  S S S 5        g ! , (       d  f       g = f7fr  r$  )rc  rV   s     r.   Úsqlite_conn_typesre  -  s#   é € à	×	$Ñ	$Ô	&¨$ØŠ
÷ 
'×	&Ö	&ür&  c               #  óÊ  #   • [         R                  " S5        [         R                  " S5        SSKJn   [        R
                  " 5        nSU 3nU R                  U5       nUv •  [        U5       H  n[        XC5        M     [        U5       H  n[        XS5        M     UR                  5         S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f7f)Nr9  Úadbc_driver_sqliter   r;  zfile:)r  r  rg  r<  r·   rT  rš   rþ   r  r  r  rU   )r<  r¤   r=  rV   rî   r  s         r.   Úsqlite_adbc_connrh  3  s¢   é € ä
×Ò˜	Ô"Ü
×ÒÐ,Ô-Ý(ä	�ŠÔ	˜dØ�d�VˆnˆØ�]‰]˜3Ô 4ØŠJÜ% dÖ+�Ü˜$Ö%ñ ,ä% dÖ+�Ü˜3Ö%ñ ,à�K‰KŒM÷  ÷ 
Ð	çÕú÷ 
Õ	üs7   ‚AC#Á
CÁ!ACÂ0CÂ8	C#Ã
C	ÃCÃ
C ÃC#c              #  ó,  #   • SS K nU n UR                  S5         UR                  S5        Uv •  g ! UR                   a    UR                  5         [	        X15         NDf = f! UR                   a    UR                  5         [        U5         Ncf = f7fr@  )rB  rC  rD  rE  r]   r|   )rh  rÌ   rF  rV   s       r.   Úsqlite_adbc_irisrj  D  sˆ   é € ã%à€Dð6Ø×"Ñ" 6Ô*ð(Ø×"Ñ" ;Ô/ð ƒJøð ×Ñó 6Ø�‰ŒÜ$ TÖ5ð6ûð
 ×Ñó (Ø�‰ŒÜ! $Ö'ð(ürH  c              #  ó|  #   • SS K nU n UR                  S5        Uv •  g ! UR                   a‰    UR                  5         / nU HS  n[	        US   5      US'   US   b  [	        US   5      US'   UR                  [        UR                  5       5      5        MU     [        X45        UR                  5          N�f = f7f)Nr   r‚   r‰   r‹   )
rB  rC  rD  rE  Úintrõ   rJ  ri   r“   rU   )rh  r‘   rF  rV   rL  rK  s         r.   Úsqlite_adbc_typesrm  V  sµ   é € ã%à€DðØ×"Ñ" 7Ô+ð ƒJøð ×Ñó 
Ø�‰ŒØˆÛˆEÜ" 5¨Ñ#3Ó4ˆE�)ÑØÐ&Ñ'Ñ3Ü+.¨uÐ5FÑ/GÓ+H�Ð'Ñ(Ø�O‰OœE %§,¡,£.Ó1Ö2ñ	  ô 	& dÔ5Ø�‰Žð
üs&   ‚B<Š  ›B< BB9Â6B<Â8B9Â9B<c               #  óÔ   #   • [         R                  " [        R                  " S5      5       n U  nUv •  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f7f)Nú:memory:)Ú
contextlibr   ry   rš   ©Úclosing_connrV   s     r.   Úsqlite_buildinrs  l  sC   é € ä	×	Ò	œGŸOšO¨JÓ7Ô	8¸LÙ˜TØŠJ÷ ÷ 
9Ð	8ß�\ú÷ 
9Õ	8üs1   ‚+A(­A°AµA½	A(Á
A	ÁAÁ
A%Á!A(c              #  ó@   #   • [        X5        [        U 5        U v •  g 7fr  )r]   r|   )rs  rÌ   s     r.   Úsqlite_buildin_irisru  s  s   é € ä  Ô;Ü˜nÔ-Ø
Óùr  c              #  ó†   #   • U Vs/ s H  n[        UR                  5       5      PM     nn[        X5        U v •  g s  snf 7fr  )rJ  ri   r“   )rs  r‘   rK  s      r.   Úsqlite_buildin_typesrw  z  s8   é € á5?Ó@²Z¨E”%˜Ÿ™›Ö'±Z€JÐ@Ü! .Ô=Ø
Óùò Aùs   ‚A‡#<ªAr  )Úmarksr%  r  r(  r!  r*  r0  r7  r2  rO  r5  rQ  )rW  rY  rU  )r]  r_  r[  )rc  re  ra  rh  r>  rG  rj  rM  rm  rs  ru  rw  c                óJ   • UR                  U 5      n UR                  SU SSS9  g )NÚtestrõ   F©r¤   ro   Ú	if_existsr­   )ÚgetfixturevalueÚto_sql)rV   rå   Úrequests      r.   Útest_dataframe_to_sqlr€  Ö  s+   € ð ×"Ñ" 4Ó(€DØ×Ñ˜F¨¸ÈÐÒNr-   c                óþ   • U S:X  aE  [        5       (       d6  UR                  R                  [        R                  R                  SS95        UR                  U 5      n UR                  S S nUR                  SU SSS9  g )	Nr>  z=postgres ADBC driver < 1.2 cannot insert index with null type©Úreasonr   rz  rõ   Fr{  )	r   ÚnodeÚ
add_markerr  ÚmarkÚxfailr}  r²   r~  )rV   rå   r  Úempty_dfs       r.   Útest_dataframe_to_sql_emptyr‰  Ý  sx   € àÐ%Ó%Ô.@×.BÑ.BØ�‰×ÑÜ�K‰K×ÑØVð ð ô	
ð ×"Ñ" 4Ó(€DØ×Ñ  Ð#€HØ‡O�O˜ T°XÀU€OÒKr-   c                óv  • [         R                  " S5        [        [        R                  " S/SS9[        R                  " [        SSS5      /SS9[        R                  " [        SSS5      /SS9[        R                  " [        S5      /SS9[        R                  " S	/S
S9S.5      nSU ;   a/  U S:X  a  UR                  S/S9n[        (       a	  [        nSnOS nSnO[        nSnUR                  U 5      n [        R                  " X4SS9   UR                  SU SSS9  S S S 5        g ! , (       d  f       g = f)Nr9  rH   zint8[pyarrow]©r@   éç  útimestamp[ns][pyarrow]zdate32[day][pyarrow]zduration[ns][pyarrow]Úazstring[pyarrow])rl  r   r   r   Ústringr{   rh  r   râ   zis_sparse is deprecatedÚ zthe 'timedelta'F)ÚmatchÚcheck_stacklevelÚ
test_arrowÚreplacer{  )r  r  r   ÚpdÚarrayr   r   r   rk   r   ÚDeprecationWarningÚUserWarningr}  r·   Úassert_produces_warningr~  )rV   r  rÖ   Úexp_warningÚmsgs        r.   Ú"test_dataframe_to_sql_arrow_dtypesrœ  ì  s  € ô ×Ò˜	Ô"Ü	ä—8’8˜Q˜C Ñ7ÜŸšÜ˜$  1Ó%Ð&Ð.Fñô —H’Hœd 4¨¨AÓ.Ð/Ð7MÑNÜŸš¤9¨Q£< .Ð8OÑPÜ—h’h ˜uÐ,=Ñ>ñ	
ó

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

    CREATE PROCEDURE get_testdb ()

    BEGIN
        SELECT * FROM test_frame;
    ENDzCALL get_testdb();)r}  r>   rw   r™   r˜   r   r~  rx   rš   rj   rM   r   r#   r·   Úassert_frame_equalr½  )	rV   r  rw   r˜   rÖ   ÚprocÚengine_connÚres1Úres2s	            r.   Útest_read_procedurerø  Ý  s  € à×"Ñ" 4Ó(€Dõ
  Ý(ä	šªÑ9Ó	:€BØ‡I�I�< T°€IÑ7ð€Dñ �‹:€DÜ�$×ÑØ�\‰\Œ^˜{Ø×"Ñ"Õ$Ø×#Ñ# DÔ)÷ %÷ ˆ^ð �Z‰Z�\Ø�L‰L˜Ô÷ ô ×ÒÐ2°DÓ9€DÜ×Ò˜"Ô#ô �<Š<Ð,¨dÓ3€DÜ×Ò˜"Õ#÷ %Õ$ú÷ �^ú÷ �\ús0   Á+D5Á<D$ÂD5Â/EÄ$
D2	Ä.D5Ä5
EÅ
EÚexpected_countrI   zSuccess!c                óþ   ^• U4S jnUR                  U 5      n [        SS/SS/SS/S.5      nUR                  S	U S
US9nTc  Ub   eOUT:X  d   e[        R                  " S	U 5      n[
        R                  " Xd5        g )Nc           	     óò  >• UR                   nUR                  5        n[        5       n[        R                  " U5      nUR                  U5        UR                  S5        SR                  U Vs/ s H	  nSU S3PM     sn5      n	U R                  (       a  U R                   SU R                   3n
OU R                  n
SU
 SU	 S3nUR                  X¶S9  S S S 5        T$ s  snf ! , (       d  f       T$ = f)	Nr   z, r  Ú.zCOPY z (z) FROM STDIN WITH CSV)r   Úfile)Ú
connectionrL   r	   rO   ÚwriterÚ	writerowsÚseekÚjoinrû   r¤   Úcopy_expert)rü   rV   rÔ   rÝ  Ú
dbapi_connrY   Ús_bufrÿ  Úkr¹   rÅ   Ú	sql_queryrù  s               €r.   Úpsql_insert_copyÚBtest_copy_from_callable_insertion_method.<locals>.psql_insert_copy  sÛ   ø€ à—_‘_ˆ
Ø×ÑÔ  CÜ“JˆEÜ—Z’Z Ó&ˆFØ×Ñ˜YÔ'Ø�J‰J�qŒMà—i‘i±4Ó 8²4¨a 1 Q C q£±4Ñ 8Ó9ˆGØ�|�|Ø %§¡˜~¨Q¨u¯z©z¨lÐ;‘
à"ŸZ™Z�
à 
˜|¨2¨g¨YÐ6KÐLˆIØ�O‰O 	ˆOÑ6÷ !ð Ðùò !9÷ !Ô ð Ðús   žAC'Á0C"
Â AC'Ã"C'Ã'
C6rH   rI   rî  r«   rŽ  Ún©Úcol1Úcol2Úcol3r§  F)r¤   ro   r­   r   ©r}  r   r~  r   r$   r·   ró  )rV   rù  r  r  ÚexpectedÚresult_countÚresults    `     r.   Ú(test_copy_from_callable_insertion_methodr    s–   ø€ õð& ×"Ñ" 4Ó(€DÜ 1 a &°3¸°*ÀsÈCÀjÑQÓR€HØ—?‘?Ø˜t¨5Ð9Ið #ð €Lð ÑØÑ#Ð#Ñ#à˜~Ó-Ð-Ð-Ü×Ò ¨dÓ3€FÜ×Ò˜&Õ+r-   c                óV  ^• UR                  U 5      n SSKJm  SSKJn  SSKJn  U4S jnU" S5      n[        X5      (       aD  U R                  5        nUR                  5          UR                  U5        S S S 5        S S S 5        O*U R                  5          U R                  U5        S S S 5        [        / SQ/[        S5      S	9nUR                  S
U SSS9  [        / SQ/[        S5      S	9nUR                  S
U SSUS9n	[        R                  " S
U 5      n
[         R"                  " X§5        U	S:X  d   e[        R$                  " U SS9 nUR'                  S
5        S S S 5        g ! , (       d  f       N÷= f! , (       d  f       NÕ= f! , (       d  f       Næ= f! , (       d  f       g = f)Nr   ra   r—   rv   c           	     óî   >• U Vs/ s H  n[        [        X$5      5      PM     nnT" U R                  5      R                  U5      R	                  S/S9nUR                  U5      nUR                  $ s  snf )NrŽ  )Úindex_elements)rg   rh   rü   ri   Úon_conflict_do_nothingrM   Úrowcount©	rü   rV   rÔ   rÝ  r\   rÊ   rX   r  rb   s	           €r.   Úinsert_on_conflictÚHtest_insertion_method_on_conflict_do_nothing.<locals>.insert_on_conflict2  si   ø€ Ù09Ó:²	¨””S˜“^Ö$±	ˆÐ:á�5—;‘;Óß‰V�D‹\ß#Ñ#°C°5Ð#Ð9ð 	ð
 —‘˜dÓ#ˆØ�‰Ðùò ;s   †A2zx
    CREATE TABLE test_insert_conflict (
        a  integer PRIMARY KEY,
        b  numeric,
        c  text
    );
    ©rH   çÍÌÌÌÌÌ @rŽ  Úabcrâ   Útest_insert_conflictrõ   Fr{  ©rH   gš™™™™™	@rñ  ©r¤   ro   r­   r|  r   Tr¥  )r}  Úsqlalchemy.dialects.postgresqlrb   r™   r˜   Úsqlalchemy.sqlrw   rx   rš   rj   rM   r   Úlistr~  r   r$   r·   ró  r   r  )rV   r  r˜   rw   r  Ú
create_sqlro   r  Ú	df_insertÚinsertedr  r«  rb   s               @r.   Ú,test_insertion_method_on_conflict_do_nothingr(  )  sh  ø€ ð ×"Ñ" 4Ó(€Då5Ý(Ý#õñ ð	ó€Jô �$×ÑØ�\‰\Œ^˜sØ—‘•Ø—‘˜JÔ'÷ ÷ ˆ^ð �Z‰Z�\Ø�L‰L˜Ô$÷ ô š-˜´$°u³+Ñ>€HØ‡O�OØ#¨¸Èð ñ ô š=˜/´4¸³;Ñ?€IØ×ÑØ#ØØØØ!ð  ð €Hô ×ÒÐ 6¸Ó=€FÜ×Ò˜&Ô+Ø�q‹=Ðˆ=ô 
�Š˜°Ò	5¸Ø×ÑÐ3Ô4÷ 
6Ð	5÷1 •ú÷ �^ú÷ �\ú÷* 
6Õ	5úó<   ÁE8Á$E'Á6E8ÂF	ÅFÅ'
E5	Å1E8Å8
FÆ	
FÆ
F(c                óF  • SU ;   d  SU ;   a,  UR                  [        R                  R                  SS95        UR	                  U 5      n [        / SQ/ SQ/[        S5      S9nUR                  S	U S
SSS9  [        R                  " S	U SS9n[        R                  " X#5        g )Nr&   r'   z2test for public schema only specific to postgresqlr‚  r  )rI   gÍÌÌÌÌÌ@rñ  r  râ   Útest_public_schemarõ   FÚpublic)r¤   ro   r|  r­   rû   ©rû   )rä  r  r†  r‡  r}  r   r$  r~  r   r$   r·   ró  )rV   r  Ú	test_dataÚdf_outs       r.   Útest_to_sql_on_public_schemar0  c  s¦   € à�4Ó˜7 d›?Ø×ÑÜ�K‰K×ÑØKð ð ô	
ð ×"Ñ" 4Ó(€Däš=ª-Ð8Ä$ÀuÃ+ÑN€IØ×ÑØ!ØØØØð ñ ô ×ÒÐ 4°dÀ8ÑL€FÜ×Ò˜)Õ,r-   c                óV  ^• UR                  U 5      n SSKJm  SSKJn  SSKJn  U4S jnU" S5      n[        X5      (       aD  U R                  5        nUR                  5          UR                  U5        S S S 5        S S S 5        O*U R                  5          U R                  U5        S S S 5        [        / SQ/[        S5      S	9nUR                  S
U SSS9  [        / SQ/[        S5      S	9nUR                  S
U SSUS9n	[        R                  " S
U 5      n
[         R"                  " X¨5        U	S:X  d   e[        R$                  " U SS9 nUR'                  S
5        S S S 5        g ! , (       d  f       N÷= f! , (       d  f       NÕ= f! , (       d  f       Næ= f! , (       d  f       g = f)Nr   ra   r—   rv   c           	     óB  >• U Vs/ s H  n[        [        X$5      5      PM     nnT" U R                  5      R                  U5      nUR	                  UR
                  R                  UR
                  R                  S9nUR                  U5      nUR                  $ s  snf )N)rñ  r÷   )
rg   rh   rü   ri   Úon_duplicate_key_updater'  rñ  r÷   rM   r  r  s	           €r.   r  ÚDtest_insertion_method_on_conflict_update.<locals>.insert_on_conflict„  s{   ø€ Ù09Ó:²	¨””S˜“^Ö$±	ˆÐ:Ù�e—k‘kÓ"×)Ñ)¨$Ó/ˆØ×+Ñ+¨d¯m©m¯o©oÀÇÁÇÁÐ+ÐQˆØ—‘˜dÓ#ˆØ�‰Ðùò	 ;s   †Bzv
    CREATE TABLE test_insert_conflict (
        a INT PRIMARY KEY,
        b FLOAT,
        c VARCHAR(10)
    );
    r  r  râ   r  rõ   Fr{  r   r!  rI   Tr¥  )r}  Úsqlalchemy.dialects.mysqlrb   r™   r˜   r#  rw   rx   rš   rj   rM   r   r$  r~  r   r$   r·   ró  r   r  )rV   r  r˜   rw   r  r%  ro   rÖ   r  r'  r  r«  rb   s               @r.   Ú(test_insertion_method_on_conflict_updater6  {  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¸Ø×ÑÐ3Ô4÷ 
6Ð	5÷- •ú÷ �^ú÷ �\ú÷& 
6Õ	5úr)  c                ó²  • UR                  U 5      n SSKJn  SSKJn  S[
        R                  " 5       R                   3nS[
        R                  " 5       R                   3nU" SU SU SU S	U S
3	5      n[        X5      (       aD  U R                  5        nUR                  5          UR                  U5        S S S 5        S S S 5        O*U R                  5          U R                  U5        S S S 5        [        XP5      n[        S/SS.5      n	[        R                  " X‰5        g ! , (       d  f       Nr= f! , (       d  f       NP= f! , (       d  f       Na= f)Nr   r—   rv   Úgroup_Úgroup_view_z
    CREATE TABLE zF (
        group_id INTEGER,
        name TEXT
    );
    INSERT INTO z- VALUES
        (1, 'name');
    CREATE VIEW z
    AS
    SELECT * FROM z;
    rH   r¤   ©Úgroup_idr¤   )r}  r™   r˜   r#  rw   ÚuuidÚuuid4Úhexrx   rš   rj   rM   r$   r   r·   ró  )
rV   r  r˜   rw   rÅ   rý   Úsql_stmtro   r  r  s
             r.   Útest_read_view_postgresr@  °  s   € ð ×"Ñ" 4Ó(€Då(Ý#àœ$Ÿ*š*›,×*Ñ*Ð+Ð,€JØœdŸjšj›l×.Ñ.Ð/Ð0€IáðØ�ð ð �ð à�ð à�,ð ð
	ó€Hô �$×ÑØ�\‰\Œ^˜sØ—‘•Ø—‘˜HÔ%÷ ÷ ˆ^ð �Z‰Z�\Ø�L‰L˜Ô"÷ ä˜IÓ,€FÜ q c°6Ñ:Ó;€HÜ×Ò˜&Õ+÷ •ú÷ �^ú÷ �\ús0   ÂD7Â(D&Â:D7ÃEÄ&
D4	Ä0D7Ä7
EÅ
Ec                óî   • SnSnSnU R                  U5        U R                  U5        U R                  U5        [        R                  " SU 5      n[        S/SS.5      n[        R
                  " XE5        g )Nz<
CREATE TABLE groups (
   group_id INTEGER,
   name TEXT
);
z,
INSERT INTO groups VALUES
    (1, 'name');
z1
CREATE VIEW group_view
AS
SELECT * FROM groups;
zSELECT * FROM group_viewrH   r¤   r:  )rM   r•  r½  r   r·   ró  )rs  Úcreate_tableÚinsert_intoÚcreate_viewr  r  s         r.   Útest_read_view_sqliterE  Ô  ss   € ð€Lð€Kð€Kð
 ×Ñ˜<Ô(Ø×Ñ˜;Ô'Ø×Ñ˜;Ô'Ü�[Š[Ð3°^ÓD€FÜ q c°6Ñ:Ó;€HÜ×Ò˜&Õ+r-   c                óþ   • [         R                  " [        SS9   [        R                  " [
        SS9   [        R                  " SU 5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nz+pandas.io.sql.execute requires a connectionrµ  úP`pandas.io.sql.execute` is deprecated and will be removed in the future version.úselect * from iris)r  r¶  Ú	TypeErrorr·   r™  ÚFutureWarningr   rM   )r]  s    r.   Útest_execute_typeerrorrK  í  s\   € Ü	�Š”yÐ(UÓ	VÜ×'Ò'Üð5ó
ô
 �KŠKÐ,Ð.@ÔA÷
÷ 
WÐ	V÷
õ 
ú÷ 
WÕ	Vús"   šA.´AÁA.Á
A+	Á'A.Á.
A<c                ó˜   • [         R                  " [        SS9   [        R                  " SU 5        S S S 5        g ! , (       d  f       g = f)NrG  rµ  rH  )r·   r™  rJ  r   rM   )r_  s    r.   Útest_execute_deprecatedrM  ÷  s:   € ä	×	#Ò	#Üð1ó
ô
 	�ŠÐ(Ð*:Ô;÷
÷ 
ö 
ús	   š;»
A	c                óH   • SU ;   a  gSU ;   a  gSU ;   a  g[        SU  35      e)Nr(   r&   r'   zunsupported connection: )r·  )ré  s    r.   ÚflavorrO    s6   € Ø�yÓ ØØ	�YÓ	ØØ	�IÓ	Øä
Ð/°	¨{Ð;Ó
<Ð<r-   c                óœ  • SU ;   a7  UR                   R                  [        R                  R	                  SSS95        U nUR                  U 5      n US   [        U5         nSn[        U 5       nUR                  5          UR                  XES9nS S S 5        S S S 5        [        W5        g ! , (       d  f       N"= f! , (       d  f       N+= f)Nr{   ú)'params' not implemented for ADBC driversTr£  r)   rÐ  rÌ  ©r„  r…  r  r†  r‡  r}  rO  r"   Úrun_transactionÚ
read_queryr½   ©rV   r  r/   ré  rÓ  rn   r«  r¿  s           r.   Útest_read_sql_iris_parameterrV    s¸   € à�ƒ~Ø�‰×ÑÜ�K‰K×ÑØBØð ð ô	
ð €IØ×"Ñ" 4Ó(€DØÐ)Ñ*¬6°)Ó+<Ñ=€EØ!€FÜ	˜4Ô	  IØ×&Ñ&Õ(Ø"×-Ñ-¨eÐ-ÐCˆJ÷ )÷ 
!ô �ZÕ ÷ )Õ(ú÷ 
!Õ	 ús$   Á/B=Â B,ÂB=Â,
B:	Â6B=Â=
Cc                ó¢  • SU ;   a7  UR                   R                  [        R                  R	                  SSS95        U nUR                  U 5      n US   [        U5         nSSS.n[        U 5       nUR                  5          UR                  XES	9nS S S 5        S S S 5        [        W5        g ! , (       d  f       N"= f! , (       d  f       N+= f)
Nr{   rQ  Tr£  r*   r¬   rª   rÊ  rÌ  rR  rU  s           r.   Ú"test_read_sql_iris_named_parameterrX    s½   € à�ƒ~Ø�‰×ÑÜ�K‰K×ÑØBØð ð ô	
ð €IØ×"Ñ" 4Ó(€DØÐ/Ñ0´¸	Ó1BÑC€EØ#¨sÑ3€FÜ	˜4Ô	  IØ×&Ñ&Õ(Ø"×-Ñ-¨eÐ-ÐCˆJ÷ )÷ 
!ô �ZÕ ÷ )Õ(ú÷ 
!Õ	 ús$   Á2C ÂB/ÂC Â/
B=	Â9C Ã 
Cc                óœ  • SU ;   d  SU ;   a2  SU ;  a,  UR                  [        R                  R                  SS95        U nUR	                  U 5      n US   [        U5         n[        U 5       nUR                  5          UR                  US S9nS S S 5        S S S 5        [        W5        g ! , (       d  f       N"= f! , (       d  f       N+= f)Nr'   r(   r{   zbroken testr‚  r+   rÌ  )
rä  r  r†  r‡  r}  rO  r"   rS  rT  r½   )rV   r  r/   ré  rÓ  r«  r¿  s          r.   Ú,test_read_sql_iris_no_parameter_with_percentrZ  3  s²   € à�$ƒ˜<¨4Ó/°FÀ$Ó4FØ×ÑœFŸK™K×-Ñ-°]Ð-ÐCÔDà€IØ×"Ñ" 4Ó(€DàÐ9Ñ:¼6À)Ó;LÑM€EÜ	˜4Ô	  IØ×&Ñ&Õ(Ø"×-Ñ-¨e¸DÐ-ÐAˆJ÷ )÷ 
!ô �ZÕ ÷ )Õ(ú÷ 
!Õ	 ús$   Á.B=Á?B,ÂB=Â,
B:	Â6B=Â=
Cc                ój   • UR                  U 5      n [        R                  " SU 5      n[        U5        g )NzSELECT * FROM iris_view)r}  r   r#   r½   r¾  s      r.   Útest_api_read_sql_viewr\  F  s-   € à×"Ñ" 4Ó(€DÜ×#Ò#Ð$=¸tÓD€JÜ�ZÕ r-   c                ó8  • SU ;   a6  UR                   R                  [        R                  R	                  SS95        UR                  U 5      n Sn[        R                  " X SS9n[        R                  " X 5      n[        R                  " [        U5      U5        g )Nr{   rØ  r‚  z1SELECT * FROM iris_view WHERE "SepalLength" < 0.0r¯   rÄ  )r„  r…  r  r†  r‡  r}  r   r#   r·   ró  r   )rV   r  rÓ  Ú
with_batchÚwithout_batchs        r.   Ú*test_api_read_sql_with_chunksize_no_resultr`  M  s   € à�ƒ~Ø�‰×ÑÜ�K‰K×ÑÐ%RÐÐSô	
ð ×"Ñ" 4Ó(€DØ?€EÜ×#Ò# E¸1Ñ=€JÜ×&Ò& uÓ3€MÜ×Òœ& Ó,¨mÕ<r-   c                óJ  • UR                  U 5      n [        R                  " SU 5      (       a/  [        R                  " U SS9 nUR	                  S5        S S S 5        [        R
                  " USU 5        [        R                  " SU 5      (       d   eg ! , (       d  f       NE= f)Nrå   Tr¥  )r}  r   r©  r   r  r~  )rV   r  rå   r«  s       r.   Útest_api_to_sqlrb  Z  sx   € à×"Ñ" 4Ó(€DÜ
‡}‚}�] D×)Ñ)Ü�_Š_˜T°DÒ9¸YØ× Ñ  Ô/÷ :ô ‡J‚Jˆ{˜M¨4Ô0Ü�=Š=˜¨×-Ñ-Ð-Ñ-÷	 :Õ9ús   ÁBÂ
B"c                óà  • UR                  U 5      n [        R                  " SU 5      (       a/  [        R                  " U SS9 nUR	                  S5        S S S 5        [        R
                  " USU SS9  [        R                  " SU 5      (       d   eSn[        R                  " [        US9   [        R
                  " USU SS9  S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)NÚtest_frame2Tr¥  r®  r¯  z"Table 'test_frame2' already existsrµ  )	r}  r   r©  r   r  r~  r  r¶  r·  )rV   r  rå   r«  r›  s        r.   Útest_api_to_sql_failre  e  s°   € à×"Ñ" 4Ó(€DÜ
‡}‚}�] D×)Ñ)Ü�_Š_˜T°DÒ9¸YØ× Ñ  Ô/÷ :ô ‡J‚Jˆ{˜M¨4¸6ÒBÜ�=Š=˜¨×-Ñ-Ð-Ð-à
.€CÜ	�Š”z¨Ó	-Ü�
Š
�; ¨t¸vÒF÷ 
.Ð	-÷ :Õ9ú÷ 
.Õ	-ús   ÁCÂ-CÃ
CÃ
C-c                ó²  • UR                  U 5      n [        R                  " SU 5      (       a/  [        R                  " U SS9 nUR	                  S5        S S S 5        [        R
                  " USU SS9  [        R
                  " USU SS9  [        R                  " SU 5      (       d   e[        U5      n[        U S5      nXT:X  d   eg ! , (       d  f       Ny= f)Nrç   Tr¥  r®  r¯  r”  ©r}  r   r©  r   r  r~  rª  rÇ   ©rV   r  rå   r«  Únum_entriesÚnum_rowss         r.   Útest_api_to_sql_replacerk  t  s®   € à×"Ñ" 4Ó(€DÜ
‡}‚}�] D×)Ñ)Ü�_Š_˜T°DÒ9¸YØ× Ñ  Ô/÷ :ô ‡J‚Jˆ{˜M¨4¸6ÒBä‡J‚Jˆ{˜M¨4¸9ÒEÜ�=Š=˜¨×-Ñ-Ð-Ð-ä�kÓ"€KÜ˜$ Ó.€HàÓ"Ð"Ñ"÷ :Õ9ús   ÁCÃ
Cc                óÐ  • UR                  U 5      n [        R                  " SU 5      (       a/  [        R                  " U SS9 nUR	                  S5        S S S 5        [        R
                  " USU SS9S:X  d   e[        R
                  " USU SS9S:X  d   e[        R                  " SU 5      (       d   eS[        U5      -  n[        U S5      nXT:X  d   eg ! , (       d  f       Nˆ= f)	NÚtest_frame4Tr¥  r®  r¯  rK   rõ   rI   rg  rh  s         r.   Útest_api_to_sql_appendrn  †  sË   € à×"Ñ" 4Ó(€DÜ
‡}‚}�] D×)Ñ)Ü�_Š_˜T°DÒ9¸YØ× Ñ  Ô/÷ :ô �:Š:�k =°$À&ÑIÈQÓNÐNÐNô �:Š:�k =°$À(ÑKÈqÓPÐPÐPÜ�=Š=˜¨×-Ñ-Ð-Ð-à”c˜+Ó&Ñ&€KÜ˜$ Ó.€HàÓ"Ð"Ñ"÷ :Õ9ús   ÁCÃ
C%c                óf  • UR                  U 5      n [        R                  " SU 5      (       a/  [        R                  " U SS9 nUR	                  S5        S S S 5        [        R
                  " USU SS9  [        R                  " SU 5      n[        R                  " X$5        g ! , (       d  f       NS= f)NÚtest_frame5Tr¥  F©r­   zSELECT * FROM test_frame5)	r}  r   r©  r   r  r~  r½  r·   ró  )rV   r  rç   r«  r  s        r.   Útest_api_to_sql_type_mappingrr  ™  s‚   € à×"Ñ" 4Ó(€DÜ
‡}‚}�] D×)Ñ)Ü�_Š_˜T°DÒ9¸YØ× Ñ  Ô/÷ :ô ‡J‚Jˆ{˜M¨4°uÒ=Ü�\Š\Ð5°tÓ<€Fä×Ò˜+Õ.÷ :Õ9ús   ÁB"Â"
B0c                ó¾  • UR                  U 5      n [        R                  " SU 5      (       a/  [        R                  " U SS9 nUR	                  S5        S S S 5        [        [        R                  " SSS9SS9n[        R                  " USU S	S
9  [        R                  " SU 5      n[        R                  " UR                  5       U5        g ! , (       d  f       N= f)NÚtest_seriesTr¥  r¯   rÓ   r‹  Úseriesr£   Frq  zSELECT * FROM test_series)r}  r   r©  r   r  r   rµ   Úaranger~  r#   r·   ró  Úto_frame)rV   r  r«  ÚsÚs2s        r.   Útest_api_to_sql_seriesrz  ¦  s£   € à×"Ñ" 4Ó(€DÜ
‡}‚}�] D×)Ñ)Ü�_Š_˜T°DÒ9¸YØ× Ñ  Ô/÷ :ô 	Œr�yŠy˜ 'Ñ*°Ñ:€AÜ‡J‚Jˆq�- ¨UÒ3Ü	×	Ò	Ð7¸Ó	>€BÜ×Ò˜!Ÿ*™*›,¨Õ+÷ :Õ9ús   ÁCÃ
Cc                ó4  • U nUR                  U 5      n [        R                  " SU 5      (       a/  [        R                  " U SS9 nUR	                  S5        S S S 5        [        R
                  " USU S9  [        R                  " SU S9nSU;   a  UR                  SS0S	9nUR                  Ul        UR                  SSS
9  UR                  R                  [        5        S UR                  l        [        R                  " XR5        g ! , (       d  f       N¸= f)NÚtest_frame_roundtripTr¥  ©ro   ú"SELECT * FROM test_frame_roundtripr{   Ú__index_level_0__Úlevel_0râ   ©Úinplace)r}  r   r©  r   r  r~  r#   Úrenamer­   Ú	set_indexrÕ   rl  r¤   r·   ró  ©rV   r  rå   ré  r«  r  s         r.   Útest_api_roundtripr†  ³  sè   € à€IØ×"Ñ" 4Ó(€DÜ
‡}‚}Ð+¨T×2Ñ2Ü�_Š_˜T°DÒ9¸YØ× Ñ Ð!7Ô8÷ :ô ‡J‚Jˆ{Ð2¸Ò=Ü×ÒÐ DÈ$ÑO€Fð �ÓØ—‘Ð(;¸YÐ'G�ÐHˆØ×$Ñ$€F„LØ
×Ñ�Y¨ÐÑ-Ø
‡L�L×ÑœÔØ€F‡L�LÔÜ×Ò˜&Õ.÷ :Õ9ús   ÁD	Ä	
Dc                óÜ  • SU ;   a6  UR                   R                  [        R                  R	                  SS95        UR                  U 5      n [        R                  " SU 5      (       a/  [        R                  " U SS9 nUR                  S5        S S S 5        [        R                  " USU SSS	9  [        R                  " S
U S9n[        R                  " XB5        g ! , (       d  f       NR= f)Nr{   rØ  r‚  r|  Tr¥  FrI   )ro   r­   rÅ  r~  r}  )r„  r…  r  r†  r‡  r}  r   r©  r   r  r~  r#   r·   ró  )rV   r  rå   r«  r  s        r.   Útest_api_roundtrip_chunksizerˆ  È  sÂ   € à�ƒ~Ø�‰×ÑÜ�K‰K×ÑÐ%RÐÐSô	
ð ×"Ñ" 4Ó(€DÜ
‡}‚}Ð+¨T×2Ñ2Ü�_Š_˜T°DÒ9¸YØ× Ñ Ð!7Ô8÷ :ô ‡J‚JØØØØØòô ×ÒÐ DÈ$ÑO€FÜ×Ò˜&Õ.÷ :Õ9ús   Á?CÃ
C+c                ó  • UR                  U 5      n [        R                  " U 5       nUR                  S5      nUR	                  5       nUR                  5         S S S 5        [        W5      / SQ:X  d   eg ! , (       d  f       N"= f©Nrº  r©   )r}  r   r"   rM   rÀ   rT   r$  )rV   r  Ú
pandas_sqlÚiris_resultsr\   s        r.   Útest_api_execute_sqlr�  Þ  sr   € ð ×"Ñ" 4Ó(€DÜ	×	Ò	˜tÔ	$¨
Ø!×)Ñ)Ð*>Ó?ˆØ×#Ñ#Ó%ˆØ×ÑÔ÷ 
%ô �‹9Ò;Ó;Ð;Ñ;÷	 
%Õ	$ús   ¨2A6Á6
Bc           
     ó¨  • U nUR                  U 5      n [        R                  " SU 5      nSU;   dE  SU;   d?  [        UR                  R
                  R                  [        R                  5      (       a   e[        R                  " SU S/S9n[        UR                  R
                  R                  [        R                  5      (       d   eUR                  R                  5       [        SSSS	S	S	5      [        SSS
S	S	S	5      /:X  d   e[        R                  " SU SS0S9n[        UR                  R
                  R                  [        R                  5      (       d   eUR                  R                  5       [        SSSS	S	S	5      [        SSS
S	S	S	5      /:X  d   e[        R                  " SU S/S9n[        UR                  R
                  R                  [        R                  5      (       d   eUR                  R                  5       [        SSSS	S	S	5      [        SSSS	S	S	5      /:X  d   e[        R                  " SU SS0S9n[        UR                  R
                  R                  [        R                  5      (       d   eUR                  R                  5       [        SSSS	S	S	5      [        SSSS	S	S	5      /:X  d   e[        R                  " SU SS0S9n[        UR                  R
                  R                  [        R                  5      (       d   eUR                  R                  5       [        S5      [        S5      /:X  d   eg )NúSELECT * FROM typesr'   r4  r„   ©Úparse_datesiÐ  rH   rJ   r   rK   ú%Y-%m-%d %H:%M:%Sr…   iÂ  é   é   iÝ  rx  r†   z%Y%m%dz
2010-10-10z
2010-12-12)r}  r   r#   r´   r„   r@   r³   rµ   Ú
datetime64Útolistr   r…   r†   rè  s       r.   Útest_api_date_parsingr—  é  s  € à€IØ×"Ñ" 4Ó(€Dô 
×	Ò	Ð1°4Ó	8€BØ�yÓ  J°)Ó$;Ü˜bŸj™j×.Ñ.×3Ñ3´R·]±]×CÑCÐCÐ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ÐBØ×Ñ×#Ñ#Ó%Ü�,ÓÜ�,Óð*ó ð ñ r-   Úerror)rs   ÚraiseÚcoercezread_sql, text, moder�  )r>   Úfallbackr‚   r>   c                óö  • U nUR                  U 5      n US:X  a2  US:X  a,  UR                  [        R                  R	                  SS95        UR                  SS05      nU" UU SSU00S9n	S	U;   a6  U	S
   R                  [        5      U	S
'   U	S   R                  [        5      U	S'   US:X  a7  UR                  SSSS.5      n[        (       d  US   R                  S5      US'   [        R                  " X˜5        g )Nr‚   rw  z failing combination of argumentsr‚  r„   údatetime64[ns]ru   )ro   r‘  r4  r‰   r‹   rM  Úint32)r…   r†   rˆ   zdatetime64[us])r}  rä  r  r†  r‡  rÕ   rl  rR   r   r·   ró  )
rV   r  r½  rw   r±  r˜  r×   ré  r  r  s
             r.   Ú!test_api_custom_dateparsing_errorrŸ  !  s  € ð$ €IØ×"Ñ" 4Ó(€DØˆwƒ˜9Ð(>Ó>Ø×ÑÜ�K‰K×ÑÐ%GÐÐHô	
ð  ×&Ñ&¨	Ð3CÐ'DÓE€HáØØà˜ %Ð(ð
ñ€Fð �YÓà" 9Ñ-×4Ñ4´SÓ9ˆˆyÑØ$*Ð+<Ñ$=×$DÑ$DÄUÓ$KˆÐ Ñ!àÐ+Ó+Ø—?‘?à%Ø")Ø!ñó
ˆ÷ $Ò#à"*¨9Ñ"5×"<Ñ"<Ð=MÓ"NˆH�YÑä×Ò˜&Õ+r-   c                óT  • UR                  U 5      n [        R                  " SU SSS/S9n[        UR                  R
                  R                  [        R                  5      (       d   e[        UR                  R
                  R                  [        R                  5      (       d   eg )Nr�  r„   r…   )Ú	index_colr‘  )
r}  r   r#   r´   r­   r@   r³   rµ   r•  r…   ©rV   r  rÖ   s      r.   Útest_api_date_and_indexr£  X  sƒ   € ð ×"Ñ" 4Ó(€DÜ	×	Ò	ØØØØ Ð-ñ	
€Bô �b—h‘h—n‘n×)Ñ)¬2¯=©=×9Ñ9Ð9Ð9Ü�b—m‘m×)Ñ)×.Ñ.´·±×>Ñ>Ð>Ñ>r-   c           
     óv  • U nUR                  U 5      n [        R                  " SU 5      (       a/  [        R                  " U SS9 nUR	                  S5        S S S 5        [        [        SS/SS95      R                  5       nUS:X  a6  UR                  R                  [        R                  R                  S	S
95        SU;   a  [        (       a  [        nO	S nO[        n[         R"                  " USS9   UR%                  SU S9nS S S 5        WS:X  d   e[        R&                  " SU 5      nUS:X  a7  [        [(        R*                  " SSSSS9[(        R*                  " SSSSS9/SS9nOUS   R-                  S5      n[         R.                  " US   U5        g ! , (       d  f       GNH= f! , (       d  f       N«= f)NÚtest_timedeltaTr¥  z00:00:01z00:00:03Úfoor£   rh  z.sqlite ADBC driver doesn't implement timedeltar‚  r{   F)r’  ©r¤   ro   rI   zSELECT * FROM test_timedeltar>  r   i@B )ÚmonthsÚdaysÚmicrosecondsÚnanosecondsiÀÆ- rÓ   )r}  r   r©  r   r  r   r   rw  r„  r…  r  r†  r‡  r   r—  r˜  r·   r™  r~  r#   r•  Ú
DateOffsetrÕ   r¸   )	rV   r  ré  r«  rÖ   rš  r  r  r  s	            r.   Útest_api_timedeltar­  g  s‘  € ð €IØ×"Ñ" 4Ó(€DÜ
‡}‚}Ð% t×,Ñ,Ü�_Š_˜T°DÒ9¸YØ× Ñ Ð!1Ô2÷ :ô 
”f˜j¨*Ð5¸EÑBÓ	C×	LÑ	LÓ	N€BàÐ&Ó&Ø�‰×ÑÜ�K‰K×ÑØGð ð ô	
ð �ÓßÒÜ,‰Kà‰Kä!ˆä	×	#Ò	# KÀ%Ó	HØ—y‘yÐ&6¸D�yÐAˆ÷ 
Ià˜1ÓÐÐÜ×ÒÐ >ÀÓE€FàÐ*Ó*ô ä—’ Q¨Q¸WÐRSÑTÜ—’ Q¨Q¸WÐRSÑTðð ñ
‰ð �e‘9×#Ñ# GÓ,ˆÜ×Ò˜6 %™=¨(Õ3÷M :Ö9ú÷( 
IÕ	Hús   ÁFÃ4F*Æ
F'Æ*
F8c                óì   • U nUR                  U 5      n [        SSS/05      nSU;   a  SnOSn[        R                  " [        US9   UR                  SU S	9b   e S S S 5        g ! , (       d  f       g = f)
NrŽ  y      ð?      ð?y               @r{   zdatatypes not supportedzComplex datatypes not supportedrµ  Útest_complexr}  )r}  r   r  r¶  r·  r~  )rV   r  ré  rÖ   r›  s        r.   Útest_api_complex_raisesr°  –  so   € à€IØ×"Ñ" 4Ó(€DÜ	�C˜& "˜Ð&Ó	'€Bà�ÓØ'‰à/ˆÜ	�Š”z¨Ó	-Ø�y‰y˜¨TˆyÐ2Ñ:Ð:Ñ:÷ 
.×	-Ö	-ús   ÁA%Á%
A3zindex_name,index_label,expected))NNr­   )NÚother_labelr±  )Ú
index_nameNr²  )r²  r±  r±  )r   NÚ0)Nr   r³  c                ó(  • SU ;   a6  UR                   R                  [        R                  R	                  SS95        UR                  U 5      n [        R                  " SU 5      (       a/  [        R                  " U SS9 nUR                  S5        S S S 5        [        S[        S5      05      nX&R                  l        S	n[        R                  " USXS
9  [        R                  " Xp5      nUR                   S   U:X  d   eg ! , (       d  f       Nx= f)Nr{   ú-index_label argument NotImplemented with ADBCr‚  Útest_index_labelTr¥  r  rK   úSELECT * FROM test_index_label)Úindex_labelr   )r„  r…  r  r†  r‡  r}  r   r©  r   r  r   Úranger­   r¤   r~  r#   r¹   )	rV   r  r²  r¸  r  r«  Ú
temp_framerÓ  r»   s	            r.   Útest_api_to_sql_index_labelr»  ¤  sâ   € ð& �ƒ~Ø�‰×ÑÜ�K‰K×ÑÐ%TÐÐUô	
ð ×"Ñ" 4Ó(€DÜ
‡}‚}Ð'¨×.Ñ.Ü�_Š_˜T°DÒ9¸YØ× Ñ Ð!3Ô4÷ :ô ˜F¤E¨!£HÐ-Ó.€JØ&×ÑÔØ,€EÜ‡J‚JˆzÐ-¨tÒMÜ×Ò˜uÓ+€EØ�=‰=˜Ñ˜xÓ'Ð'Ñ'÷ :Õ9ús   Á?DÄ
Dc           	     óÆ  • U nSU;   a.  UR                  [        R                  R                  SSS95        O<SU;   a6  UR                  R                  [        R                  R                  SS95        UR                  U 5      n [        R                  " SU 5      (       a/  [        R                  " U S	S
9 nUR                  S5        S S S 5        Sn[        S[        S5      0[        R                  " SS/5      S9n[        R                  " USU 5      nXd:X  d   e[        R                   " SU 5      nUR"                  S   S:X  d   eUR"                  S   S:X  d   e[        R                  " USU SSS/S9nXd:X  d   e[        R                   " SU 5      nUR"                  S S R%                  5       SS/:X  d   eSS/UR&                  l        [        R                  " USU SS9nXd:X  d   e[        R                   " SU 5      nUR"                  S S R%                  5       SS/:X  d   e[        R                  " USU SSS/S9nXd:X  d   e[        R                   " SU 5      nUR"                  S S R%                  5       SS/:X  d   eSn[        R*                  " [,        US9   [        R                  " USU SSS9  S S S 5        g ! , (       d  f       GN = f! , (       d  f       g = f)Nr'   z/MySQL can fail using TEXT without length as keyFr£  r{   rµ  r‚  r¶  Tr¥  rK   r  )ÚA0ÚA1)ÚB0ÚB1rq  r·  r   r€  rH   Úlevel_1r”  rÙ   rÚ   )r|  r¸  rI   r¯  rÛ   rÜ   zALength of 'index_label' should match number of levels, which is 2rµ  )rä  r  r†  r‡  r„  r…  r}  r   r©  r   r  r   r¹  r   Úfrom_productr~  r#   r¹   r–  r­   Únamesr¶  r·  )	rV   r  ré  r«  Úexpected_row_countrº  r  r»   r›  s	            r.   Ú&test_api_to_sql_index_label_multiindexrÅ  È  sÓ  € à€IØ�)ÓØ×ÑÜ�K‰K×ÑØHÐQVð ð õ	
ð
 
�9Ó	Ø�‰×ÑÜ�K‰K×ÑÐ%TÐÐUô	
ð ×"Ñ" 4Ó(€DÜ
‡}‚}Ð'¨×.Ñ.Ü�_Š_˜T°DÒ9¸YØ× Ñ Ð!3Ô4÷ :ð ÐÜØ	”�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 :Ö9ú÷` 
.Õ	-ús   Â5K ÊKË 
KË
K c                ó�  • UR                  U 5      n [        R                  " SU 5      (       a/  [        R                  " U SS9 nUR	                  S5        S S S 5        [
        R                  " SS// SQSS/S	9nUR                  SU S
9  [        R                  " SU SS/S9n[        R                  " X4SS9  g ! , (       d  f       Nh= f)NÚtest_multiindex_roundtripTr¥  ©rH   r  Úline1©rI   ç      ø?Úline2©rÙ   rÚ   rÛ   rÙ   rÚ   ©r¹   r­   r§  z'SELECT * FROM test_multiindex_roundtrip©r¡  ©Úcheck_index_type)r}  r   r©  r   r  r   Úfrom_recordsr~  r#   r·   ró  )rV   r  r«  rÖ   r  s        r.   Útest_api_multiindex_roundtriprÓ    s¶   € à×"Ñ" 4Ó(€DÜ
‡}‚}Ð0°$×7Ñ7Ü�_Š_˜T°DÒ9¸YØ× Ñ Ð!<Ô=÷ :ô 
×	Ò	Ø	Ð-Ð.ÚØ�Cˆjñ
€Bð ‡I�IÐ.°D€IÑ9Ü×ÒØ1°4ÀCÈÀ:ñ€Fô ×Ò˜"°tÓ<÷ :Õ9ús   ÁB7Â7
Cr@   ©rÙ   rÚ   c                óÀ  • U nUR                  U 5      n [        R                  " SU 5      (       a/  [        R                  " U SS9 nUR	                  S5        S S S 5        [        SS/SS//SS	/S
9nUR                  SU S9S:X  d   eUR                  U5      nSU;   a  SnOSn[        R                  " XpUS9n[        R                  " X†5        g ! , (       d  f       N~= f)NÚtest_dtype_argumentTr¥  ç333333ó?g333333@çffffff@g333333@rÙ   rÚ   râ   r§  rI   r4  z(SELECT "A", "B" FROM test_dtype_argumentz$SELECT A, B FROM test_dtype_argument©ro   r@   )r}  r   r©  r   r  r   r~  rÕ   r#   r·   ró  )	rV   r  r@   ré  r«  rÖ   r  rÓ  r  s	            r.   Útest_api_dtype_argumentrÚ  &  sÓ   € ð €IØ×"Ñ" 4Ó(€DÜ
‡}‚}Ð*¨D×1Ñ1Ü�_Š_˜T°DÒ9¸YØ× Ñ Ð!6Ô7÷ :ô 
�S˜#�J  c 
Ð+°c¸3°ZÑ	@€BØ�9‰9Ð/°Tˆ9Ð:¸aÓ?Ð?Ð?à�y‰y˜Ó€Hà�YÓØ:‰à6ˆÜ×Ò °uÑ=€Fä×Ò˜&Õ+÷ :Õ9ús   ÁCÃ
Cc                óx   • UR                  U 5      n [        SS/SS//SS/S9n[        R                  " USU SS	9  g )
NrH   rI   rJ   rK   r   râ   Útest_frame_integer_col_namesr”  r¯  )r}  r   r   r~  r¢  s      r.   Útest_api_integer_col_namesrÝ  F  sB   € à×"Ñ" 4Ó(€DÜ	�Q˜�F˜Q ˜FÐ#¨a°¨VÑ	4€BÜ‡J‚JˆrÐ1°4À9ÓMr-   c                óÜ   • SU ;   a7  UR                   R                  [        R                  R	                  SSS95        UR                  U 5      n [        R                  " USU S9nSU;   d   eg )Nr{   ú-'get_schema' not implemented for ADBC driversTr£  rz  r}  ÚCREATE©r„  r…  r  r†  r‡  r}  r   Ú
get_schema©rV   r  rå   r%  s       r.   Útest_api_get_schemarä  M  sj   € à�ƒ~Ø�‰×ÑÜ�K‰K×ÑØFØð ð ô	
ð ×"Ñ" 4Ó(€DÜ—’ ¨V¸Ñ>€JØ�zÓ!Ð!Ñ!r-   c                óÞ   • SU ;   a7  UR                   R                  [        R                  R	                  SSS95        UR                  U 5      n [        R                  " USU SS9nSU;   d   eg )	Nr{   rß  Tr£  rz  Úpypi)ro   rû   zCREATE TABLE pypi.rá  rã  s       r.   Útest_api_get_schema_with_schemarç  [  sn   € ð �ƒ~Ø�‰×ÑÜ�K‰K×ÑØFØð ð ô	
ð ×"Ñ" 4Ó(€DÜ—’ ¨V¸ÀfÑM€JØ :Ó-Ð-Ñ-r-   c                ó<  • SU ;   a7  UR                   R                  [        R                  R	                  SSS95        U nUR                  U 5      n [        SS/SS/S	.5      nUS
:X  a  SnOSSKJn  Un[        R                  " USU SU0S9nSU;   d   eSU;   d   eg )Nr{   rß  Tr£  çš™™™™™ñ?r×  r  çš™™™™™@rð  rs  ÚINTEGERr   )r�   rz  rñ  rÙ  rà  )r„  r…  r  r†  r‡  r}  r   r>   r�   r   râ  )rV   r  ré  Úfloat_framer@   r�   r%  s          r.   Útest_api_get_schema_dtypesrí  j  s°   € à�ƒ~Ø�‰×ÑÜ�K‰K×ÑØFØð ð ô	
ð €IØ×"Ñ" 4Ó(€DÜ 3¨ *°C¸°:Ñ>Ó?€KàÐ$Ó$Ø‰å&àˆÜ—’ ¨V¸ÀcÈ5À\ÑR€JØ�zÓ!Ð!Ð!Ø˜
Ó"Ð"Ñ"r-   c                óp  • SU ;   a7  UR                   R                  [        R                  R	                  SSS95        U nUR                  U 5      n [        SS/SS/S	.5      n[        R                  " US
U SS9nSU;   a  SnOSnXe;   d   e[        R                  " US
U SS/S9nSU;   a  SnOSnXe;   d   eg )Nr{   rß  Tr£  ré  r×  r  rê  )ÚCol1ÚCol2rz  rï  )ro   rÔ   r'   z'CONSTRAINT test_pk PRIMARY KEY (`Col1`)z'CONSTRAINT test_pk PRIMARY KEY ("Col1")rÙ   rÚ   z)CONSTRAINT test_pk PRIMARY KEY (`A`, `B`)z)CONSTRAINT test_pk PRIMARY KEY ("A", "B"))	r„  r…  r  r†  r‡  r}  r   r   râ  )rV   r  rå   ré  r»   r%  Úconstraint_sentences          r.   Útest_api_get_schema_keysrò  ‚  sÔ   € à�ƒ~Ø�‰×ÑÜ�K‰K×ÑØFØð ð ô	
ð €IØ×"Ñ" 4Ó(€DÜ  S˜z°C¸°:Ñ>Ó?€EÜ—’  v°4¸fÑE€Jà�)ÓØGÑàGÐØÓ,Ð,Ð,ô —’ ¨V¸ÀSÈ#ÀJÑO€JØ�)ÓØIÑàIÐØÓ,Ð,Ñ,r-   c                ób  • SU ;   a6  UR                   R                  [        R                  R	                  SS95        U nUR                  U 5      n [        R                  " SU 5      (       a/  [        R                  " U SS9 nUR                  S5        S S S 5        [        [        R                  R                  S5      R                  S5      [        S	5      S
9nUR!                  SU SS9  [        R"                  " SU 5      n[        5       nSn/ SQn[        R"                  " SU SS9 H&  n	[%        Xi/SS9n['        U	5      X‡   :X  d   eUS-  nM(     [(        R*                  " XV5        US:X  a9  [        R,                  " [.        SS9   [        R0                  " SU SS9  S S S 5        g [        5       n
Sn/ SQn[        R0                  " SU SS9 H&  n	[%        X©/SS9n
['        U	5      X‡   :X  d   eUS-  nM(     [(        R*                  " XZ5        g ! , (       d  f       GN‚= f! , (       d  f       g = f)Nr{   rØ  r‚  Útest_chunksizeTr¥  rI   )é   r¯   Úabcderâ   Frò  zselect * from test_chunksizer   )r¯   r¯   r¯   r¯   rI   r¯   rÄ  ©Úignore_indexrH   rs  r�  rµ  )r„  r…  r  r†  r‡  r}  r   r©  r   r  r   rµ   ÚrandomÚdefault_rngÚstandard_normalr$  r~  r#   r   rª  r·   ró  r¶  ÚNotImplementedErrorr$   )rV   r  ré  r«  rÖ   rö  r÷  ÚiÚsizesÚchunkÚres3s              r.   Útest_api_chunksize_readr  Ÿ  sò  € à�ƒ~Ø�‰×ÑÜ�K‰K×ÑÐ%RÐÐSô	
ð €IØ×"Ñ" 4Ó(€DÜ
‡}‚}Ð% t×,Ñ,Ü�_Š_˜T°DÒ9¸YØ× Ñ Ð!1Ô2÷ :ô 
Ü
�	‰	×Ñ˜aÓ ×0Ñ0°Ó9Ä4ÈÃ=ñ
€Bð ‡I�IÐ#¨°U€IÑ;ô ×ÒÐ<¸dÓC€Dô ‹;€DØ	€AÚ€Eä×#Ò#Ð$BÀDÐTUÔVˆÜ�t�m°$Ñ7ˆÜ�5‹z˜U™XÓ%Ð%Ð%Ø	ˆQ‰Šñ Wô
 ×Ò˜$Ô%ð Ð$Ó$Ü�]Š]Ô.°bÓ9Ü×ÒÐ/°ÀÒC÷ :Ð9ô ‹{ˆØˆÚˆä×'Ò'Ð(8¸$È!ÔLˆEÜ˜4˜-°dÑ;ˆDÜ�u“: ¡Ó)Ð)Ð)Ø�‰FŠAñ Mô
 	×Ò˜dÕ)÷K :Ö9ú÷2 :Õ9ús   ÂHÆH È
HÈ 
H.c                ó¤  • U S:X  af  [        SSS9nUbY  [        UR                  5      [        S5      :  a7  UR                  R	                  [
        R                  R                  SSS95        UR                  U 5      n [        R                  " S	U 5      (       a/  [        R                  " U SS
9 nUR                  S	5        S S S 5        [        / SQ/ SQS.5      nUR                  5       nUS   R                  S5      US'   UR!                  S	U SS9  [        R"                  " SU 5      n[$        R&                  " Xd5        g ! , (       d  f       N†= f)Nr>  r:  rs   rt   z0.9.0z:categorical dtype not implemented for ADBC postgres driverTr£  Útest_categoricalr¥  rì  )úJohn P. Doez	Jane Dover  )Ú	person_idÚperson_namer  ÚcategoryFrò  zSELECT * FROM test_categorical)r   r   r?   r„  r…  r  r†  r‡  r}  r   r©  r   r  r   ÚcopyrÕ   r~  r#   r·   ró  )rV   r  r{   r«  rÖ   Údf2Úress          r.   Útest_api_categoricalr  Ð  s'  € àÐ%Ó%Ü)Ð*BÈ8ÑTˆØÑ¤¨×(8Ñ(8Ó 9¼GÀGÓ<LÓ LØ�L‰L×#Ñ#Ü—‘×!Ñ!ØWØð "ð ôð ×"Ñ" 4Ó(€DÜ
‡}‚}Ð'¨×.Ñ.Ü�_Š_˜T°DÒ9¸YØ× Ñ Ð!3Ô4÷ :ô 
â"ÚFñ	
ó
€Bð �'‰'‹)€CØ˜]Ñ+×2Ñ2°:Ó>€CˆÑà‡J�JÐ&¨D¸€JÑ>Ü
×
Ò
Ð=¸tÓ
D€Cä×Ò˜#Õ"÷ :Õ9ús   Â/EÅ
Ec                ó$  • UR                  U 5      n [        R                  " SU 5      (       a/  [        R                  " U SS9 nUR	                  S5        S S S 5        [        SS/SS//SS	/S
9nUR                  SU SS9  g ! , (       d  f       N2= f)NÚtest_unicodeTr¥  rH   rI   rJ   rK   ô   Ã©rñ  râ   Frò  )r}  r   r©  r   r  r   r~  )rV   r  r«  rÖ   s       r.   Útest_api_unicode_column_namer  ñ  s‚   € ð ×"Ñ" 4Ó(€DÜ
‡}‚}�^ T×*Ñ*Ü�_Š_˜T°DÒ9¸YØ× Ñ  Ô0÷ :ô 
�Q˜�F˜Q ˜FÐ#¨f°c¨]Ñ	;€BØ‡I�I�> t°5€IÒ9÷	 :Õ9ús   ÁBÂ
Bc                ó´  • U nUR                  U 5      n [        R                  " SU 5      (       a/  [        R                  " U SS9 nUR	                  S5        S S S 5        [        / SQS[        R                  S/S.5      nUR                  SU SS	9  S
U;   a  SnOSn[        R                  " XP5      n[        R                  " Xd5        g ! , (       d  f       Nx= f)Nzd1187b08-4943-4c8d-a7f6Tr¥  ©r   rH   rI   r«   rØ  rÔ  Frò  r4  z'SELECT * FROM "d1187b08-4943-4c8d-a7f6"z'SELECT * FROM `d1187b08-4943-4c8d-a7f6`)r}  r   r©  r   r  r   rµ   Únanr~  r#   r·   ró  )rV   r  ré  r«  rÖ   rÓ  r
  s          r.   Útest_api_escaped_table_namer  ý  s·   € ð €IØ×"Ñ" 4Ó(€DÜ
‡}‚}Ð.°×5Ñ5Ü�_Š_˜T°DÒ9¸YØ× Ñ Ð!:Ô;÷ :ô 
š¨#¬r¯v©v°sÐ);Ñ<Ó	=€BØ‡I�IÐ,°$¸e€IÑDà�YÓØ9‰à9ˆÜ
×
Ò
˜UÓ
)€Cä×Ò˜#Õ"÷ :Õ9ús   ÁC	Ã	
Cc                ó   • SU ;   au  [         R                  " S5      n[        UR                  5      [        S5      :¼  a  U S;   d7  UR                  R                  [         R                  R                  SSS95        UR                  U 5      n [        R                  " SU 5      (       a/  [        R                  " U SS	9 nUR                  S5        S S S 5        [        / S
Q/ SQSS.5      nUR                  SU SS9  [        R                   " SU 5      n[        / SQ/ SQ/ SQ// SQS9n["        R$                  " XV5        g ! , (       d  f       Nu= f)Nr{   r9  z16.0)rh  r>  z!pyarrow->pandas throws ValueErrorTr£  Ú
test_tabler¥  rì  rí  rH   ©rŽ  rñ  r÷   Frò  z)SELECT a, b, a +1 as a, c FROM test_table)rH   rî  rI   rH   )rI   r«   rJ   rH   )rJ   rï  rK   rH   )rŽ  rñ  rŽ  r÷   râ   )r  r  r   r?   r„  r…  r†  r‡  r}  r   r©  r   r  r   r~  r•  r½  r·   ró  )rV   r  Úpar«  rÖ   r  r  s          r.   Ú#test_api_read_sql_duplicate_columnsr  	  s  € ð �ƒ~Ü× Ò  Ó+ˆä�B—N‘NÓ#¤w¨v£Ó6ØÐDÓDà�L‰L×#Ñ#Ü—‘×!Ñ!Ø>Àtð "ð ôð
 ×"Ñ" 4Ó(€DÜ
‡}‚}�\ 4×(Ñ(Ü�_Š_˜T°DÒ9¸YØ× Ñ  Ô.÷ :ô 
šª¸qÑAÓ	B€BØ‡I�I�< T°€IÑ7ä�[Š[ÐDÀdÓK€FÜÚ	šªÐ8Ú$ñ€Hô ×Ò˜&Õ+÷ :Õ9ús   Â>D?Ä?
Ec                ó0  • U nUS:X  a,  UR                  [        R                  R                  SS95        UR	                  U 5      n [
        R                  " USU 5        SS/n[
        R                  " SXS9nUR                  R                  5       U:X  d   eg )Nrs  úNot Implementedr‚  r§  rÙ   rÚ   râ   )
rä  r  r†  r‡  r}  r   r~  r$   r¹   r–  )rV   r  rå   ré  Úcolsr  s         r.   Útest_read_table_columnsr  0	  s‰   € ð €IØÐ$Ó$Ø×ÑœFŸK™K×-Ñ-Ð5FÐ-ÐGÔHà×"Ñ" 4Ó(€DÜ‡J‚Jˆ{˜L¨$Ô/à�ˆ:€Dä×Ò ¨dÑA€FØ�>‰>× Ñ Ó" dÓ*Ð*Ñ*r-   c                óF  • U nUS:X  a,  UR                  [        R                  R                  SS95        UR	                  U 5      n [
        R                  " USU 5        [
        R                  " SU SS9nUR                  R                  S/:X  d   e[
        R                  " SU SS/S9nUR                  R                  SS/:X  d   e[
        R                  " SU SS/S	S
/S9nUR                  R                  SS/:X  d   eUR                  R                  5       S	S
/:X  d   eg )Nrs  r  r‚  r§  r­   rÏ  rÙ   rÚ   rÛ   rÜ   )r¡  r¹   )rä  r  r†  r‡  r}  r   r~  r$   r­   rÃ  r¹   r–  )rV   r  rå   ré  r  s        r.   Útest_read_table_index_colr  @	  s  € ð €IØÐ$Ó$Ø×ÑœFŸK™K×-Ñ-Ð5FÐ-ÐGÔHà×"Ñ" 4Ó(€DÜ‡J‚Jˆ{˜L¨$Ô/ä×Ò ¨d¸gÑF€FØ�<‰<×Ñ ' Ó*Ð*Ð*ä×Ò ¨d¸sÀC¸jÑI€FØ�<‰<×Ñ # s Ó+Ð+Ð+ä×ÒØ�d s¨C j¸3À¸*ñ€Fð �<‰<×Ñ # s Ó+Ð+Ð+Ø�>‰>× Ñ Ó" s¨C jÓ0Ð0Ñ0r-   c                óš  • U S:X  a,  UR                  [        R                  R                  SS95        UR	                  U 5      n [
        R                  " SU 5      n[
        R                  " SU 5      n[        R                  " X#5        [
        R                  " SU 5      n[
        R                  " SU 5      n[        R                  " X#5        g )Nru  rã  r‚  rº  r7   )rä  r  r†  r‡  r}  r   r#   r½  r·   ró  r$   )rV   r  Úiris_frame1Úiris_frame2s       r.   Útest_read_sql_delegater"  W	  s§   € àÐ$Ó$Ø×ÑÜ�K‰K×ÑØTð ð ô	
ð ×"Ñ" 4Ó(€DÜ×$Ò$Ð%9¸4Ó@€KÜ—,’,Ð3°TÓ:€KÜ×Ò˜+Ô3ä×$Ò$ V¨TÓ2€KÜ—,’,˜v tÓ,€KÜ×Ò˜+Õ3r-   c                óx  • U nSSK Jn  SSKJn  U" S5      U" S5      /nU H‚  n[	        X5      (       aE  UR                  5        nUR                  5          UR                  U5        S S S 5        S S S 5        MX  UR                  5          UR                  U5        S S S 5        M„     [        R                  " S 5         [        R                  " SU5        [        R                  " SU5        S S S 5        g ! , (       d  f       N”= f! , (       d  f       Mô  = f! , (       d  f       GM  = f! , (       d  f       g = f)Nr   rv   r—   z,CREATE TABLE invalid (x INTEGER, y UNKNOWN);z0CREATE TABLE other_table (x INTEGER, y INTEGER);Úother_tablezSELECT * FROM other_table)r>   rw   r™   r˜   rx   rš   rj   rM   r·   r™  r   r$   r#   )rY  rV   rw   r˜   Ú
query_listrÓ  s         r.   Útest_not_reflect_all_tablesr&  j	  sã   € Ø€DÝÝ(ñ 	Ð;Ó<ÙÐ?Ó@ð€Jó
 ˆÜ�d×#Ñ#Ø—‘” 4Ø—Z‘Z•\Ø—L‘L Ô'÷ "÷  ‘ð —‘•Ø—‘˜UÔ#÷ ‘ñ ô 
×	#Ò	# DÕ	)Ü×Ò˜=¨$Ô/Ü×ÒÐ6¸Ô=÷ 
*Ð	)÷ "•\ú÷  –ú÷ —ú÷ 
*Õ	)ús<   ÁDÁC5Á'DÂ	DÂ=/D+Ã5
DÃ?DÄ
D	Ä
D(	Ä+
D9c                ó  • U nUS:X  d  SU;   a,  UR                  [        R                  R                  SS95        UR	                  U 5      n [
        R                  " [        SS9   [        R                  " U 5       nUR                  SS5        S S S 5        S S S 5        [
        R                  " S 5         UR                  S	U S
9  S S S 5        g ! , (       d  f       NF= f! , (       d  f       NO= f! , (       d  f       g = f)Nrs  r{   zDoes not raise warningr‚  z¶The provided table name 'TABLE1' is not found exactly as such in the database after writing the table, possibly due to case sensitivity issues. Consider using lower case table names.rµ  ÚTABLE1r�  ÚCaseSensitiver§  )rä  r  r†  r‡  r}  r·   r™  r˜  r   r   Úcheck_case_sensitiver~  )rV   r  rå   ré  r  s        r.   Ú(test_warning_case_insensitive_table_namer+  ƒ	  sÑ   € à€IØÐ$Ó$¨°)Ó(;Ø×ÑœFŸK™K×-Ñ-Ð5MÐ-ÐNÔOà×"Ñ" 4Ó(€Dä	×	#Ò	#ÜðJó
ô �_Š_˜TÔ" bØ×#Ñ# H¨bÔ1÷ #÷
ô 
×	#Ò	# DÕ	)Ø×Ñ °TÐÑ:÷ 
*Ð	)÷	 #Õ"ú÷
õ 
ú÷ 
*Õ	)ús0   Á%C Á<CÂC Â5C1Ã
C	ÃC Ã 
C.Ã1
C?c                óT  • UR                  U 5      n SSKJn  [        S[	        SS/SS905      n[
        R                  " U 5       n[
        R                  " SXCS	9n[        UR                  R                  S   R                  U5      (       d   e S S S 5        g ! , (       d  f       g = f)
Nr   )Ú	TIMESTAMPr   ú2014-12-12 01:54ú2014-12-11 02:54T©ÚutcÚ	test_type©r»   )r}  r>   r-  r   r   r   r   ÚSQLTablerx   rü   r÷   r³   )rV   r  r-  rÖ   r  rü   s         r.   Útest_sqlalchemy_type_mappingr5  ›	  s‰   € à×"Ñ" 4Ó(€DÝ$ô 
Ø	”Ð0Ð2DÐEÈ4ÑPÐQó
€Bô 
�Š˜Ô	 "Ü—’˜[¨"Ñ7ˆä˜%Ÿ+™+Ÿ-™-¨Ñ/×4Ñ4°i×@Ñ@Ð@Ñ@÷ 
×	Ö	ús   ÁA
BÂ
B'zinteger, expected)Úint8ÚSMALLINT)ÚInt8r7  )Úuint8r7  )ÚUInt8r7  )Úint16r7  )ÚInt16r7  )Úuint16rë  )ÚUInt16rë  )rž  rë  )ÚInt32rë  )Úuint32ÚBIGINT)ÚUInt32rA  )rÓ   rA  )ÚInt64rA  rÓ   rA  rë  c                óB  • UR                  U 5      n [        SS/S/US9n[        R                  " U 5       n[        R                  " SXTS9n[        UR                  R                  R                  R                  5      nS S S 5        WU:X  d   eg ! , (       d  f       N= f)Nr   rH   rŽ  ©r¹   r@   r2  r3  )
r}  r   r   r   r4  rÁ   rü   r÷   rŽ  r³   )rV   r  rå  r  rÖ   r  rü   r  s           r.   Útest_sqlalchemy_integer_mappingrF  ª	  s€   € ð. ×"Ñ" 4Ó(€DÜ	�A�q�6 C 5°Ñ	8€BÜ	�Š˜Ô	 "Ü—’˜[¨"Ñ7ˆä�U—[‘[—]‘]—_‘_×)Ñ)Ó*ˆ÷ 
ð �XÓÐÑ÷	 
Õ	ús   ¶A	BÂ
Brå  Úuint64ÚUInt64c                ó2  • UR                  U 5      n [        SS/S/US9n[        R                  " U 5       n[        R
                  " [        SS9   [        R                  " SXCS9  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)	Nr   rH   rŽ  rE  z1Unsigned 64 bit integer datatype is not supportedrµ  r2  r3  )r}  r   r   r   r  r¶  r·  r4  )rV   r  rå  rÖ   r  s        r.   Ú(test_sqlalchemy_integer_overload_mappingrJ  Ê	  sy   € ð ×"Ñ" 4Ó(€Dä	�A�q�6 C 5°Ñ	8€BÜ	�Š˜Ô	 "Ü�]Š]ÜÐQó
ô �LŠL˜ bÒ3÷
÷ 
Ð	÷
õ 
ú÷ 
Õ	ús#   ¶BÁA7Á&BÁ7
B	ÂBÂ
Bc                óò  • [         R                  " S5        UR                  U 5      n [        R                  " 5        nSU-   nSnUR                  XTSSS9  [        R                  " XT5      n[        R                  " XT5      nSn[        R                  " X„5      n	S S S 5        [        R                  " UW5        [        R                  " UW5        [        R                  " UW	5        g ! , (       d  f       NT= f)Nr>   rS  r7   r”  Fr{  rº  )r  r  r}  r·   rT  r~  r   r½  r$   r#   ró  )
rV   r  rå   r¤   Údb_urirü   rd  rç   rÓ  rm  s
             r.   Útest_database_uri_stringrM  ×	  sÅ   € ä
×Ò˜Ô%Ø×"Ñ" 4Ó(€Dô
 
�ŠÔ	˜dØ Ñ$ˆØˆØ×Ñ ¸YÈeÐÑTÜ—l’l 5Ó1ˆÜ×(Ò(¨Ó7ˆØ$ˆÜ×(Ò(¨Ó7ˆ÷ 
ô ×Ò˜+ {Ô3Ü×Ò˜+ {Ô3Ü×Ò˜+ {Õ3÷ 
Õ	ús   ½AC(Ã(
C6Úpg8000c                óê   • [         R                  " S5        UR                  U 5      n Sn[         R                  " [        SS9   [
        R                  " SU5        S S S 5        g ! , (       d  f       g = f)Nr>   z)postgresql+pg8000://user:pass@host/dbnamerN  rµ  zselect * from table)r  r  r}  r¶  ÚImportErrorr   r½  )rV   r  rL  s      r.   Ú(test_pg8000_sqlalchemy_passthrough_errorrQ  ì	  sR   € ô ×Ò˜Ô%Ø×"Ñ" 4Ó(€Dð 9€FÜ	�Š”{¨(Ó	3Ü�ŠÐ*¨FÔ3÷ 
4×	3Ö	3ús   ÁA$Á$
A2c                óÀ   • U nUR                  U 5      n SSKJn  SU;   a	  U" S5      nOU" S5      n[        R                  " X@SS0S9n[        US	   5      nUS1:X  d   eg )
Nr   rv   r4  z%select * from iris where "Name"=:namez#select * from iris where name=:namer¤   zIris-versicolorrÌ  r<   )r}  r>   rw   r   r½  Úset)rV   r  ré  rw   Ú	name_textÚiris_dfÚ	all_namess          r.   Útest_query_by_text_objrW  ø	  sp   € ð €IØ×"Ñ" 4Ó(€DÝà�YÓÙÐ@ÓA‰	áÐ>Ó?ˆ	Ü�lŠl˜9°FÐ<MÐ3NÑO€GÜ�G˜F‘OÓ$€IØÐ*Ð+Ó+Ð+Ñ+r-   c                ó  • UR                  U 5      n SSKJnJn  [	        5       nU" U5      R                  UR                  R                  U" S5      :H  5      n[        R                  " XPSS0S9n[        US   5      nUS1:X  d   eg )Nr   )Ú	bindparamrÈ  r¤   r¬   rÌ  r<   )r}  r>   rY  rÈ  rB   Úwherer÷   r<   r   r½  rS  )rV   r  rY  rÈ  r7   Úname_selectrU  rV  s           r.   Útest_query_by_select_objr\  
  sz   € à×"Ñ" 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                ó.  • U nUS:X  a,  UR                  [        R                  R                  SS95        UR	                  U 5      n [        / SQ/ SQS.5      nUR                  SU SS	9  [        R                  " SU 5      n[        R                  " XC5        g )
Nrs  r  r‚  r  ©rJ   rK   r¯   )rÙ   z%_variationÚtest_column_percentageFrò  )rä  r  r†  r‡  r}  r   r~  r   r$   r·   ró  )rV   r  ré  rÖ   r
  s        r.   Útest_column_with_percentager`  
  s†   € ð €IØÐ$Ó$Ø×ÑœFŸK™K×-Ñ-Ð5FÐ-ÐGÔHà×"Ñ" 4Ó(€DÜ	š²9Ñ=Ó	>€BØ‡I�IÐ+°¸U€IÑCä
×
Ò
Ð5°tÓ
<€Cä×Ò˜#Õ"r-   c           	     óÞ  • [         R                  " 5        n[        [        R                  " U5      5       n[
        R                  " U SUSS9S:X  d   e S S S 5        [        [        R                  " U5      5       n[
        R                  " SU5      nS S S 5        S S S 5        [         R                  " U W5        g ! , (       d  f       Nm= f! , (       d  f       N?= f! , (       d  f       NH= f)NÚtest_frame3_legacyFrq  rK   z!SELECT * FROM test_frame3_legacy;)	r·   rT  r   ry   rš   r   r~  r#   ró  )rç   r¤   rV   r  s       r.   Útest_sql_open_closerc  (
  s¦   € ô 
�ŠÔ	˜dÜ”W—_’_ TÓ*Ô+¨tÜ—:’:˜kÐ+?ÀÈUÑSÐWXÓXÐXÑX÷ ,ô ”W—_’_ TÓ*Ô+¨tÜ×'Ò'Ð(KÈTÓRˆF÷ ,÷	 
ô ×Ò˜+ vÕ.÷ ,Õ+ú÷ ,Õ+ú÷	 
Õ	ús:   – C¶B<Á'CÁ<CÂCÂ<
C
	ÃCÃ
C	ÃCÃ
C,c                 ó    • Sn Sn[         R                  " [        US9   [        R                  " SU 5        S S S 5        g ! , (       d  f       g = f)Nzmysql://root@localhost/pandasz-Using URI string without sqlalchemy installedrµ  rº  )r  r¶  rP  r   r½  )rV   r›  s     r.   Útest_con_string_import_errorre  6
  s5   € à*€DØ
9€CÜ	�Š”{¨#Ó	.Ü�ŠÐ)¨4Ô0÷ 
/×	.Ö	.ús	   ž?¿
Ac                 ó  •  " S S5      n [         R                  " U " S5      5       n[        R                  " [        5         [
        R                  " SU5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nc                  ó*   • \ rS rSrSS jrS rS rSrg)Úhtest_con_unknown_dbapi2_class_does_not_error_without_sql_alchemy_installed.<locals>.MockSqliteConnectioni@
  c                ó:   • [         R                  " U0 UD6U l        g r  )ry   rz   rV   )ÚselfÚargsÚkwargss      r.   Ú__init__Úqtest_con_unknown_dbapi2_class_does_not_error_without_sql_alchemy_installed.<locals>.MockSqliteConnection.__init__A
  s   € Ü×*Ò*¨DÐ;°FÑ;ˆD�Ir-   c                ó.   • [        U R                  U5      $ r  )ÚgetattrrV   )rj  r¤   s     r.   Ú__getattr__Úttest_con_unknown_dbapi2_class_does_not_error_without_sql_alchemy_installed.<locals>.MockSqliteConnection.__getattr__D
  s   € Ü˜4Ÿ9™9 dÓ+Ð+r-   c                ó8   • U R                   R                  5         g r  )rV   rT   )rj  s    r.   rT   Úntest_con_unknown_dbapi2_class_does_not_error_without_sql_alchemy_installed.<locals>.MockSqliteConnection.closeG
  s   € Ø�I‰I�O‰OÕr-   )rV   N)ÚreturnÚNone)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__rm  rq  rT   Ú__static_attributes__r,   r-   r.   ÚMockSqliteConnectionrh  @
  s   † ô	<ò	,õ	r-   r|  ro  zSELECT 1)rp  r   r·   r™  r˜  r   r½  )r|  rV   s     r.   ÚJtest_con_unknown_dbapi2_class_does_not_error_without_sql_alchemy_installedr}  >
  s]   € ÷ñ ô 
×	Ò	Ñ0°Ó<Ô	=ÀÜ×'Ò'¬Õ4Ü�LŠL˜ TÔ*÷ 5÷ 
>Ð	=ß4Õ4ú÷ 
>Õ	=ús#   §A<ÁA+ÁA<Á+
A9	Á5A<Á<
B
c                ó<  • U n[         R                  " SU5      n[         R                  " SU5      n[        R                  " X#5        Sn[
        R                  " [         R                  US9   [         R                  " SU5        S S S 5        g ! , (       d  f       g = f)Nrº  z9Execution failed on sql 'iris': near "iris": syntax errorrµ  r7   )r   r#   r½  r·   ró  r  r¶  ÚDatabaseError)ru  rV   r   r!  r›  s        r.   Útest_sqlite_read_sql_delegater€  O
  sl   € Ø€DÜ×$Ò$Ð%9¸4Ó@€KÜ—,’,Ð3°TÓ:€KÜ×Ò˜+Ô3à
G€CÜ	�Š”s×(Ñ(°Ó	4Ü�Š�V˜TÔ"÷ 
5×	4Ö	4ús   Á,BÂ
Bc                óB   • [         R                  " U S5      nSU;   d   eg )Nrz  rà  )r   râ  )rå   r%  s     r.   Útest_get_schema2r‚  Z
  s    € ä—’ ¨VÓ4€JØ�zÓ!Ð!Ñ!r-   c                ó^  • U n[        S[        SS/SS905      n[        R                  " U5      n[        R                  " SX2S9nUR                  5       nUR                  S5       HD  nUR                  5       S	   R                  S
5      S:X  d  M+  UR                  5       S   S:X  a  MD   e   g )Nr   r.  r/  Tr0  r2  r3  Ú
r   r  rH   r-  )r   r   r   r    ÚSQLiteTableÚ
sql_schemaÚsplitÚstrip)rs  rV   rÖ   r  rü   rû   Úcols          r.   Útest_sqlite_type_mappingrŠ  `
  sŸ   € à€DÜ	Ø	”Ð0Ð2DÐEÈ4ÑPÐQó
€Bô 
×	Ò	˜DÓ	!€BÜ�OŠO˜K¨Ñ6€EØ×ÑÓ€FØ�|‰|˜DÖ!ˆØ�9‰9‹;�q‰>×Ñ Ó$¨Õ.Ø—9‘9“;˜q‘> [Õ0Ð0Ð0ò "r-   c                óÞ  • U S:X  a  [         R                  " S5        UR                  U 5      n SSKJn  [        / SQ/ SQS.5      n[        R                  " U SS	9 nUR                  US
5      S:X  d   e S S S 5        U" U 5      nUR                  S
5      (       d   e[        R                  " U SS	9 nUR                  S
5        S S S 5        g ! , (       d  f       N^= f! , (       d  f       g = f)NrU  ú#sqlite_str has no inspection systemr   rï   ©ç      ð?ç       @ç      @ç      @©r‘  r�  r�  rŽ  ©ÚoneÚtwoTr¥  rº  rK   )r  Úskipr}  r>   rð   r   r   r   r~  r©  r  ©rV   r  rð   rº  r«  Úinsps         r.   Útest_create_tabler™  r
  sÅ   € àˆ|ÓÜ�ŠÐ9Ô:à×"Ñ" 4Ó(€Då"äÒ#7Ò@TÑUÓV€JÜ	�Š˜°Ò	5¸Ø×Ñ 
¨LÓ9¸QÓ>Ð>Ñ>÷ 
6ñ �4‹=€DØ�>‰>˜,×'Ñ'Ð'Ð'ô 
�Š˜°Ò	5¸Ø×Ñ˜\Ô*÷ 
6Ð	5÷ 
6Õ	5ú÷ 
6Õ	5ús   ÁCÂ2CÃ
CÃ
C,c                óž  • U S:X  a  [         R                  " S5        UR                  U 5      n SSKJn  [        / SQ/ SQS.5      n[        R                  " U 5       nUR                  5          UR                  US5      S	:X  d   e S S S 5        U" U 5      nUR                  S5      (       d   eUR                  5          UR                  S5        S S S 5         UR                  5         UR                  S5      (       a   e S S S 5        g ! , (       d  f       N‹= f! , (       d  f       NR= f! [         a     NPf = f! , (       d  f       g = f)
NrU  rŒ  r   rï   r�  r’  r“  rº  rK   )r  r–  r}  r>   rð   r   r   r   rS  r~  r©  r  Úclear_cacheÚAttributeErrorr—  s         r.   Útest_drop_tabler�  ‡
  s  € àˆ|ÓÜ�ŠÐ9Ô:à×"Ñ" 4Ó(€Då"äÒ#7Ò@TÑUÓV€JÜ	�Š˜Ô	 )Ø×&Ñ&Õ(Ø×#Ñ# J°Ó=ÀÓBÐBÑB÷ )ñ �t‹}ˆØ�~‰~˜l×+Ñ+Ð+Ð+à×&Ñ&Õ(Ø× Ñ  Ô.÷ )ð	Ø×ÑÔð —>‘> ,×/Ñ/Ð/Ð/Ð/÷ 
Ð	ß(Õ(ú÷ )Õ(ûô ó 	Ùð	ú÷ 
Õ	ús`   ÁD>Á-DÂ8D>Â?DÃD>ÃD.Ã*D>Ä
D	ÄD>Ä
D+	Ä'D>Ä.
D;Ä8D>Ä:D;Ä;D>Ä>
Ec                óº  • U S:X  a  [         R                  " S5        U nUR                  U 5      n [        U 5      nUR	                  5          UR                  US5      S:X  d   eUR                  S5      nS S S 5        SU;   a  WR                  SS0S	9nWR                  SS
S9  S UR                  l
        [        R                  " XR5        g ! , (       d  f       N]= f)NrU  rŒ  r|  rK   r~  r{   r  r€  râ   Tr�  )r  r–  r}  r"   rS  r~  rT  rƒ  r„  r­   r¤   r·   ró  r…  s         r.   Útest_roundtriprŸ  ¡
  sÌ   € àˆ|ÓÜ�ŠÐ9Ô:à€IØ×"Ñ" 4Ó(€DÜ! $Ó'€IØ	×	"Ñ	"Õ	$Ø×Ñ Ð-CÓDÈÓIÐIÐIØ×%Ñ%Ð&JÓKˆ÷ 
%ð �ÓØ—‘Ð(;¸YÐ'G�ÐHˆØ
×Ñ�Y¨ÐÑ-ð €F‡L�LÔä×Ò˜&Õ.÷ 
%Õ	$ús   Á*CÃ
Cc                óL  • UR                  U 5      n [        U 5       nUR                  5          UR                  S5      nUR	                  5       nUR                  5         S S S 5        S S S 5        [        W5      / SQ:X  d   eg ! , (       d  f       N*= f! , (       d  f       N3= frŠ  )r}  r"   rS  rM   rÀ   rT   r$  )rV   r  r«  rŒ  r\   s        r.   Útest_execute_sqlr¡  ·
  s„   € à×"Ñ" 4Ó(€DÜ	˜4Ô	  IØ×&Ñ&Õ(Ø$×,Ñ,Ð-AÓBˆLØ×'Ñ'Ó)ˆCØ×ÑÔ ÷ )÷ 
!ô
 �‹9Ò;Ó;Ð;Ñ;÷	 )Õ(ú÷ 
!Õ	 ús"   �B®2BÁ BÂ
B	ÂBÂ
B#c                óf   • UR                  U 5      n [        R                  " SU S9n[        U5        g )Nr7   r}  )r}  r   r$   r½   r¾  s      r.   Útest_sqlalchemy_read_tabler£  Â
  s,   € à×"Ñ" 4Ó(€DÜ×#Ò# F°Ñ5€JÜ�ZÕ r-   c                ó®   • UR                  U 5      n [        R                  " SU SS/S9n[        R                  " UR
                  [        SS/5      5        g )Nr7   r8   )ro   r¹   ÚSepalLength__1)r}  r   r$   r·   Úassert_index_equalr¹   r   r¾  s      r.   Ú"test_sqlalchemy_read_table_columnsr§  É
  sQ   € à×"Ñ" 4Ó(€DÜ×#Ò#Ø�D =°-Ð"@ñ€Jô ×Ò˜*×,Ñ,¬e°]ÐDTÐ4UÓ.VÕWr-   c                óº   • UR                  U 5      n Sn[        R                  " [        US9   [        R
                  " SU S9  S S S 5        g ! , (       d  f       g = f)Nz!Table this_doesnt_exist not foundrµ  Úthis_doesnt_existr}  )r}  r  r¶  r·  r   r$   )rV   r  r›  s      r.   Útest_read_table_absent_raisesrª  Ò
  sB   € à×"Ñ" 4Ó(€DØ
-€CÜ	�Š”z¨Ó	-Ü×ÒÐ.°DÒ9÷ 
.×	-Ö	-ús   ­AÁ
Ac                ód  • U nUS:X  a  [         R                  " S5        O8SU;   d  SU;   a,  UR                  [         R                  R	                  SS95        UR                  U 5      n [        R                  " SU 5      n[        UR                  R                  R                  [        R                  5      (       d   e[        UR                  R                  R                  [        R                  5      (       d   e[        UR                   R                  R                  [        R"                  5      (       d   e[        UR$                  R                  R                  [        R                  5      (       d   e[        UR&                  R                  R                  [(        5      (       d   eg )NrU  ú.types tables not created in sqlite_str fixturer'   r&   z#boolean dtype not inferred properlyr‚  r‚   )r  r–  rä  r†  r‡  r}  r   r$   r´   r‡   r@   r³   rµ   r¶   rˆ   rå  r‰   ræ  rŠ   r‹   rç  rè  s       r.   Ú'test_sqlalchemy_default_type_conversionr­  Ú
  s6  € à€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Ð7Ü�b—j‘j×&Ñ&×+Ñ+¬R¯X©X×6Ñ6Ð6Ð6ô �b×'Ñ'×-Ñ-×2Ñ2´B·K±K×@Ñ@Ð@Ð@ä�b×(Ñ(×.Ñ.×3Ñ3´V×<Ñ<Ð<Ñ<r-   c                óÆ   • UR                  U 5      n [        SS/0S9nUR                  SU SS9S:X  d   e[        R                  " SU 5      n[
        R                  " X#5        g )NÚi64l            )rÊ   Útest_bigintFrò  rH   r  ©rV   r  rÖ   r  s       r.   r°  r°  ñ
  sb   € ð ×"Ñ" 4Ó(€DÜ	˜  Ð(Ñ	)€BØ�9‰9˜-¨T¸ˆ9Ð?À1ÓDÐDÐDÜ×Ò ¨tÓ4€Fä×Ò˜"Õ%r-   c                ót  • U nUS:X  a  [         R                  " S5        O2SU;   a,  UR                  [         R                  R	                  SS95        UR                  U 5      n [        R                  " SU 5      n[        UR                  R                  R                  [        R                  5      (       d   eg )NrU  r¬  r&   z"sqlite does not read date properlyr‚  r‚   )r  r–  rä  r†  r‡  r}  r   r$   r´   r„   r@   r³   rµ   r•  rè  s       r.   Útest_default_date_loadr³  ü
  s“   € à€IØ�LÓ Ü�ŠÐDÕEØ	�YÓ	Ø×ÑÜ�K‰K×ÑÐ%IÐÐJô	
ð ×"Ñ" 4Ó(€DÜ	×	Ò	˜G TÓ	*€Bä�b—j‘j×&Ñ&×+Ñ+¬R¯]©]×;Ñ;Ð;Ñ;r-   r‘  rž   c                ó”   • UR                  U 5      n [        U 5      n[        SXS9nUR                  n[        R
                  " XS5        g )Núselect * from datetzr�  )r}  r§   r#   rž   r·   r¸   )rV   r  r‘  r  rÖ   r‰  s         r.   Ú!test_datetime_with_timezone_queryr¶    sF   € ð ×"Ñ" 4Ó(€DÜ.¨tÓ4€Hô 
Ð.°Ñ	N€BØ
×
Ñ
€CÜ×Ò˜3Õ)r-   c           
     ó¸   • UR                  U 5      n [        U 5      n[        [        [	        SU SS95      SS9nUR
                  n[        R                  " XB5        g )Nrµ  rH   rÄ  Tr÷  )r}  r§   r   r$  r#   rž   r·   r¸   )rV   r  r  rÖ   r‰  s        r.   Ú+test_datetime_with_timezone_query_chunksizer¸    sV   € à×"Ñ" 4Ó(€DÜ.¨tÓ4€Hä	ÜŒ^Ð2°DÀAÑFÓGØñ
€Bð ×
Ñ
€CÜ×Ò˜3Õ)r-   c                ó²   • UR                  U 5      n [        U 5      n[        R                  " SU 5      n[        R
                  " X2R                  5       5        g )Nr�   )r}  r§   r   r$   r·   ró  rw  )rV   r  r  r  s       r.   Ú!test_datetime_with_timezone_tablerº  (  sE   € à×"Ñ" 4Ó(€DÜ.¨tÓ4€HÜ×Ò ¨$Ó/€FÜ×Ò˜&×"3Ñ"3Ó"5Õ6r-   c           	     ó@  • U nUR                  U 5      n [        S[        SSSS905      nUR                  SU SS9S:X  d   eS	U;   a"  US   R                  R                  S
5      US'   O!US   R                  R                  S 5      US'   [        R                  " SU 5      n[        R                  " XC5        [        R                  " SU 5      nSU;   a5  [        UR                  S   [        5      (       d   e[        US   5      US'   [        R                  " XC5        g )NrÙ   ú2013-01-01 09:00:00rJ   ú
US/Pacific©Úperiodsr¢   Útest_datetime_tzFrò  r(   r    zSELECT * FROM test_datetime_tzr&   ©r   rÙ   )r}  r   r   r~  ÚdtÚ
tz_convertÚtz_localizer   r$   r·   ró  r#   rx   ÚlocrÁ   r   )rV   r  ré  r  r  s        r.   Ú%test_datetime_with_timezone_roundtriprÆ  0  s  € à€IØ×"Ñ" 4Ó(€Dô
 Ø	ŒjÐ.¸¸lÑKÐLó€Hð �?‰?Ð 2¸ÀEˆ?ÐJÈaÓOÐOÐOà�yÓ à  ™×(Ñ(×3Ñ3°EÓ:ˆ�Šð ! ™×(Ñ(×4Ñ4°TÓ:ˆ�‰ä×ÒÐ 2°DÓ9€FÜ×Ò˜&Ô+ä×ÒÐ @À$ÓG€FØ�9Óä˜&Ÿ*™* VÑ,¬c×2Ñ2Ð2Ð2Ü! &¨¡+Ó.ˆˆs‰Ü×Ò˜&Õ+r-   c                ó  • UR                  U 5      n [        S[        SSS5      0S/S9nUR                  SU SS9S:X  d   e[        R
                  " SU 5      n[        [        R                  /S/S	9n[        R                  " X45        g )
Nr   i'  rH   r   rq  Útest_datetime_obbFrò  râ   )
r}  r   r   r~  r   r$   r•  ÚNaTr·   ró  )rV   r  rÊ   r  r  s        r.   Útest_out_of_bounds_datetimerÊ  O  sƒ   € ð ×"Ñ" 4Ó(€DÜ�fœh t¨Q°Ó2Ð3¸A¸3Ñ?€DØ�;‰;Ð/°TÀˆ;ÐGÈ1ÓLÐLÐLÜ×ÒÐ 3°TÓ:€FÜœ"Ÿ&™&˜¨F¨8Ñ4€HÜ×Ò˜&Õ+r-   c                ó  • UR                  U 5      n [        SSSS9R                  S 5      n[        S[	        S5      0US9nUR                  SU SS	9S:X  d   e[        R                  " SU SS
9n[        R                  " XCSS9  g )Nz
2018-01-01r¯   Ú6h©r¿  ÚfreqÚnumsrq  Ú	foo_tableÚ	info_date)r¤   ro   r¸  rÏ  F)Úcheck_names)
r}  r   Ú
_with_freqr   r¹  r~  r   r$   r·   ró  )rV   r  Údatesr  r  s        r.   Ú"test_naive_datetimeindex_roundtriprÕ  Z  s„   € ð ×"Ñ" 4Ó(€DÜ�|¨Q°TÑ:×EÑEÀdÓK€EÜ˜&¤%¨£(Ð+°5Ñ9€HØ�?‰? °À;ˆ?ÐOÐSTÓTÐTÐTÜ×Ò ¨T¸[ÑI€Fä×Ò˜&¸Ó>r-   c                ó
  • U nUR                  U 5      n [        R                  " SU 5      nSU;   a  [        O[        R
                  n[        UR                  R                  R                  U5      (       d   e[        R                  " SU S/S9n[        UR                  R                  R                  [        R
                  5      (       d   e[        R                  " SU SS0S9n[        UR                  R                  R                  [        R
                  5      (       d   e[        R                  " SU SSS00S9n[        UR                  R                  R                  [        R
                  5      (       d   e[        R                  " SU S/S9n[        UR                  R                  R                  [        R
                  5      (       d   e[        R                  " SU SS0S9n[        UR                  R                  R                  [        R
                  5      (       d   e[        R                  " SU SS	S00S9n[        UR                  R                  R                  [        R
                  5      (       d   eg )
Nr‚   r&   r„   r�  r’  Úformatr…   rx  Úunit)r}  r   r$   rç  rµ   r•  r´   r„   r@   r³   r…   )rV   r  ré  rÖ   Úexpected_types        r.   Útest_date_parsingrÚ  g  sì  € ð €IØ×"Ñ" 4Ó(€DÜ	×	Ò	˜G TÓ	*€BØ&¨)Ó3•F¼¿¹€MÜ�b—j‘j×&Ñ&×+Ñ+¨]×;Ñ;Ð;Ð;ä	×	Ò	˜G T¸	°{Ñ	C€BÜ�b—j‘j×&Ñ&×+Ñ+¬R¯]©]×;Ñ;Ð;Ð;ä	×	Ò	˜G T¸	ÐCVÐ7WÑ	X€BÜ�b—j‘j×&Ñ&×+Ñ+¬R¯]©]×;Ñ;Ð;Ð;ä	×	Ò	ØØØ Ð+>Ð ?Ð@ñ
€Bô
 �b—j‘j×&Ñ&×+Ñ+¬R¯]©]×;Ñ;Ð;Ð;ä	×	Ò	˜G T¸°~Ñ	F€BÜ�b—m‘m×)Ñ)×.Ñ.´·±×>Ñ>Ð>Ð>ä	×	Ò	˜G T¸ÀcÐ7JÑ	K€BÜ�b—m‘m×)Ñ)×.Ñ.´·±×>Ñ>Ð>Ð>ä	×	Ò	˜G T¸ÀvÈsÀmÐ7TÑ	U€BÜ�b—m‘m×)Ñ)×.Ñ.´·±×>Ñ>Ð>Ñ>r-   c                óB  • U nUR                  U 5      n [        [        SSS9[        R                  " S5      S.5      nUR                  SU S9S:X  d   e[        R                  " SU 5      nUR                  SS	S
9n[        R                  " XC5        [        R                  " SU 5      nUR                  SS	S
9nSU;   aL  [        UR                  S   [        5      (       d   e[        US   5      US'   [        R                  " XC5        g [        R                  " XC5        g )Nr¼  rJ   ©r¿  r�  rÔ  Útest_datetimer§  r­   rH   )ÚaxisúSELECT * FROM test_datetimer&   rÁ  rÙ   )r}  r   r   rµ   rv  r~  r   r$   rk   r·   ró  r#   rx   rÅ  rÁ   r   ©rV   r  ré  rÖ   r  s        r.   rÝ  rÝ  ‡  s  € à€IØ×"Ñ" 4Ó(€DÜ	ÜÐ.¸Ñ:ÄÇÂÈ3ÃÑPó
€Bð �9‰9˜/¨tˆ9Ð4¸Ó9Ð9Ð9ô ×Ò °Ó6€FØ�[‰[˜ qˆ[Ð)€FÜ×Ò˜&Ô%ô ×ÒÐ =¸tÓD€FØ�[‰[˜ qˆ[Ð)€FØ�9ÓÜ˜&Ÿ*™* VÑ,¬c×2Ñ2Ð2Ð2Ü! &¨¡+Ó.ˆˆs‰Ü
×Ò˜fÕ)ä
×Ò˜fÕ)r-   c                ó<  • U nUR                  U 5      n [        [        SSS9[        R                  " S5      S.5      n[        R
                  UR                  S'   UR                  SU SS	9S:X  d   e[        R                  " SU 5      n[        R                  " XC5        [        R                  " S
U 5      nSU;   aK  [        UR                  S   [        5      (       d   e[        US   SS9US'   [        R                  " XC5        g [        R                  " XC5        g )Nr¼  rJ   rÜ  r�  rÔ  ©rH   rÙ   rÝ  Frò  rß  r&   rÁ  rÙ   rš  rt   )r}  r   r   rµ   rv  r  rÅ  r~  r   r$   r·   ró  r#   rx   rÁ   r   rà  s        r.   Útest_datetime_NaTrã     sô   € à€IØ×"Ñ" 4Ó(€DÜ	ÜÐ.¸Ñ:ÄÇÂÈ3ÃÑPó
€Bô —V‘V€B‡F�Fˆ6�NØ�9‰9˜/¨t¸5ˆ9ÐAÀQÓFÐFÐFô ×Ò °Ó6€FÜ×Ò˜&Ô%ô ×ÒÐ =¸tÓD€FØ�9ÓÜ˜&Ÿ*™* VÑ,¬c×2Ñ2Ð2Ð2Ü! &¨¡+°hÑ?ˆˆs‰Ü
×Ò˜fÕ)ä
×Ò˜fÕ)r-   c                ó  • UR                  U 5      n [        [        SSS5      [        SSS5      /S/S9nUR                  SU SS9S:X  d   e[	        SU 5      nUS   n[        US   5      n[        R                  " XE5        g )	NéÞ  rH   rI   rŽ  râ   Ú	test_dateFrò  )r}  r   r   r~  r$   r   r·   r¸   )rV   r  rÖ   r
  r  r  s         r.   Útest_datetime_daterç  ¸  s‡   € ð ×"Ñ" 4Ó(€DÜ	”D˜˜q !Ó$¤d¨4°°AÓ&6Ð7À#ÀÑ	G€BØ�9‰9˜+¨4°uˆ9Ð=ÀÓBÐBÐBÜ
˜ dÓ
+€CØ�‰X€FÜ˜2˜c™7Ó#€Hä×Ò˜6Õ,r-   c                ó¼  • U nUR                  U 5      n [        [        SSS5      [        SSS5      /S/S9nUR                  SU SS	9S
:X  d   e[	        SU 5      n[
        R                  " XT5        Un[        R                  " USUSS9S
:X  d   e[        R                  " SU5      nUR                  S 5      n[
        R                  " Xu5        [        R                  " USU SS9S
:X  d   eSU;   a?  [        R                  " SU 5      nUR                  S 5      n[
        R                  " Xu5        [        R                  " SU 5      n[
        R                  " XE5        g )Né	   r   rH   é   rŽ  râ   Ú	test_timeFrò  rI   Ú
test_time2rq  zSELECT * FROM test_time2c                ó$   • U R                  S5      $ ©Nz%H:%M:%S.%f©Ústrftime©Ú_s    r.   Ú<lambda>Ú$test_datetime_time.<locals>.<lambda>Ô  s   € ˜1Ÿ:™: mÔ4r-   Ú
test_time3r&   zSELECT * FROM test_time3c                ó$   • U R                  S5      $ rî  rï  rñ  s    r.   ró  rô  Ú  s   € ˜qŸz™z¨-Ô8r-   )
r}  r   r   r~  r$   r·   ró  r   r#   Úmap)rV   r  rs  ré  rÖ   r
  rY  Úrefs           r.   Útest_datetime_timerù  Å  s<  € ð €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Ü×Ò˜#Ô"ð !€KÜ�:Š:�b˜,¨¸5ÑAÀQÓFÐFÐFÜ
×
Ò
Ð7¸Ó
E€CØ
�&‰&Ñ4Ó
5€CÜ×Ò˜#Ô#ä�:Š:�b˜,¨°EÑ:¸aÓ?Ð?Ð?Ø�9ÓÜ× Ò Ð!;¸TÓBˆØ�f‰fÑ8Ó9ˆÜ
×Ò˜cÔ'Ü
×
Ò
˜\¨4Ó
0€CÜ×Ò˜"Õ"r-   c                ó(  • UR                  U 5      n [        S[        R                  S9n[        S[        R                  S9n[        X#S.5      nUR                  SU SS9S:X  d   e[        R                  " SU 5      n[        R                  " XESS	S
9  g )Ni  r‹  g        )Ús1ry  Útest_read_writeFrò  rH   T)Úcheck_dtypeÚcheck_exact)r}  r   rµ   rž  Úfloat32r   r~  r   r$   r·   ró  )rV   r  rû  ry  rÖ   r	  s         r.   Útest_mixed_dtype_insertr   à  s†   € ð ×"Ñ" 4Ó(€DÜ	�	¤§¡Ñ	*€BÜ	�œ2Ÿ:™:Ñ	&€BÜ	˜"Ñ'Ó	(€Bð �9‰9Ð+°¸Uˆ9ÐCÀqÓHÐHÐHÜ
×
Ò
Ð.°Ó
5€Cä×Ò˜"¨uÀ$ÓGr-   c                óJ  • UR                  U 5      n [        / SQS[        R                  S/S.5      nUR	                  SU SS9S:X  d   e[
        R                  " SU 5      n[        R                  " X25        [
        R                  " S	U 5      n[        R                  " X25        g )
Nr  r«   rØ  rÔ  Útest_nanFrò  rJ   úSELECT * FROM test_nan)
r}  r   rµ   r  r~  r   r$   r·   ró  r#   r±  s       r.   Útest_nan_numericr  ï  s�   € ð ×"Ñ" 4Ó(€DÜ	š¨#¬r¯v©v°sÐ);Ñ<Ó	=€BØ�9‰9˜*¨$°eˆ9Ð<ÀÓAÐAÐAô ×Ò 
¨DÓ1€FÜ×Ò˜&Ô%ô ×ÒÐ 8¸$Ó?€FÜ×Ò˜&Õ%r-   c                óº  • UR                  U 5      n [        / SQ[        R                  [        R                  [        R                  /S.5      nUR	                  SU SS9S:X  d   e[
        R                  " SU 5      n[        R                  " X25        US   R                  S5      US'   S US'   [
        R                  " S	U 5      n[        R                  " X25        g )
Nr  rÔ  r  Frò  rJ   rÚ   rç  r  )r}  r   rµ   r  r~  r   r$   r·   ró  rÕ   r#   r±  s       r.   Útest_nan_fullcolumnr  ÿ  s·   € ð ×"Ñ" 4Ó(€DÜ	š¬"¯&©&´"·&±&¼"¿&¹&Ð)AÑBÓ	C€BØ�9‰9˜*¨$°eˆ9Ð<ÀÓAÐAÐAô ×Ò 
¨DÓ1€FÜ×Ò˜&Ô%ð �‰g�n‰n˜XÓ&€B€s�GØ€B€s�GÜ×ÒÐ 8¸$Ó?€FÜ×Ò˜&Õ%r-   c                óh  • UR                  U 5      n [        / SQSS[        R                  /S.5      nUR	                  SU SS9S:X  d   eS UR
                  S	'   [        R                  " SU 5      n[        R                  " X25        [        R                  " S
U 5      n[        R                  " X25        g )Nr  rŽ  rñ  rÔ  r  Frò  rJ   ©rI   rÚ   r  )r}  r   rµ   r  r~  rÅ  r   r$   r·   ró  r#   r±  s       r.   Útest_nan_stringr	    sŸ   € ð ×"Ñ" 4Ó(€DÜ	š¨#¨s´B·F±FÐ);Ñ<Ó	=€BØ�9‰9˜*¨$°eˆ9Ð<ÀÓAÐAÐAð €B‡F�Fˆ6�Nô ×Ò 
¨DÓ1€FÜ×Ò˜&Ô%ô ×ÒÐ 8¸$Ó?€FÜ×Ò˜&Õ%r-   c                ó&  • SU ;   a7  UR                   R                  [        R                  R	                  SSS95        U nUR                  U 5      n [        R                  " SS// SQS/S	9nS
n[        U 5       nUR                  5          UR                  X45      S:X  d   e S S S 5        S S S 5        US;   au  [        R                  " SU S3U 5      n/ nUR                   HG  n[        R                  " SU S3U 5      n	UR                  U	R                  R                  5       5        MI     O3SSKJn
  U
" U 5      nUR%                  U5      nU Vs/ s H  oÌS   PM	     nnUS//:X  d   eg ! , (       d  f       NÏ= f! , (       d  f       NØ= fs  snf )Nr{   z)ADBC implementation does not create indexTr£  rÈ  rÊ  rÍ  rÙ   rÎ  Útest_to_sql_saves_indexrI   >   rU  rs  zASELECT * FROM sqlite_master WHERE type = 'index' AND tbl_name = 'Ú'zPRAGMA index_info(Ú)r   rï   Úcolumn_names)r„  r…  r  r†  r‡  r}  r   rÒ  r"   rS  r~  r   r#   r¤   rõ   r–  r>   rð   Úget_indexes)rV   r  ré  rÖ   Útbl_namer«  ÚixsÚix_colsÚix_nameÚix_inforð   r˜  rý  s                r.   Útest_to_sql_save_indexr  $  s„  € à�ƒ~Ø�‰×ÑÜ�K‰K×ÑØBÈ4ð ð ô	
ð
 €IØ×"Ñ" 4Ó(€DÜ	×	Ò	Ø	Ð-Ð.ºÐPSÈuñ
€Bð )€HÜ	˜4Ô	  IØ×&Ñ&Õ(Ø×#Ñ# BÓ1°QÓ6Ð6Ñ6÷ )÷ 
!ð Ð4Ó4Ü× Ò ðØ'˜j¨ð+àó
ˆð
 ˆØ—x”xˆGÜ×(Ò(Ð+=¸g¸YÀaÐ)HÈ$ÓOˆGØ�N‰N˜7Ÿ<™<×.Ñ.Ó0Ö1ò  õ 	'á�t‹}ˆà×Ñ˜xÓ(ˆÙ.1Ó2ªc¨�^Ô$©cˆÐ2à˜�u�gÓÐÑ÷+ )Õ(ú÷ 
!Õ	 üò( 3s*   Á9E=Â
E,Â#E=ÅFÅ,
E:	Å6E=Å=
Fc                ó"  • U nUR                  U 5      n SnUS:w  a  SU;  a  SSKJn  U" U5      n[        U 5       nUR	                  5        nUR                  U5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nú'CREATE TABLE test_trans (A INT, B TEXT)rs  r{   r   rv   )r}  r>   rw   r"   rS  rM   )rV   r  ré  rX   rw   r«  Útranss          r.   Útest_transactionsr  L  sy   € à€IØ×"Ñ" 4Ó(€Dà4€DØÐ$Ó$¨°yÓ)@Ý#á�D‹zˆä	˜4Ô	  IØ×&Ñ&Ô(¨EØ�M‰M˜$Ô÷ )÷ 
!Ð	 ß(Õ(ú÷ 
!Õ	 ús#   »B ÁA/ÁB Á/
A=	Á9B Â 
Bc                ó´  • U nUR                  U 5      n [        U 5       nUR                  5        nSnSU;   d  [        U[        5      (       a  UR                  U5        OSSKJn  U" U5      nUR                  U5        S S S 5         " S S[        5      nSn[        U[        5      (       a  SSKJn  U" U5      n UR                  5        nUR                  U5        U" S5      e! , (       d  f       Nm= f! , (       d  f       O= f! U a     Of = fUR                  5          UR                  S	5      n	S S S 5        O! , (       d  f       O= f[        W	5      S:X  d   eUR                  5        nUR                  U5        UR                  S	5      n
S S S 5        O! , (       d  f       O= f[        W
5      S
:X  d   e S S S 5        g ! , (       d  f       g = f)Nr  r{   r   rv   c                  ó   • \ rS rSrSrg)Ú1test_transaction_rollback.<locals>.DummyExceptionik  r,   N)rw  rx  ry  rz  r{  r,   r-   r.   ÚDummyExceptionr  k  s   † Úr-   r  z/INSERT INTO test_trans (A,B) VALUES (1, 'blah')r˜  zSELECT * FROM test_transrH   )r}  r"   rS  rx   r    rM   r>   rw   Ú	Exceptionr   rT  rª  )rV   r  ré  r«  r  rX   rw   r  Úins_sqlr
  r÷  s              r.   Útest_transaction_rollbackr   \  s€  € à€IØ×"Ñ" 4Ó(€DÜ	˜4Ô	  IØ×&Ñ&Ô(¨EØ<ˆDØ˜Ó"¤j°¼N×&KÑ&KØ—‘˜dÕ#å+á˜D“z�Ø—‘˜dÔ#÷ )ô	œYô 	ð DˆÜ�i¤×-Ñ-Ý'á˜7“mˆGð	Ø×*Ñ*Ô,°Ø—‘˜gÔ&Ù$ WÓ-Ð-÷- )Õ(ú÷( -Õ,ûð ó 	áð	úð ×&Ñ&Õ(Ø×&Ñ&Ð'AÓBˆC÷ )×(Ö(úä�3‹x˜1‹}Ðˆ}ð ×&Ñ&Ô(¨EØ�M‰M˜'Ô"Ø×'Ñ'Ð(BÓCˆD÷ )×(Ö(úô �4‹y˜A‹~Ð‰~÷G 
!×	 Ö	 ús�   ŸG	°AC&Á?<G	Â<DÃC7Ã&
C4	Ã0G	Ã7
D	ÄDÄG	ÄDÄDÄG	ÄDÄG	Ä$D?Ä6	G	Ä?
E	Å	(G	Å1#FÆ	G	Æ
F+	Æ'G	Ç	
Gc                ób  • U S:X  a,  UR                  [        R                  R                  SS95        UR	                  U 5      n SSKJn  SSKJn  Sn[        R                  " X%U S9nUR                  S S nU" U5      n[        X5      (       aD  U R                  5        nUR                  5          UR                  U5        S S S 5        S S S 5        OU R                  U5        [        R                   " XP5      n	["        R$                  " X—S	S
9  g ! , (       d  f       NT= f! , (       d  f       NK= f)NrU  z(test does not support sqlite_str fixturer‚  r   rv   r—   Útest_get_schema_create_tabler}  FrÐ  )rä  r  r†  r‡  r}  r>   rw   r™   r˜   r   râ  r²   rx   rš   rj   rM   r$   r·   ró  )
rV   r  rç   rw   r˜   r  r%  Úblank_test_dfÚnewconÚreturned_dfs
             r.   r"  r"  †  sî   € ð
 ˆ|ÓØ×ÑÜ�K‰K×ÑÐ%OÐÐPô	
ð ×"Ñ" 4Ó(€DåÝ(à
(€CÜ—’ °dÑ;€JØ×$Ñ$ R aÐ(€Má�jÓ!€JÜ�$×ÑØ�\‰\Œ^˜vØ—‘•Ø—‘˜zÔ*÷  ÷ ˆ^ð 	�‰�ZÔ Ü×$Ò$ SÓ/€KÜ×Ò˜+ÀuÓM÷  •ú÷ �^ús$   ÂD Â/DÃD Ä
D	ÄD Ä 
D.c                óJ  • U S:X  a  [         R                  " S5        UR                  U 5      n SSKJnJn  SSKJn  SS/nSS	/n[        XeS
9nUR                  SU S9S:X  d   eUR                  SU SU0S9S:X  d   eU" 5       nUR                  U S9  UR                  S   R                  S   R                  n	[        X’5      (       d   eSn
[         R                  " [         U
S9   UR                  SU S["        0S9  S S S 5        UR                  SU SU" S5      0S9S:X  d   eUR                  U S9  UR                  S   R                  S   R                  n	[        X“5      (       d   eU	R$                  S:X  d   eUR                  SXS9S:X  d   eUR                  U S9  UR                  S   R                  S   R                  nUR                  S   R                  S   R                  n[        X²5      (       d   e[        XÂ5      (       d   eg ! , (       d  f       GN= f)NrU  rŒ  r   )r~   r5   ©r4   rÙ   rÚ   ©gš™™™™™é?T©gÍÌÌÌÌÌì?Nrâ   Ú
dtype_testr§  rI   Údtype_test2©r¤   ro   r@   re   z&The type of B is not a SQLAlchemy typerµ  r˜  Údtype_test3é
   Úsingle_dtype_test)r  r–  r}  r>   r~   r5   Úsqlalchemy.schemar4   r   r~  ÚreflectÚtablesr¹   r³   rx   r¶  r·  rÁ   rË  )rV   r  r~   r5   r4   r  rÊ   rÖ   ÚmetaÚsqltyper›  ÚsqltypeaÚsqltypebs                r.   Ú
test_dtyper7  ¤  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×$Ñ$Ð$Ð$Ø
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×&Ñ&Ð&Ð&Ø�>‰>˜RÓÐÐð �9‰9Ð-°4ˆ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                óâ  • U S:X  a  [         R                  " S5        U nUR                  U 5      n SSKJnJnJnJn  SSKJ	n  [        SS /5      [        [        SSS	5      S /5      [        S	S /S
S9[        SS /5      S.n[        U5      n	Sn
U	R                  X S9S:X  d   e[        R                  " X 5      nU" 5       nUR!                  U S9  SU;   a  UOUnUR"                  U
   R$                  n['        US   R(                  U5      (       d   e['        US   R(                  U5      (       d   e['        US   R(                  U5      (       d   e['        US   R(                  U5      (       d   eg )NrU  rŒ  r   )r   r€   r3   r�   r'  TéÜ  r¯   rH   rç  r‹  ré  ©ÚBoolÚDateÚIntr3   Únotna_dtype_testr§  rI   re   r'   r;  r<  r=  r3   )r  r–  r}  r>   r   r€   r3   r�   r0  r4   r   r   r   r~  r   r$   r1  r2  r¹   rx   r³   )rV   r  ré  r   r€   r3   r�   r4   r  rÖ   r  rò  r3  Úmy_typeÚcol_dicts                  r.   Útest_notna_dtyperA  Î  sg  € àˆ|ÓÜ�ŠÐ9Ô:à€IØ×"Ñ" 4Ó(€D÷ó õ +ô ˜˜d�|Ó$Üœ  q¨!Ó,¨dÐ3Ó4Ü�q˜$�i xÑ0Ü˜˜d˜Ó$ñ	€Dô 
�4‹€Bà
€CØ�9‰9˜#ˆ9Ð(¨AÓ-Ð-Ð-Ü×Ò˜3Ó%€AÙ‹:€DØ‡L�L�d€LÑØ  IÓ-‰g°7€GØ�{‰{˜3Ñ×'Ñ'€HÜ�h˜vÑ&×+Ñ+¨W×5Ñ5Ð5Ð5Ü�h˜vÑ&×+Ñ+¨X×6Ñ6Ð6Ð6Ü�h˜u‘o×*Ñ*¨G×4Ñ4Ð4Ð4Ü�h˜wÑ'×,Ñ,¨e×4Ñ4Ð4Ñ4r-   c                óÔ  • U S:X  a  [         R                  " S5        UR                  U 5      n SSKJnJnJn  SSKJn  Sn[        [        U/SS9[        U/S	S9[        U/S	S9[        S
/SS9[        S
/SS9S.5      nUR                  SU SSSU" SS90S9S:X  d   e[        R                  " SU 5      n[        R                  " US   R                   S   S5      [        R                  " US   R                   S   S5      :X  d   eU" 5       n	U	R#                  U S9  U	R$                  S   R&                  n
[)        U
S   R*                  5      [)        U
S   R*                  5      :X  d   e[-        U
S   R*                  U5      (       d   e[-        U
S   R*                  U5      (       d   e[-        U
S   R*                  U5      (       d   e[-        U
S   R*                  U5      (       d   eg )NrU  rŒ  r   )Ú
BigIntegerr3   r�   r'  gñYÉBÊÀó?rÿ  r‹  Úfloat64r¯   rž  rÓ   )Úf32Úf64Ú
f64_as_f32Úi32r¯  Útest_dtypesFr”  rG  é   )Ú	precision)r¤   ro   r­   r|  r@   rH   rF  é   re   rE  rH  r¯  )r  r–  r}  r>   rC  r3   r�   r0  r4   r   r   r~  r   r$   rµ   Úroundr²   r1  r2  r¹   rÁ   r³   rx   )rV   r  rC  r3   r�   r4   ÚVrÖ   r
  r3  r@  s              r.   Útest_double_precisionrO  ó  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Ð2Ü�h˜u‘o×*Ñ*¨E×2Ñ2Ð2Ð2Ü�h˜u‘o×*Ñ*¨G×4Ñ4Ð4Ð4Ü�h˜u‘o×*Ñ*¨J×7Ñ7Ð7Ñ7r-   c                ó¸   ^^^^• UR                  U 5      n SSKJm  S mS mUU4S jmUU4S jn[        S/ SQ05      R	                  SU S	9S
:X  d   eU" U 5        g )Nr   r—   c                ó.   • Sn[         R                  " XS9$ )Nz'SELECT test_foo_data FROM test_foo_datar}  )r   r#   )rþ  rÓ  s     r.   Útest_selectÚ3test_connectable_issue_example.<locals>.test_select/  s   € Ø9ˆÜ×!Ò! %Ñ8Ð8r-   c                ó&   • UR                  SU SS9  g )NÚtest_foo_datarõ   )r¤   ro   r|  )r~  )rþ  rÊ   s     r.   Útest_appendÚ3test_connectable_issue_example.<locals>.test_append3  s   € Ø�‰˜¨jÀHˆÒMr-   c                ó&   >• T" U 5      nT" X5        g r  r,   )rV   Úfoo_datarV  rR  s     €€r.   Útest_connectableÚ8test_connectable_issue_example.<locals>.test_connectable6  s   ø€ ñ ˜tÓ$ˆÙ�DÕ#r-   c                óò   >• [        U T5      (       a;  U R                  5        nUR                  5          T" U5        S S S 5        S S S 5        g T" U 5        g ! , (       d  f       N = f! , (       d  f       g = fr  )rx   rš   rj   )ÚconnectablerV   r˜   rZ  s     €€r.   ÚmainÚ,test_connectable_issue_example.<locals>.main<  sW   ø€ Ü�k 6×*Ñ*Ø×$Ñ$Ô&¨$Ø—Z‘Z•\Ù$ TÔ*÷ "÷ 'Ð&ñ ˜[Õ)÷ "•\ú÷ 'Õ&ús!   £A(´	A½A(Á
A%	Á!A(Á(
A6rU  r  r§  rJ   )r}  r™   r˜   r   r~  )rV   r  r^  r˜   rV  rZ  rR  s      @@@@r.   Útest_connectable_issue_exampler`  '  sh   û€ à×"Ñ" 4Ó(€Dõ )ò9òNö$ö*ô 	�?¢IÐ.Ó/×6Ñ6¸OÐQUÐ6ÐVØó	ðð	ñ 	ˆ…Jr-   Úinputr¦  Úbar)r¦  Úinfe0c                óN  • [        U5      nU nUR                  U 5      n SU;   a¬  [        R                  " S5      n[	        UR
                  5      [	        S5      :  a>  SUR                  ;   a.  [        R                  R                  SS9nUR                  U5        Sn[        R                  " [        US9   UR                  S	U S
S9  S S S 5        g UR                  S	U S
S9S:X  d   e[        R                  " S	U 5      n[        R                   " X85        g ! , (       d  f       g = f)Nr'   r  z1.0.3rc  zGH 36465r‚  zinf cannot be used with MySQLrµ  ÚfoobarFrò  rH   )r   r}  r  r  r   r?   r¹   r†  r‡  rä  r¶  r·  r~  r   r$   r·   Úassert_equal)	rV   r  ra  rÖ   ré  r  r†  r›  r
  s	            r.   Útest_to_sql_with_negative_npinfrg  K  sø   € ô 
�5Ó	€BØ€IØ×"Ñ" 4Ó(€Dà�)Óô
 ×%Ò% iÓ0ˆä�7×&Ñ&Ó'¬'°'Ó*:Ó:¸wÈ"Ï*É*Ó?TÜ—;‘;×$Ñ$¨JÐ$Ð7ˆDØ×Ñ Ô%à-ˆÜ�]Š]œ:¨SÓ1Ø�I‰I˜8¨°UˆIÑ;÷ 2Ð1ð �y‰y˜h¨D¸ˆyÐ>À!ÓCÐCÐCÜ× Ò  ¨4Ó0ˆÜ
�Š˜Õ ÷ 2Õ1ús   Â6DÄ
D$c                óŠ  ^^^• U S:X  a  [         R                  " S5        UR                  U 5      n SSKJmJmJmJn  SSKJ	nJ
n  Sn[        SU/05      nU" 5       n " UUU4S jS	U5      nU" U 5       n	U	R                  5          U	R                  5       n UR                  R                  U 5        U	R!                  U" US
95        U	R#                  5         [$        R&                  " U" UR(                  5      U S9n
S S S 5        S S S 5        [*        R,                  " W
U5        g ! , (       d  f       N.= f! , (       d  f       N7= f)NrU  z&test does not work with str connectionr   )r1   r�   ÚUnicoderÈ  )ÚSessionÚdeclarative_basezHello, World!Úspamc                  óT   >• \ rS rSrSrSS/0r Y "  YSS9r Y "  Y" S5      SS	9rS
rg)Ú'test_temporary_table.<locals>.Temporaryi�  Ú	temp_testÚprefixesÚ	TEMPORARYT©Úprimary_keyrê  F)Únullabler,   N)	rw  rx  ry  rz  Ú__tablename__Ú__table_args__Úidrl  r{  )r1   r�   ri  s   €€€r.   Ú	Temporaryrn  �  s0   ø† Ø#ˆØ$ { mÐ4ˆÚ‘G¨Ñ.ˆÚ’g˜b“k¨EÑ2‹r-   rx  )rl  )r   ro   )r  r–  r}  r>   r1   r�   ri  rÈ  Úsqlalchemy.ormrj  rk  r   rj   rþ  Ú	__table__rl   ÚaddÚflushr   r#   rl  r·   ró  )rV   r  rÈ  rj  rk  r.  r  ÚBaserx  ÚsessionrÖ   r1   r�   ri  s              @@@r.   Útest_temporary_tabler  k  sÿ   ú€ àˆ|ÓÜ�ŠÐ<Ô=à×"Ñ" 4Ó(€D÷ó ÷ð
  €IÜ˜& 9 +Ð.Ó/€HÙÓ€D÷3ñ 3�Dô 3ñ 
�Œ˜'Ø�]‰]�_Ø×%Ñ%Ó'ˆDØ×Ñ×&Ñ& tÔ,Ø�K‰K™	 yÑ1Ô2Ø�M‰MŒOÜ×#Ò#©¨y¯~©~Ó(>ÀDÑIˆB÷ ÷ 
ô ×Ò˜"˜hÕ'÷ �_ú÷ 
�ús%   Á4D4ÂA6D#Ã;D4Ä#
D1	Ä-D4Ä4
Ec                ól  • U S:X  d  SU ;   a,  UR                  [        R                  R                  SS95        UR	                  U 5      n Sn[        U 5       n[        R                  " [        US9   UR                  USSS	9  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)
Nrs  r{   z9SQLiteDatabase/ADBCDatabase does not raise for bad enginer‚  z*engine must be one of 'auto', 'sqlalchemy'rµ  rå   Ú
bad_engine©rÆ   )	rä  r  r†  r‡  r}  r"   r¶  r·  r~  )rV   r  rå   r›  r«  s        r.   Útest_invalid_enginerƒ  ‘  sš   € àÐÓ 6¨T£>Ø×ÑÜ�K‰K×ÑØRð ð ô	
ð ×"Ñ" 4Ó(€DØ
6€CÜ	˜4Ô	  IÜ�]Š]œ:¨SÓ1Ø×Ñ˜[¨-ÀÐÑM÷ 2÷ 
!Ð	 ß1Õ1ú÷ 
!Õ	 ús$   ÁB%Á1BÂB%Â
B"	ÂB%Â%
B3c                ó`  • UR                  U 5      n [        U 5       nUR                  5          UR                  USSS9S:X  d   eUR	                  S5      (       d   e SSS5        SSS5        [        U5      n[        U S5      nXT:X  d   eg! , (       d  f       N5= f! , (       d  f       N>= f)z `to_sql` with the `engine` paramrå   Úautor‚  rK   N)r}  r"   rS  r~  r©  rª  rÇ   rh  s         r.   Útest_to_sql_with_sql_enginer†  ¡  s¢   € ð ×"Ñ" 4Ó(€DÜ	˜4Ô	  IØ×&Ñ&Õ(Ø×#Ñ# K°ÀvÐ#ÐNÐRSÓSÐSÐSØ×&Ñ& }×5Ñ5Ð5Ñ5÷ )÷ 
!ô
 �kÓ"€KÜ˜$ Ó.€HØÓ"Ð"Ñ"÷ )Õ(ú÷ 
!Õ	 ús"   �B®0BÁBÂ
B	ÂBÂ
B-c                óÆ  • UR                  U 5      n [        R                  " SS5         [        U 5       nUR	                  5          UR                  US5      S:X  d   eUR                  S5      (       d   e S S S 5        S S S 5        [        U5      n[        U S5      nXT:X  d   e S S S 5        g ! , (       d  f       N>= f! , (       d  f       NG= f! , (       d  f       g = f)Núio.sql.enginer>   rå   rK   ©	r}  r•  Úoption_contextr"   rS  r~  r©  rª  rÇ   rh  s         r.   Útest_options_sqlalchemyr‹  °  s»   € ð ×"Ñ" 4Ó(€DÜ	×	Ò	˜?¨LÕ	9Ü˜tÔ$¨	Ø×*Ñ*Õ,Ø ×'Ñ'¨°]ÓCÀqÓHÐHÐHØ ×*Ñ*¨=×9Ñ9Ð9Ñ9÷ -÷ %ô
 ˜+Ó&ˆÜ˜d MÓ2ˆØÓ&Ð&Ñ&÷ 
:Ð	9ç,Õ,ú÷ %Õ$ú÷ 
:Õ	9úó:   ©CµCÁ1B0Á8CÂ &CÂ0
B>Â:CÃ
C	ÃCÃ
C c                óÆ  • UR                  U 5      n [        R                  " SS5         [        U 5       nUR	                  5          UR                  US5      S:X  d   eUR                  S5      (       d   e S S S 5        S S S 5        [        U5      n[        U S5      nXT:X  d   e S S S 5        g ! , (       d  f       N>= f! , (       d  f       NG= f! , (       d  f       g = f)Nrˆ  r…  rå   rK   r‰  rh  s         r.   Útest_options_autorŽ  ¿  s»   € ð ×"Ñ" 4Ó(€DÜ	×	Ò	˜?¨FÕ	3Ü˜tÔ$¨	Ø×*Ñ*Õ,Ø ×'Ñ'¨°]ÓCÀqÓHÐHÐHØ ×*Ñ*¨=×9Ñ9Ð9Ñ9÷ -÷ %ô
 ˜+Ó&ˆÜ˜d MÓ2ˆØÓ&Ð&Ñ&÷ 
4Ð	3ç,Õ,ú÷ %Õ$ú÷ 
4Õ	3úrŒ  c                 ó8  • [         R                  " S5        [        [        S5      [        5      (       d   e[
        R                  " SS5         [        [        S5      [        5      (       d   e[        [        S5      [        5      (       d   e S S S 5        [
        R                  " SS5         [        [        S5      [        5      (       d   e[        [        S5      [        5      (       d   e S S S 5        g ! , (       d  f       Np= f! , (       d  f       g = f)Nr>   rˆ  r…  )r  r  rx   r!   r   r•  rŠ  r,   r-   r.   Útest_options_get_enginer�  Î  sÎ   € Ü
×Ò˜Ô%Ü”j Ó.Ô0@×AÑAÐAÐAä	×	Ò	˜?¨LÕ	9Üœ* VÓ,Ô.>×?Ñ?Ð?Ð?Üœ* \Ó2Ô4D×EÑEÐEÑE÷ 
:ô 
×	Ò	˜?¨FÕ	3Üœ* VÓ,Ô.>×?Ñ?Ð?Ð?Üœ* \Ó2Ô4D×EÑEÐEÑE÷ 
4Ð	3÷	 
:Õ	9ú÷ 
4Õ	3ús   ÁAC:Â/ADÃ:
DÄ
Dc                 ó   • g r  r,   r,   r-   r.   Ú"test_get_engine_auto_error_messager’  Û  s   € ð 	r-   Úfuncr½  r#   c                óp  • U nUR                  U 5      n SnUn	U	R                  X€SSS9  [        R                  " SU5         [	        [        U5      " SU 3XS9n
U" X$U5      nS S S 5        [
        R                  " W
W5        SU;   a,  UR                  [        R                  R                  S	S
95        [        R                  " SU5         [	        [        U5      " SU 3U USS9nU" X$U5      nU H  n
[
        R                  " X«5        M     S S S 5        g ! , (       d  f       Nº= f! , (       d  f       g = f)Nrz  Fr”  ©r¤   ro   r­   r|  úmode.string_storageúSelect * from ©Údtype_backendr{   z(adbc does not support chunksize argumentr‚  rJ   )ro   r™  rÅ  )r}  r~  r•  rŠ  rp  r·   ró  rä  r  r†  r‡  ©rV   r  Ústring_storager“  r™  Údtype_backend_dataÚdtype_backend_expectedré  rü   rÖ   r  r  Úiterators                r.   Útest_read_sql_dtype_backendrŸ  â  s/  € ð €IØ×"Ñ" 4Ó(€DØ€EØ	€BØ‡I�I�5¨%¸9€IÑEä	×	Ò	Ð0°.Õ	AÜœ˜TÔ"Ø˜U˜GÐ$ dñ
ˆñ *¨.ÈÓSˆ÷	 
Bô ×Ò˜& (Ô+à�Óà×ÑÜ�K‰K×ÑÐ%OÐÐPô	
ô 
×	Ò	Ð0°.Õ	AÜœ2˜tÔ$Ø˜U˜GÐ$ØØ'Øñ	
ˆñ *¨.ÈÓSˆÛˆFÜ×!Ò! &Ö3ñ ÷ 
BÐ	A÷ 
BÕ	Aú÷ 
BÕ	Aús   Á "DÃ
AD'Ä
D$Ä'
D5r$   c                ó~  • SU ;   a2  SU ;  a,  UR                  [        R                  R                  SS95        U nUR	                  U 5      n SnUn	U	R                  X€SSS9  [        R                  " S	U5         [        [        U5      " X€US
9n
U" X$U5      nS S S 5        [        R                  " W
W5        SU;   a  g [        R                  " S	U5         [        [        U5      " UU USS9nU" X$U5      nU H  n
[        R                  " X«5        M     S S S 5        g ! , (       d  f       NŒ= f! , (       d  f       g = f)Nr&   r{   zhSQLite actually returns proper boolean values via read_sql_table, but before pytest refactor was skippedr‚  rz  Fr”  r•  r–  r˜  rJ   )r™  rÅ  )rä  r  r†  r‡  r}  r~  r•  rŠ  rp  r·   ró  rš  s                r.   Ú!test_read_sql_dtype_backend_tabler¡    s5  € ð �4Ó˜F¨$Ó.Ø×ÑÜ�K‰K×ÑðMð ð ô	
ð €IØ×"Ñ" 4Ó(€DØ€EØ	€BØ‡I�I�5¨%¸9€IÑEä	×	Ò	Ð0°.Õ	AÜœ˜TÔ" 5¸mÑLˆÙ)¨.ÈÓSˆ÷ 
Bô ×Ò˜& (Ô+à�Óàä	×	Ò	Ð0°.Õ	AÜœ2˜tÔ$ØØØ'Øñ	
ˆñ *¨.ÈÓSˆÛˆFÜ×!Ò! &Ö3ñ ÷ 
BÐ	A÷ 
BÕ	Aú÷ 
BÕ	Aús   Á8DÃA D.Ä
D+Ä.
D<)r½  r$   r#   c                óä   • UR                  U 5      n SnUnUR                  X@SSS9  Sn[        R                  " [        US9   [        [        U5      " X@SS9  S S S 5        g ! , (       d  f       g = f)	Nrz  Fr”  r•  zPdtype_backend numpy is invalid, only 'numpy_nullable' and 'pyarrow' are allowed.rµ  Únumpyr˜  )r}  r~  r  r¶  r·  rp  r•  )rV   r  r“  rœ  rü   rÖ   r›  s          r.   Ú)test_read_sql_invalid_dtype_backend_tabler¤  >  sg   € ð ×"Ñ" 4Ó(€DØ€EØ	€BØ‡I�I�5¨%¸9€IÑEð	!ð ô 
�Š”z¨Ó	-Ü”�DÔ˜%°WÒ=÷ 
.×	-Ö	-ús   ÁA!Á!
A/c                 óÆ   • [        [        S[        R                  S/SS9[        / SQSS9[        S[        R                  S/SS9[        / S	QSS9/ S
Q/ SQ/ SQ/ SQS.5      $ )NrH   rJ   rC  r‹  rì  rË  ç      @ÚFloat64©rË  r�  r¦  )TFN©TFTr  ©rŽ  rñ  N©rŽ  rñ  r÷   ÚdÚeÚfÚgÚh)r   r   rµ   r  r,   r-   r.   rœ  rœ  N  s]   € ää˜œBŸF™F A˜¨gÑ6Üš	¨Ñ1Ü˜œbŸf™f cÐ*°)Ñ<Üš¨yÑ9Ú$Ú$Ú Ú!ñ		
óð r-   c                 ó   • SS jn U $ )Nc                ó  • US:X  a;  [         R                  " S5      n[        R                  " UR	                  5       5      nO[        R
                  " U 5      n[        [        S[        R                  S/SS9[        / SQSS9[        S[        R                  S/S	S9[        / S
QS	S9[        SS[        R                  /SS9[        / SQSS9[        / SQUS9[        / SQUS9S.5      nUS:X  aX  [         R                  " S5      nSSKJn  [        UR                   Vs0 s H  nXv" UR                  XW   SS95      _M     sn5      nSU;   d  SU;   a0  US:X  a  UR                  SSS.5      nU$ UR                  SSS.5      nU$ s  snf )Nr9  rH   rJ   rC  r‹  rì  rË  r¦  r§  r¨  TFÚbooleanr©  r  rª  r«  r   )ÚArrowExtensionArray)Úfrom_pandasr'   r&   Únumpy_nullable)r­  r®  zint64[pyarrow])r  r  r•  Ú
ArrowDtyper�  ÚStringDtyper   r   rµ   r  ÚNAÚpandas.arraysr´  r¹   r–  rÕ   )r›  r™  ré  r  Ústring_dtyperÖ   r´  r‰  s           r.   r“  Ú$dtype_backend_expected.<locals>.func`  st  € à˜IÓ%Ü×$Ò$ YÓ/ˆBÜŸ=š=¨¯©«Ó5‰LäŸ>š>¨.Ó9ˆLää˜Q¤§¡¨˜N°'Ñ:ÜšI¨WÑ5Ü˜S¤"§&¡&¨#Ð.°iÑ@ÜšO°9Ñ=Ü˜T 5¬"¯%©%Ð0¸	ÑBÜÒ/°yÑAÜšO°<Ñ@ÜÒ,°LÑAñ	ó
ˆð ˜IÓ%Ü×$Ò$ YÓ/ˆBå9äð  "Ÿzšzóâ)˜ð Ð,¨R¯X©X°b±gÈ4¨XÐ-PÓQÒQÙ)ñóˆBð �iÓ 8¨yÓ#8ØÐ 0Ó0Ø—Y‘Y W°7Ñ;Ó<�ð ˆ	ð —Y‘YÐ%5Ð<LÑMÓN�àˆ	ùòs   Ä"F©ru  r   r,   )r“  s    r.   r�  r�  ^  s   € ô&ðP €Kr-   c                ór  • SU ;   a6  UR                   R                  [        R                  R	                  SS95        UR                  U 5      n SSS.n[        SS/S	9R                  U5      nUR                  5       nUR                  S
U SSS9  [        SU USS9 H  n[        R                  " XT5        M     g )Nr{   rØ  r‚  rÓ   rç  rð  rŽ  rñ  râ   rz  Fr”  r•  zSELECT * FROM testrH   )r@   rÅ  )r„  r…  r  r†  r‡  r}  r   rÕ   r  r~  r#   r·   ró  )rV   r  r±   rÖ   r  r  s         r.   Útest_chunksize_empty_dtypesr¿  ‹  s²   € ð �ƒ~Ø�‰×ÑÜ�K‰K×ÑÐ%RÐÐSô	
ð ×"Ñ" 4Ó(€DØ Ñ*€FÜ	˜C ˜:Ñ	&×	-Ñ	-¨fÓ	5€BØ�w‰w‹y€HØ‡I�I�6˜t¨5¸I€IÑFä ØØØØô	ˆô 	×Ò˜fÖ/òr-   r™  r¶  c                ó\  • UR                  U 5      n Sn[        / SQSS.5      nUR                  X@SSS9  [        [        U5      " SU 3U S	[
        R                  0US
9n[        [        / SQ[
        R                  S9[        / SQUS:X  d  SOSS9S.5      n[        R                  " Xg5        g )Nrz  rì  r¯   rð  Fr”  r•  r—  rŽ  )r@   r™  r‹  )r¯   r¯   r¯   r¶  rÓ   rC  )
r}  r   r~  rp  r•  rµ   rD  r   r·   ró  )rV   r  r“  r™  rü   rÖ   r  r  s           r.   Útest_read_sql_dtyperÁ  ¡  s®   € ð
 ×"Ñ" 4Ó(€DØ€EÜ	š¨Ñ+Ó	,€BØ‡I�I�5¨%¸9€IÑEä”R˜ÔØ
˜˜Ð ØØ”B—J‘JÐØ#ñ	€Fô äš	¬¯©Ñ4ÜÚØ%2Ð6FÓ%F‘gÈGññ	
ó€Hô ×Ò˜&Õ+r-   c                óä   • U nSn[        SSSS.SSSS./5      nUR                  SU5        [        R                  " [        US9   UR                  SUS SS	9  S S S 5        g ! , (       d  f       g = f)
NzxStarting with pandas version 3.0 all arguments of to_sql except for the arguments 'name' and 'con' will be keyword-only.rH   rI   rJ   rÍ  Úexamplerµ  r”  r¯  )r   r~  r·   r™  rJ  )rW  rV   r›  rÖ   s       r.   Útest_keyword_deprecationrÄ  ½  sn   € Ø€Dð	;ð ô 
˜! !¨!Ñ,°A¸AÀAÑ.FÐGÓ	H€BØ‡I�Iˆi˜Ôä	×	#Ò	#¤M¸Ó	=Ø
�	‰	�)˜T 4°9ˆ	Ñ=÷ 
>×	=Ö	=ús   ÁA!Á!
A/c                óà   • U n[        SSS/0SS9nUR                  SUSS9S:X  d   e[        R                  " S 5         [        R
                  " SU5        S S S 5        g ! , (       d  f       g = f)	NrŽ  rH   rI   rÓ   r‹  Útest_bigintwarningFrò  )r   r~  r·   r™  r   r$   ©rW  rV   rÖ   s      r.   Útest_bigint_warningrÈ  Ë  sd   € Ø€Dä	�C˜!˜Q˜�=¨Ñ	0€BØ�9‰9Ð.°DÀˆ9ÐFÈ!ÓKÐKÐKä	×	#Ò	# DÕ	)Ü×ÒÐ/°Ô6÷ 
*×	)Ö	)ús   ¾AÁ
A-c                ó¶   • U n[        SS/SS/S.5      n[        R                  " [        SS9   UR	                  SUS	S
S9  S S S 5        g ! , (       d  f       g = f)NrH   rI   rJ   rK   ©r  r  zEmpty table name specifiedrµ  r�  r”  Fr{  )r   r  r¶  r·  r~  rÇ  s      r.   Útest_valueerror_exceptionrË  Õ  sN   € Ø€DÜ	˜Q ˜F¨Q°¨FÑ3Ó	4€BÜ	�Š”zÐ)EÓ	FØ
�	‰	�r˜t¨yÀˆ	ÑF÷ 
G×	FÖ	Fús   ®A
Á

Ac                óH  ^
^^• U nSSK Jm
JmJm  SSKJnJn  U" 5       n " U
UU4S jSU5      nUR                  5          UR                  R                  U5        S S S 5        U" US9nU" 5        n[        SS/SS	/S
.5      nUR                  SUSSS9S:X  d   eUR                  5         UR                  UR                  UR                  5      n	[        U	5      nS S S 5        [!        WR"                  5      SS/:X  d   eg ! , (       d  f       N­= f! , (       d  f       N== f)Nr   ©r1   r�   r5   )rk  Úsessionmakerc                  óL   >• \ rS rSrSr Y "  YSS9r Y "  Y" S5      5      rSrg)Ú,test_row_object_is_named_tuple.<locals>.Testiî  r§  Trr  é2   r,   N)rw  rx  ry  rz  ru  rw  Ústring_columnr{  rÍ  s   €€€r.   ÚTestrÐ  î  s"   ø† Ø$ˆÚ‘G¨Ñ.ˆÚšv b›zÓ*‹r-   rÓ  re   rH   ÚhelloÚworld)rw  rÒ  r§  Fr”  r•  rI   rw  rÒ  )r>   r1   r�   r5   ry  rk  rÎ  rj   rA   Ú
create_allr   r~  rU   rÓ  rw  rÒ  r$  r¹   )rW  rV   rk  rÎ  Ú	BaseModelrÓ  rj  r~  rÖ   Ú
test_queryr1   r�   r5   s             @@@r.   Útest_row_object_is_named_tuplerÙ  Ü  s  ú€ Ø€D÷
ñ ÷
ñ
 !Ó"€I÷+ñ +ˆyô +ð
 
�‰�Ø×Ñ×%Ñ% dÔ+÷ 
á Ñ%€GÙ	Œ�gÜ˜q !˜f¸ÀÐ7IÑJÓKˆà�I‰I˜<¨T¸È)ˆIÐTØóð	
ðð 	�‰ÔØ—]‘] 4§7¡7¨D×,>Ñ,>Ó?ˆ
Ü�zÓ"ˆ÷ 
ô �—
‘
Ó  oÐ6Ó6Ð6Ñ6÷ 
�ú÷ 
�ús   ¿DÁ0A,DÄ
DÄ
D!c           	     óf  • U nSn[        SSS/05      nUR                  X!SSS9  [        R                  " SS	5         [	        X!5      nS S S 5        [        R
                  " [        R                  S
9n[        SSS/0U[        S/US9S9n[        R                  " WU5        g ! , (       d  f       N`= f)Nrz  rŽ  ÚxÚyFr”  )ro   r­   r|  zfuture.infer_stringT)Úna_valuer‹  )r@   r¹   )r   r~  r•  rŠ  r$   r¸  rµ   r  r   r·   ró  )rW  rV   rü   rÖ   r  r@   r  s          r.   Útest_read_sql_string_inferencerÞ    s£   € Ø€Dà€EÜ	�C˜#˜s˜Ð$Ó	%€BØ‡I�Iˆe U°i€IÑ@ä	×	Ò	Ð0°$Õ	7Ü Ó,ˆ÷ 
8ô �NŠN¤B§F¡FÑ+€EÜØ	ˆs�CˆjÐ ´°s°eÀ5Ñ0Iñ€Hô ×Ò˜& (Õ+÷ 
8Õ	7ús   ¼B"Â"
B0c           	     ó¶   • U n[        S[        SSSS5      /0SS9nUR                  SUSS	S
9  [        R                  " SU5      R
                  S   nUS:X  d   eg ©NÚtiä  r“  é   r�  r‹  rz  r”  F)r|  r­   úselect * from test©r   r   z2020-12-31 12:00:00.000000)r   r   r~  r•  r½  r²   )rW  rV   rÖ   r  s       r.   Útest_roundtripping_datetimesrå    sf   € Ø€Dä	�Cœ( 4¨¨R°Ó4Ð5Ð6Ð>NÑ	O€BØ‡I�Iˆf�d i°u€IÑ=Ü�[Š[Ð-¨tÓ4×9Ñ9¸$Ñ?€FØÐ1Ó1Ð1Ñ1r-   c               #  óî   #   • [         R                  " [        R                  " S[        R                  S95       n U  nUv •  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f7f)Nro  )Údetect_types)rp  r   ry   rš   ÚPARSE_DECLTYPESrq  s     r.   Úsqlite_builtin_detect_typesré    sU   é € ä	×	Ò	Ü�Š˜
´×1HÑ1HÑIô
à	Ù˜TØŠJ÷ ÷
ð 
÷ �\ú÷
õ 
üs3   ‚8A5ºA$½AÁA$Á
	A5Á
A!	ÁA$Á$
A2Á.A5c           	     óÈ   • U n[        S[        SSSS5      /0SS9nUR                  SUSS	S
9  [        R                  " SU5      R
                  S   nU[        S5      :X  d   eg rà  )r   r   r~  r•  r½  r²   r   )ré  rV   rÖ   r  s       r.   Ú)test_roundtripping_datetimes_detect_typesrë  '  sk   € à&€DÜ	�Cœ( 4¨¨R°Ó4Ð5Ð6Ð>NÑ	O€BØ‡I�Iˆf�d i°u€IÑ=Ü�[Š[Ð-¨tÓ4×9Ñ9¸$Ñ?€FØ”YÐ;Ó<Ó<Ð<Ñ<r-   c                óŒ  • U n[        SS/SS/SS/S.5      nUR                  5        nUR                  5          UR                  S5        UR                  S	5        S S S 5        S S S 5        UR	                  S
USS9S:X  d   eUR	                  SUSSS9S:X  d   eUR	                  SUSSS9S:X  d   e[
        R                  " S
U5      n[        R                  " X$5        [
        R                  " SU5      n[        R                  " X%5        [
        R                  " SUSS9n[        R                  " X&5        [
        R                  " SUSS9n[        R                  " X'5        Sn[        R                  " [        US9   [
        R                  " SUSS9  S S S 5        UR                  5        nUR                  5          UR                  S5        UR                  S	5        S S S 5        S S S 5        UR	                  SUSSS9S:X  d   eUR	                  SUSSSS9  UR	                  SUSSSS9S:X  d   e[
        R                  " SUSS9n	[        R                  " [        X"/SS9U	5        g ! , (       d  f       GN= f! , (       d  f       GN#= f! , (       d  f       GN= f! , (       d  f       NÇ= f! , (       d  f       NÐ= f)NrH   rI   rî  r«   rŽ  r
  r  z$DROP SCHEMA IF EXISTS other CASCADE;zCREATE SCHEMA other;Útest_schema_publicFrò  Útest_schema_public_explicitr,  )r¤   ro   r­   rû   Útest_schema_otherÚotherr-  z!Table test_schema_other not foundrµ  )r¤   ro   rû   r­   r”  )r¤   ro   rû   r­   r|  rõ   Tr÷  )r   rš   rj   rÂ   r~  r   r$   r·   ró  r  r¶  r·  r   )
r0  rV   rÖ   ro   rö  r÷  r   Úres4r›  r
  s
             r.   Útest_psycopg2_schema_supportrò  0  s¢  € à%€Dô 
˜Q ˜F¨S°#¨JÀÀcÀ
ÑKÓ	L€Bð 
�‰Œ˜3Ø�Y‰Y�[Ø×ÑÐ FÔGØ×ÑÐ 6Ô7÷ ÷ 
ð �9‰9Ð.°DÀˆ9ÐFÈ!ÓKÐKÐKà
�	‰	Ø.ØØØð	 	ð 	
ð ó	ðð	ð 	�	‰	Ð*°¸EÈ'ˆ	ÐRÐVWÓWðØWô ×ÒÐ2°DÓ9€DÜ×Ò˜"Ô#Ü×ÒÐ;¸TÓB€DÜ×Ò˜"Ô#Ü×ÒÐ;¸TÈ(ÑS€DÜ×Ò˜"Ô#Ü×ÒÐ1°4ÀÑH€DÜ×Ò˜"Ô#Ø
-€CÜ	�Š”z¨Ó	-Ü×ÒÐ.°¸XÒF÷ 
.ð 
�‰Œ˜3Ø�Y‰Y�[Ø×ÑÐ FÔGØ×ÑÐ 6Ô7÷ ÷ 
ð 	�	‰	Ð*°¸WÈEˆ	ÐRÐVWÓWðØWà‡I�IØ ØØØØð ñ ð 	�	‰	Ø$ØØØØð 	ð 	
ð ó	ð	ð	ô ×
Ò
Ð0°$¸wÑ
G€CÜ×Òœ& " ¸Ñ=¸sÕC÷} Ž[ú÷ 
Žú÷< 
.Ö	-ú÷ �[ú÷ 
�úsR   ¨J ¹#I.ÁJ Æ JÆ/J5Ç #J$Ç#J5É.
I=	É8J Ê 
JÊ
J!Ê$
J2	Ê.J5Ê5
Kc                ó  • U nSSK Jn  U" S5      nUR                  5        nUR                  5          UR	                  U5        S S S 5        S S S 5        Sn[
        R                  " XQ5      n[        S[        SSS9/S	-  /S
S/S	-  S9n[        R                  " Xg5        [        R                  " USS9 nUR                  S5        S S S 5        g ! , (       d  f       N‘= f! , (       d  f       Nš= f! , (       d  f       g = f)Nr   rv   zÐ
    CREATE TABLE person
    (
        id serial constraint person_pkey primary key,
        created_dt timestamp with time zone
    );

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