§
    ÕóÉj@}  ã                  ó  — d dl mZ d dlmZ d dlZd dlmZ d dlmZ d dlZd dl	Z	d dl
Z
ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ d„ Z ej!        d„ ¦   «         Z"d„ Z#d„ Z$d„ Z%d„ Z&d„ Z'd„ Z(da)da*da+	 	 	 dJd!„Z,ej!        	 	 	 	 	 dKd"„¦   «         Z-d#„ Z.d$„ Z/d%„ Z0dLd&„Z1dMd'„Z2dMd(„Z3dMd)„Z4dMd*„Z5dMd+„Z6dMd,„Z7dMd-„Z8dMd.„Z9dMd/„Z:dMd0„Z;e;Z<dMd1„Z=dMd2„Z>e>Z?dMd3„Z@dMd4„ZAd5„ ZBd6„ ZCd7„ ZDd8„ ZEd9„ ZFd:„ ZGd;„ ZH	 dNd<„ZI G d=„ d>¦  «        ZJej!        dNd?„¦   «         ZKdOd@„ZLdOdA„ZM G dB„ dC¦  «        ZN G dD„ dE¦  «        ZO G dF„ dG¦  «        ZP G dH„ dI¦  «        ZQdS )Pé    )Úannotations)ÚdefaultdictN)Úcopy)Úfilterfalseé   )Ú	assertsql)Úconfig)Úengines)Úmock)Údb_spec)Úfailé   )Úexc)Úschema)Úsql)Útypes)Úutil)Údefault)Úurl)ÚLABEL_STYLE_TABLENAME_PLUS_COL©Ú	decoratorc                 ó2   — t          t          j        | fi |¤ŽS )aÉ  Context manager which expects one or more warnings.

    With no arguments, squelches all SAWarning emitted via
    sqlalchemy.util.warn and sqlalchemy.util.warn_limited.   Otherwise
    pass string expressions that will match selected warnings via regex;
    all non-matching warnings are sent through.

    The expect version **asserts** that the warnings were in fact seen.

    Note that the test suite sets SAWarning warnings to raise exceptions.

    )Ú_expect_warnings_sqla_onlyÚsa_excÚ	SAWarning©ÚmessagesÚkws     ú‚/home/lighthouse/badge-speaker-benchmark/.benchmark-venv-community/lib64/python3.11/site-packages/sqlalchemy/testing/assertions.pyÚexpect_warningsr!   %   s   € õ &¥fÔ&6¸ÐGÐGÀBÐGÐGÐGó    c              /  óÚ   K  — t          | ¦  «        }t          | t          ¦  «        r |t          j        ¦  «        sdV — dS t          |i |¤Ž5  dV — ddd¦  «         dS # 1 swxY w Y   dS )z›Context manager which expects one or more warnings on specific
    dialects.

    The expect version **asserts** that the warnings were in fact seen.

    N)r   Ú
isinstanceÚstrr	   Ú_currentr!   )Údbr   r   Úspecs       r    Úexpect_warnings_onr)   5   sÅ   è è € õ �2‰;Œ;€Då�"•cÑÔð  4 4­¬Ñ#8Ô#8ð Øˆˆˆˆˆå˜hÐ-¨"Ð-Ð-ð 	ð 	ØˆEˆEˆEð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   ÁA Á A$Á'A$c                 ó,   ‡ — t           ˆ fd„¦   «         }|S )z„Decorator form of expect_warnings().

    Note that emits_warning does **not** assert that the warnings
    were in fact seen.

    c                ó`   •— t          ‰ddiŽ5   | |i |¤Žcd d d ¦  «         S # 1 swxY w Y   d S ©NÚassert_F)r!   ©ÚfnÚargsr   r   s      €r    Údecoratezemits_warning.<locals>.decorateN   s‰   ø€ å¨XÐ6 UÐ6Ð6ð 	#ð 	#Ø�2�t�?˜r�?�?ð	#ð 	#ð 	#ð 	#ñ 	#ô 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#øøøð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ó   Ž#£'ª'r   ©r   r1   s   ` r    Úemits_warningr4   F   s/   ø€ õ ð#ð #ð #ð #ñ „Yð#ð €Or"   c                 ó2   — t          t          j        | fi |¤ŽS ©N)r   r   ÚSADeprecationWarningr   s     r    Úexpect_deprecatedr8   V   s)   € Ý%ÝÔ# Xðð Ø13ðð ð r"   c                 ó    — t          d¦  «        S )NzCThe (?:``noload`` loader strategy|noload\(\) option) is deprecated.©r8   © r"   r    Úexpect_noload_deprecationr<   \   s   € ÝØNñô ð r"   c                 ó2   — t          t          j        | fi |¤ŽS r6   )r   r   ÚBase20DeprecationWarningr   s     r    Úexpect_deprecated_20r?   b   s)   € Ý%ÝÔ'¨ðð Ø57ðð ð r"   c                ó0   ‡ ‡— t           ˆ ˆfd„¦   «         }|S )aV  Mark a test as emitting a warning on a specific dialect.

    With no arguments, squelches all SAWarning failures.  Or pass one or more
    strings; these will be matched to the root of the warning description by
    warnings.filterwarnings().

    Note that emits_warning_on does **not** assert that the warnings
    were in fact seen.

    c                óh   •— t          ‰g‰¢R ddiŽ5   | |i |¤Žcd d d ¦  «         S # 1 swxY w Y   d S r,   )r)   )r/   r0   r   r'   r   s      €€r    r1   z"emits_warning_on.<locals>.decoratet   s”   ø€ å Ð=°HÐ=Ð=Ð=¨EÐ=Ð=ð 	#ð 	#Ø�2�t�?˜r�?�?ð	#ð 	#ð 	#ð 	#ñ 	#ô 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#øøøð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ó   ’'§+®+r   )r'   r   r1   s   `` r    Úemits_warning_onrC   h   s5   øø€ õ ð#ð #ð #ð #ð #ñ „Yð#ð €Or"   c                 ó,   ‡ — t           ˆ fd„¦   «         }|S )a+  Mark a test as immune from fatal deprecation warnings.

    With no arguments, squelches all SADeprecationWarning failures.
    Or pass one or more strings; these will be matched to the root
    of the warning description by warnings.filterwarnings().

    As a special case, you may pass a function name prefixed with //
    and it will be re-written as needed to match the standard warning
    verbiage emitted by the sqlalchemy.util.deprecated decorator.

    Note that uses_deprecated does **not** assert that the warnings
    were in fact seen.

    c                ó`   •— t          ‰ddiŽ5   | |i |¤Žcd d d ¦  «         S # 1 swxY w Y   d S r,   r:   r.   s      €r    r1   z!uses_deprecated.<locals>.decorateŒ   s‰   ø€ å Ð8°%Ð8Ð8ð 	#ð 	#Ø�2�t�?˜r�?�?ð	#ð 	#ð 	#ð 	#ñ 	#ô 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#øøøð 	#ð 	#ð 	#ð 	#ð 	#ð 	#r2   r   r3   s   ` r    Úuses_deprecatedrF   |   s/   ø€ õ  ð#ð #ð #ð #ñ „Yð#ð €Or"   TFc                ó,   — t          | ||||d¬¦  «        S )zžSQLAlchemy internal use only _expect_warnings().

    Alembic is using _expect_warnings() directly, and should be updated
    to use this new interface.

    T)ÚregexÚ
search_msgr-   Úraise_on_any_unexpected)Ú_expect_warnings)Úexc_clsr   rH   rI   r-   s        r    r   r   ™   s-   € õ ØØØØØØ $ðñ ô ð r"   c           	   #  óÄ  ‡‡‡‡‡‡	‡
K  — ‰s‰rd„ |D ¦   «         Šnt          |¦  «        Št          �Wt          €J ‚t          €J ‚t                               ‰¦  «         t                               ‰¦  «         t          | fz  ad V — d S t          ‰¦  «        xŠ
a‰a| fa‰rd„ Š	nt          j        Š	ˆˆˆ	ˆˆˆ
ˆfd„}t          j
        d|¦  «        5  	 d V — d xaxaa|r.‰
r,J dd                     ˆfd„‰
D ¦   «         ¦  «        z  ¦   «         ‚n;# d xaxaa|r.‰
r,J dd                     ˆfd„‰
D ¦   «         ¦  «        z  ¦   «         ‚w xY wd d d ¦  «         d S # 1 swxY w Y   d S )Nc                óf   — g | ].}t          j        |t           j        t           j        z  ¦  «        ‘Œ/S r;   )ÚreÚcompileÚIÚS)Ú.0Úmsgs     r    ú
<listcomp>z$_expect_warnings.<locals>.<listcomp>½   s,   € ÐDÐDÐD°C•2”:˜c¥2¤4­"¬$¡;Ñ/Ô/ÐDÐDÐDr"   c                óˆ   — t          | t          j        ¦  «        rt          j        | g|¢R i |¤Ž d S t          d| z  ¦  «        ‚)NzGot unexpected warning: %r)r$   r   ÚSATestSuiteWarningÚwarningsÚwarnÚAssertionError)rT   Úargr   s      r    Ú	real_warnz#_expect_warnings.<locals>.real_warnÑ   sR   € Ý˜c¥6Ô#<Ñ=Ô=ð MÝ”M #Ð2¨Ð2Ð2Ð2¨rÐ2Ð2Ð2Ð2Ð2å(Ð)EÈÑ)KÑLÔLÐLr"   c                óª  •— t          | t          ¦  «        rt          | ¦  «        }t          | ¦  «        } n|r	|d         }nd }|rt	          |t          ¦  «        s‰s ‰| g|¢R i |¤ŽS d S ‰s‰sd S ‰D ]P}‰	r|                     | ¦  «        s‰r|                     | ¦  «        s‰s|| k    r‰
                     |¦  «          d S ŒQ‰s ‰| g|¢R i |¤Ž d S d S ©Nr   )r$   Ú_EXC_CLSÚtyper%   Ú
issubclassÚsearchÚmatchÚdiscard)rT   r[   r   Ú	exceptionÚfilter_ÚfiltersrJ   r\   rH   rI   ÚseenÚsquelch_other_warningss        €€€€€€€r    Úour_warnz"_expect_warnings.<locals>.our_warnÚ   sN  ø€ Ý˜#�xÑ(Ô(ð !Ý  ™IœI�	Ý˜#‘h”h��Øð !Ø œF�	�	à �	àð ¥J¨y½(Ñ$CÔ$Cð Ø-ð Ø$˜9 SÐ5¨3Ð5Ð5Ð5°"Ð5Ð5Ð5à�Fàð Ð#:ð Ø�à"ð 
/ð 
/�àðØ$+§N¢N°3Ñ$7Ô$7ðàðà")§-¢-°Ñ"4Ô"4ðð "ðð '.°¢n nà—L’L Ñ)Ô)Ð)Ø�E�Eøà-ð /Ø�I˜cÐ. CÐ.Ð.Ð.¨2Ð.Ð.Ð.Ð.Ð.ð/ð /r"   zwarnings.warnzWarnings were not seen: %sz, c              3  ó4   •K  — | ]}d ‰r|j         n|z  V — ŒdS )z%rN)Úpattern)rS   ÚsrH   s     €r    ú	<genexpr>z#_expect_warnings.<locals>.<genexpr>ÿ   sL   øè è € ð Nð NØ?@˜¨UÐ 9 ¤	 	¸Ñ:ðNð Nð Nð Nð Nð Nr"   )ÚlistÚ_FILTERSÚ_SEENr_   ÚextendÚupdateÚsetrX   rY   r   ÚpatchÚjoin)rL   r   rH   rI   r-   rJ   ri   rj   rg   r\   rh   s     `` `` @@@r    rK   rK   °   s©  øøøøøøøè è € ð ð !�
ð !ØDÐD¸8ÐDÑDÔDˆˆå�x‘.”.ˆåÐõ Ð Ð Ð ÝÐ#Ð#Ð#Ý�Š˜Ñ Ô Ð Ý�Š�WÑÔÐÝ�W�JÑˆØˆˆˆˆˆå˜7‘|”|Ð#ˆˆuØˆØ�:ˆà"ð 		&ðMð Mð Mð Mõ !œˆIð	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/õ< ŒZ˜¨Ñ2Ô2ð 		ð 		ðØ���à.2Ð2�Ð2˜ 8àð Ø#ð ð Ð%AÀDÇIÂIð Nð Nð Nð NØDHðNñ Nô Nñ Eô Eñ &ñ ô ð øøð /3Ð2�Ð2˜ 8àð Ø#ð ð Ð%AÀDÇIÂIð Nð Nð Nð NØDHðNñ Nô Nñ Eô Eñ &ñ ô ð ð ð ð ð ð		ð 		ð 		ñ 		ô 		ð 		ð 		ð 		ð 		ð 		ð 		ð 		øøøð 		ð 		ð 		ð 		ð 		ð 		s*   ÃEÃDÃ7EÄ8EÅEÅEÅEc                 ó"   — t          ¦   «          dS )zÛCheck things that have to be finalized at the end of a test suite.

    Hardcoded at the moment, a modular system can be built here
    to support things like PG prepared transactions, tables all
    dropped, etc.

    N)Ú!_assert_no_stray_pool_connectionsr;   r"   r    Úglobal_cleanup_assertionsry     s   € õ &Ñ'Ô'Ð'Ð'Ð'r"   c                 óB   — t           j                             ¦   «          d S r6   )r
   Útesting_reaperÚassert_all_closedr;   r"   r    rx   rx     s   € ÝÔ×,Ò,Ñ.Ô.Ð.Ð.Ð.r"   c                ó|   — t          | |z  ¦  «        }t          || z
  ¦  «        |k     sJ d||dz  | fz  ¦   «         ‚d S )Nz:Given int value %s is not within %d%% of expected value %séd   )ÚintÚabs)ÚexpectedÚreceivedÚvarianceÚdeviances       r    Úint_within_variancer…     s[   € Ý�8˜hÑ&Ñ'Ô'€HåˆH�xÑÑ Ô  8Ò+Ð+Ð+ØCØØ�3‰ØðGñ ñ 	,Ô+Ð+Ð+Ð+r"   c                óT   — t          j        || |¦  «        sJ |p| ›d|›�¦   «         ‚d S )Nú !~ )rO   rc   )ÚaÚbrT   Úflagss       r    Úeq_regexr‹     s:   € ÝŒ8�A�q˜%Ñ Ô Ð<Ð< #Ð"<°q°q°q¸!¸!Ð)<Ñ<Ô<Ð<Ð<Ð<r"   c                ó4   — | |k    sJ |p| ›d|›�¦   «         ‚dS )z.Assert a == b, with repr messaging on failure.ú != Nr;   ©rˆ   r‰   rT   s      r    Úeq_r�   "  ó)   € à�Š6ˆ6ˆ6�3Ð-¨¨¨¨1¨1Ð-‰6Œ6ˆ6ˆ6ˆ6r"   c                ó4   — | |k    sJ |p| ›d|›�¦   «         ‚dS )z.Assert a != b, with repr messaging on failure.z == Nr;   rŽ   s      r    Úne_r’   '  r�   r"   c                ó4   — | |k    sJ |p| ›d|›�¦   «         ‚dS )z.Assert a <= b, with repr messaging on failure.r�   Nr;   rŽ   s      r    Úle_r”   ,  r�   r"   c                óH   — t          | |¦  «        sJ |p| ›d|›�¦   «         ‚d S )Nz is not an instance of ©r$   rŽ   s      r    Úis_instance_ofr—   1  s6   € Ý�a˜ÑÔÐJÐJ˜SÐJÀQÀQÀQÈÈÐ$JÑJÔJÐJÐJÐJr"   c                ó*   — t          | d |¬¦  «         d S ©N©rT   )Úis_©rˆ   rT   s     r    Úis_noner�   5  s   € Ýˆˆ4�SÐÑÔÐÐÐr"   c                ó*   — t          | d |¬¦  «         d S r™   )Úis_notrœ   s     r    Úis_not_noner    9  s   € Ý
ˆ1ˆd˜ÐÑÔÐÐÐr"   c                óD   — t          t          | ¦  «        d|¬¦  «         d S )NTrš   ©r›   Úboolrœ   s     r    Úis_truer¤   =  s#   € Ý�ˆQ‰Œ�˜3ÐÑÔÐÐÐr"   c                óD   — t          t          | ¦  «        d|¬¦  «         d S )NFrš   r¢   rœ   s     r    Úis_falser¦   A  s#   € Ý�ˆQ‰Œ�˜CÐ Ñ Ô Ð Ð Ð r"   c                ó0   — | |u sJ |p| ›d|›�¦   «         ‚dS )z.Assert a is b, with repr messaging on failure.z is not Nr;   rŽ   s      r    r›   r›   E  ó)   € à�ˆ6ˆ6ˆ6�3Ð1¨A¨A¨A¨q¨qÐ1‰6Œ6ˆ6ˆ6ˆ6r"   c                ó0   — | |usJ |p| ›d|›�¦   «         ‚dS )z2Assert a is not b, with repr messaging on failure.z is Nr;   rŽ   s      r    rŸ   rŸ   J  s)   € à�Aˆ:ˆ:ˆ:�sÐ1¨A¨A¨A¨q¨qÐ1‰:Œ:ˆ:ˆ:ˆ:r"   c                ó0   — | |v sJ |p| ›d|›�¦   «         ‚dS )z.Assert a in b, with repr messaging on failure.z not in Nr;   rŽ   s      r    Úin_r«   S  r¨   r"   c                ó0   — | |vsJ |p| ›d|›�¦   «         ‚dS )z2Assert a in not b, with repr messaging on failure.z is in Nr;   rŽ   s      r    Únot_inr­   X  s)   € à�Aˆ:ˆ:ˆ:�sÐ4¨q¨q¨q°!°!Ð4‰:Œ:ˆ:ˆ:ˆ:r"   c                óR   — |                       |¦  «        sJ |p| ›d|›�¦   «         ‚dS )z>Assert a.startswith(fragment), with repr messaging on failure.z does not start with N)Ú
startswith)rˆ   ÚfragmentrT   s      r    Ústartswith_r±   a  sL   € à�<Š<˜Ñ!Ô!ð ð  3ð $Ø	ˆˆØˆð+ñ ô ð ð ð r"   c                ó<  — t          j        dd| ¦  «        } t          j        dd| ¦  «        } t          j        dd| ¦  «        } t          j        dd|¦  «        }t          j        dd|¦  «        }t          j        dd|¦  «        }| |k    sJ |p| ›d|›�¦   «         ‚d S )Nz^\s+?|\nÚ z {2,}ú z\tr�   )rO   ÚsubrŽ   s      r    Úeq_ignore_whitespacer¶   i  s›   € Ý
Œˆ{˜B Ñ"Ô"€AÝ
Œˆx˜˜aÑ Ô €AÝ
Œˆu�b˜!ÑÔ€AÝ
Œˆ{˜B Ñ"Ô"€AÝ
Œˆx˜˜aÑ Ô €AÝ
Œˆu�b˜!ÑÔ€Aà�Š6ˆ6ˆ6�3Ð-¨¨¨¨1¨1Ð-‰6Œ6ˆ6ˆ6ˆ6r"   c                ó`   — | j         | j        ur| j        sJ d| ›d| j         ›d�¦   «         ‚dS dS )aH  assert that any exception we're catching does not have a __context__
    without a __cause__, and that __suppress_context__ is never set.

    Python 3 will report nested as exceptions as "during the handling of
    error X, error Y occurred". That's not what we want to do.  we want
    these exceptions in a cause chain.

    Fz
Exception z> was correctly raised but did not set a cause, within context z as its cause.N)Ú__context__Ú	__cause__Ú__suppress_context__)re   s    r    Ú _assert_proper_exception_contextr»   t  s`   € ð 	Ô YÔ%8Ð8Ð8ØÔ.ð 	9ð	
ð 	
ð ˆyˆy˜)Ô/Ð/Ð/ð1ñ	
ô 	
ð 	
ð 	9Ð8Ð8Ð8r"   c                ó*   — t          | |||d¬¦  «        S )NT©Úcheck_context©Ú_assert_raises©Ú
except_clsÚ	callable_r0   r   s       r    Úassert_raisesrÄ   ‰  s   € Ý˜* i°°rÈÐNÑNÔNÐNr"   c                ó&   — t          | |||¦  «        S r6   r¿   rÁ   s       r    Úassert_raises_context_okrÆ   �  s   € Ý˜* i°°rÑ:Ô:Ð:r"   c                ó,   — t          | ||||d¬¦  «        S )NT©rT   r¾   r¿   ©rÂ   rT   rÃ   r0   Úkwargss        r    Úassert_raises_messagerË   ‘  s&   € ÝØ�I˜t V°ÀDðñ ô ð r"   c                óh   — t          | dg¦  «        5   ||i |¤Žcddd¦  «         S # 1 swxY w Y   dS )a  legacy adapter function for functions that were previously using
    assert_raises with SAWarning or similar.

    has some workarounds to accommodate the fact that the callable completes
    with this approach rather than stopping at the exception raise.


    z.*N©r   )rÂ   rÃ   r0   rÊ   s       r    Úassert_warnsrÎ   —  sŒ   € õ 
$ J°°Ñ	7Ô	7ð *ð *Øˆy˜$Ð) &Ð)Ð)ð*ð *ð *ð *ñ *ô *ð *ð *ð *ð *ð *ð *øøøð *ð *ð *ð *ð *ð *rB   c                ón   — t          | |gdd¬¦  «        5   ||i |¤Žcddd¦  «         S # 1 swxY w Y   dS )aq  legacy adapter function for functions that were previously using
    assert_raises with SAWarning or similar.

    has some workarounds to accommodate the fact that the callable completes
    with this approach rather than stopping at the exception raise.

    Also uses regex.search() to match the given message to the error string
    rather than regex.match().

    TF)rI   rH   NrÍ   rÉ   s        r    Úassert_warns_messagerÐ   ¤  sŸ   € õ 
$ØØ	ˆØØð	
ñ 
ô 
ð *ð *ð ˆy˜$Ð) &Ð)Ð)ð*ð *ð *ð *ñ *ô *ð *ð *ð *ð *ð *ð *øøøð *ð *ð *ð *ð *ð *s   •*ª.±.c                ó*   — t          | ||||¬¦  «        S r™   r¿   rÉ   s        r    Ú assert_raises_message_context_okrÒ   ¸  s   € õ ˜* i°°vÀ3ÐGÑGÔGÐGr"   c                ór   — t          | ||¦  «        5 } ||i |¤Ž d d d ¦  «         n# 1 swxY w Y   |j        S r6   )Ú_expect_raisesÚerror)rÂ   rÃ   r0   rÊ   rT   r¾   Úecs          r    rÀ   rÀ   ¾  s„   € õ 
˜
 C¨Ñ	7Ô	7ð #¸2Øˆ	�4Ð"˜6Ð"Ð"Ð"ð#ð #ð #ñ #ô #ð #ð #ð #ð #ð #ð #øøøð #ð #ð #ð #àŒ8€Os   ’	'§+®+c                  ó   — e Zd ZdZdS )Ú_ErrorContainerN)Ú__name__Ú
__module__Ú__qualname__rÕ   r;   r"   r    rØ   rØ   Æ  s   € € € € € Ø€E€E€Er"   rØ   c              #  ó\  K  — t          | t          ¦  «        rt          | t          ¦  «        st          | t          ¦  «        rt	          d¦  «        ‚t          ¦   «         }|rt          j        ¦   «         d         }	 |V — d}n�# | $ r•}||_        d}|�>t          |¦  «        }t          j        ||t          j        ¦  «        sJ |›d|›�¦   «         ‚|r|st          |¦  «         t          t          |¦  «                             d¦  «        ¦  «         Y d }~nd }~ww xY w~|s
J d¦   «         ‚d S )NzCUse expect_warnings for warnings, not expect_raises / assert_raisesr   FTr‡   úutf-8z#Callable did not raise an exception)r$   r`   ra   ÚWarningÚ	TypeErrorrØ   ÚsysÚexc_inforÕ   r%   rO   rb   ÚUNICODEr»   ÚprintÚencode)rÂ   rT   r¾   rÖ   Úare_we_already_in_a_tracebackÚsuccessÚerrÚerror_as_strings           r    rÔ   rÔ   Ê  s€  è è € õ 	�:�tÑ$Ô$ð
å�z¥7Ñ+Ô+ð
õ �j¥'Ñ*Ô*ð
õ
 ð,ñ
ô 
ð 	
õ 
Ñ	Ô	€BØð :Ý(+¬©¬°qÔ(9Ð%ð(ØˆˆˆØˆˆøØð (ð (ð (ØˆŒØˆØˆ?õ " #™hœhˆOÝ”9˜S /µ2´:Ñ>Ô>ð ð Ø��Ø�ðAñ ô ð ð ð 	2Ð!>ð 	2Ý,¨SÑ1Ô1Ð1Ý�c�#‰hŒh�oŠo˜gÑ&Ô&Ñ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'øøøøð(øøøð( 	ð Ð9Ð9Ð9Ñ9Ô9Ð9Ð9Ð9s   Á;B ÂDÂBDÄDc                ó$   — t          | |¬¦  «        S )Nr½   ©rÔ   )rÂ   r¾   s     r    Úexpect_raisesrë   õ  s   € Ý˜*°MÐBÑBÔBÐBr"   c                ó&   — t          | ||¬¦  «        S )NrÈ   rê   )rÂ   rT   r¾   s      r    Úexpect_raises_messagerí   ù  s   € Ý˜*¨#¸]ÐKÑKÔKÐKr"   c                  ó@   — e Zd Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„ZdS )ÚAssertsCompiledSQLNFTc           	     óú  ‡‡0‡1‡2‡3‡4‡5— |r)t          j        ¦   «         Š|‰_        |‰_        |‰_        nÜ|rd Šn×‰€t          | dd ¦  «        Š‰€t          j        j        Šn°‰dk    s‰dk    r=‰dk    rt          j        ¦   «         Šnt          j        d¦  «        Š|‰_        |‰_        ng‰dk    rt          j	        ¦   «         ŠnMt          ‰t          ¦  «        r8t          j                             ‰¦  «                             ¦   «         ¦   «         Š|r|‰_        i }i }|r||d<   |�t#          |¦  «        |d<   |rd|d	<   |rd|d
<   |rd|d<   |rd|d<   |rd|d<   |st          | dd¦  «        rt$          j        |d<   ddlm} t          ||j        ¦  «        r"|                     ¦   «         }t0          |_        |}|r||d<    G d„ d¦  «        Š0 G ˆ0fd„d¦  «        }  ||¦  «        j        d7d‰i|¤ŽŠ1t          |t6          j        ¦  «        r|j        }|rt=          |¦  «         n+|                     ¦   «         }|rt=          |d         ¦  «         tA          t          ‰1di ¦  «        ¦  «        }| !                    d¦  «         "                    dd¦  «        }tG          dt          ‰1¦  «        z   |z    !                    d¦  «        ¦  «         tI          j%        ddt          ‰1¦  «        ¦  «        }t          |tH          j&        ¦  «        r(| '                    |¦  «        sJ |›d |›d!‰›�¦   «         ‚ntQ          |||›d"|›d!‰›�¦  «         |�R|r-‰1 )                    |d¬#¦  «        Š2tQ          ‰2j*        |¦  «         n#tQ          ‰1 +                    |¦  «        |¦  «         |	��|rF‰1 )                    |d¬#¦  «        Š2tQ          tY          ˆ2fd$„‰2j-        D ¦   «         ¦  «        |	¦  «         nE‰1 +                    |d¬#¦  «        Š4tQ          tY          ˆ4fd%„‰1j-        D ¦   «         ¦  «        |	¦  «         |
�tQ          ‰1j.        |
¦  «         |�!tQ          ˆ1fd&„‰1j/        D ¦   «         |¦  «         |�!tQ          ˆ1fd'„‰1j0        D ¦   «         |¦  «         |�rêt          ‰1dd ¦  «        �rÚˆfd(„}  | d)d¦  «        }! |j        d7d|!i|¤Ž}"tI          j%        ddt          |"¦  «        ¦  «        } | dd¦  «        }# |j        d7d|#i|¤Ž}$t#          |$j-        ¦  «        }%|$j1        }&|$j0        |$j/        z  D ]!}'|$j2        |'         Š3‰3|%v rˆ3fd*„|%D ¦   «         }%Œ"g Š5tg          t"          ¦  «        }(|%D ]›})	 |)|(v r|(|)         d+         }*nd}*|& 4                    |)|)¦  «        }+| 5                    d,|+›d-�|*¦  «        d.z   },‰5 6                    |,¦  «         |(|)          6                    |,¦  «         Œ|# tn          $ r d/|)›d0|›�}-J |-¦   «         ‚w xY wtq          ˆ5fd1„ts          d2tu          ‰5¦  «        ¦  «        D ¦   «         ¦  «        }.d3„ tw          ty          ‰5|%¦  «        ¦  «        D ¦   «         }/d4|%›d5|/›d6|›�}-t{          |.|-¦  «         d S d S d S )8NÚ__dialect__r   Údefault_qmarkÚqmarkÚdefault_enhancedÚschema_translate_mapÚcolumn_keysTÚliteral_bindsÚrender_postcompileÚ"use_literal_execute_for_simple_intÚfor_executemanyÚrender_schema_translateÚassert_from_lintingFÚlintingr   )ÚormÚcompile_kwargsc                  ó   — e Zd Zd„ ZdS )ú5AssertsCompiledSQL.assert_compile.<locals>.DontAccessc                ó    — t          d¦  «        ‚)Nz=compiler accessed .statement; use compiler.current_executable)ÚNotImplementedError)ÚselfÚkeys     r    Ú__getattribute__zFAssertsCompiledSQL.assert_compile.<locals>.DontAccess.__getattribute__Z  s   € Ý)ð2ñô ð r"   N)rÙ   rÚ   rÛ   r  r;   r"   r    Ú
DontAccessr  Y  s#   € € € € € ðð ð ð ð r"   r  c                  óH   •— e Zd Zd„ Zed„ ¦   «         Zd„ Zd„ Zd„ Zˆ fd„Z	dS )ú>AssertsCompiledSQL.assert_compile.<locals>.CheckCompilerAccessc                ó$  — || _         i | _        t          |dd¦  «        | _        | j        rb|j        | _        t          |d¦  «        r|j        | _        t          |d¦  «        r|j        | _        t          |d¦  «        r|j        | _        d S d S d S )NÚsupports_executionFÚ
_returningÚ_inlineÚ_return_defaults)	Útest_statementÚ_annotationsÚgetattrr  Ú_execution_optionsÚhasattrr  r  r  )r  r  s     r    Ú__init__zGAssertsCompiledSQL.assert_compile.<locals>.CheckCompilerAccess.__init__a  s»   € Ø&4�Ô#Ø$&�Ô!Ý*1Ø"Ð$8¸%ñ+ô +�Ô'ð Ô*ð PØ.<Ô.O�DÔ+å˜~¨|Ñ<Ô<ð DØ*8Ô*C˜œÝ˜~¨yÑ9Ô9ð >Ø'5Ô'=˜œÝ˜~Ð/AÑBÔBð PØ0>Ô0O˜Ô-Ð-Ð-ðPð PðPð Pr"   c                ó   — | j         j        S r6   )r  Ú_variant_mapping©r  s    r    r  zOAssertsCompiledSQL.assert_compile.<locals>.CheckCompilerAccess._variant_mappingr  s   € àÔ*Ô;Ð;r"   c                ó4   — | j                              ¦   «         S r6   )r  Ú_default_dialectr  s    r    r  zOAssertsCompiledSQL.assert_compile.<locals>.CheckCompilerAccess._default_dialectv  s   € ØÔ*×;Ò;Ñ=Ô=Ð=r"   c                ó6   —  | j         j        j        | fd|i|¤ŽS )NÚdialect)r  rP   Ú__func__©r  r  r   s      r    rP   zFAssertsCompiledSQL.assert_compile.<locals>.CheckCompilerAccess.compiley  s7   € Ø;�tÔ*Ô2Ô;Øðð Ø")ðØ-/ðð ð r"   c                ó4   —  | j         j        j        | |fi |¤ŽS r6   )r  Ú	_compilerr  r  s      r    r  zHAssertsCompiledSQL.assert_compile.<locals>.CheckCompilerAccess._compiler~  s1   € Ø=�tÔ*Ô4Ô=Ø˜'ðð Ø%'ðð ð r"   c                óö   •— t          |d¦  «        rVt          j                             |d ‰¦   «         ¦  «        5   | j        j        |fi |¤Žcd d d ¦  «         S # 1 swxY w Y   d S  | j        j        |fi |¤ŽS )NÚ	statement)r  r   ru   Úobjectr  Ú_compiler_dispatch)r  ÚcompilerrÊ   r  s      €r    r#  zQAssertsCompiledSQL.assert_compile.<locals>.CheckCompilerAccess._compiler_dispatchƒ  só   ø€ Ý˜8 [Ñ1Ô1ð 
Ýœ×*Ò*Ø  +¨z¨z©|¬|ñô ð ð ð  F˜tÔ2ÔEØ$ð ð  Ø(.ð ð  ðð ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð ð ð B˜4Ô.ÔAØ ðð Ø$*ðð ð s   »AÁAÁ"AN)
rÙ   rÚ   rÛ   r  Úpropertyr  r  rP   r  r#  )r  s   €r    ÚCheckCompilerAccessr	  `  sˆ   ø€ € € € € ðPð Pð Pð" ð<ð <ñ ŒXð<ð>ð >ð >ðð ð ð
ð ð ð
ð ð ð ð ð ð r"   r&  r  ÚparamsrÝ   ÚasciiÚignorez
SQL String:
z[\n\t]r³   r‡   z on dialect r�   )Úescape_namesc                ó*   •— g | ]}‰j         |         ‘ŒS r;   )Ú
parameters)rS   ÚxÚexpanded_states     €r    rU   z5AssertsCompiledSQL.assert_compile.<locals>.<listcomp>¼  s1   ø€ ð ð ð à !ð +Ô5°aÔ8ðð ð r"   c                ó    •— g | ]
}‰|         ‘ŒS r;   r;   )rS   r-  Úps     €r    rU   z5AssertsCompiledSQL.assert_compile.<locals>.<listcomp>Å  s   ø€ Ð7Ð7Ð7 A˜1˜Qœ4Ð7Ð7Ð7r"   c                ó6   •— i | ]}‰j         |         |j        “ŒS r;   ©Ú
bind_namesÚeffective_value©rS   r‰   Úcs     €r    ú
<dictcomp>z5AssertsCompiledSQL.assert_compile.<locals>.<dictcomp>Ê  ó4   ø€ ð ð ð àð ”L ”O QÔ%6ðð ð r"   c                ó6   •— i | ]}‰j         |         |j        “ŒS r;   r2  r5  s     €r    r7  z5AssertsCompiledSQL.assert_compile.<locals>.<dictcomp>Ò  r8  r"   c                óB   •— t          ‰¦  «        }| |_        ||_        |S r6   )r   Ú
paramstyleÚ
positional)r;  r<  Úcpr  s      €r    Úget_dialectz6AssertsCompiledSQL.assert_compile.<locals>.get_dialectÚ  s!   ø€ Ý˜'‘]”]�Ø *�”Ø *�”Ø�	r"   Úpyformatc                ó    •— g | ]
}|‰k    ¯|‘ŒS r;   r;   )rS   ÚvÚnames     €r    rU   z5AssertsCompiledSQL.assert_compile.<locals>.<listcomp>î  s   ø€ Ð=Ð=Ð= A°1¸²9°9˜a°9°9°9r"   éÿÿÿÿz%(z)sr   zExpected to find bindparam z in c              3  óB   •K  — | ]}‰|d z
           ‰|         k     V — ŒdS )r   Nr;   )rS   ÚiÚ	positionss     €r    rn   z4AssertsCompiledSQL.assert_compile.<locals>.<genexpr>ÿ  sI   øè è € ð ð àð ˜!˜a™%Ô  9¨Q¤<Ò/ðð ð ð ð ð r"   r   c                ó   — g | ]\  }}|‘ŒS r;   r;   )rS   Ú_rA  s      r    rU   z5AssertsCompiledSQL.assert_compile.<locals>.<listcomp>  s   € ÐEÐEÐE™d˜a ˜ÐEÐEÐEr"   zOrder of parameters z+ does not match the order in the statement z. Statement r;   )>r   ÚDefaultDialectÚsupports_default_valuesÚsupports_default_metavalueÚsupports_native_booleanr  r	   r'   r  ÚStrCompileDialectr$   r%   r   ÚURLÚcreater>  Údefault_schema_namero   r   ÚFROM_LINTINGÚ
sqlalchemyrþ   ÚQueryÚ_statement_20r   Ú_label_stylerP   ÚsqltypesÚ
TypeEngineÚ_static_cache_keyÚhashÚ_generate_cache_keyÚreprrä   Údecoderã   rO   rµ   ÚPatternrc   r�   Úconstruct_expanded_stater,  Úconstruct_paramsÚtupleÚpositiontupÚprefetchÚliteral_execute_paramsÚpost_compile_paramsÚescaped_bind_namesr3  r   ÚgetÚindexÚappendÚ
ValueErrorÚallÚrangeÚlenÚsortedÚzipr¤   )6r  ÚclauseÚresultr'  Úcheckparamsrú   Úcheck_literal_executeÚcheck_post_paramr  ÚcheckpositionalÚcheck_prefetchÚuse_default_dialectÚallow_dialect_selectrJ  rL  rK  r÷   rø   rõ   rû   rP  Úfrom_lintingÚcheck_param_orderrù   r   rÿ   rþ   Ústmtr&  Úcache_key_no_warningsÚ	param_strÚccr>  Úpyformat_dialectÚ
pyformat_cÚqmark_dialectÚqmark_cÚvaluesÚescapedÚ
post_paramÚpos_by_valuerA  ÚstartÚescÚposrT   Úorderedr�   r  r6  r.  rB  r0  rF  s6           `                                       @@@@@@r    Úassert_compilez!AssertsCompiledSQL.assert_compileþ  s±  øøøøøøø€ ð4 ð 	BÝÔ,Ñ.Ô.ˆGØ.EˆGÔ+Ø1KˆGÔ.Ø.EˆGÔ+Ð+Ø!ð 	BØˆGˆGàˆÝ! $¨°tÑ<Ô<�àˆÝ œ)Ô+��Ø˜IÒ%Ð%¨°OÒ)CÐ)CØ˜iÒ'Ð'Ý%Ô4Ñ6Ô6�G�Gå%Ô4°WÑ=Ô=�GØ2I�Ô/Ø5O�Ô2Ð2ØÐ.Ò.Ð.Ý!Ô3Ñ5Ô5��Ý˜G¥SÑ)Ô)ð BÝœ'Ÿ.š.¨Ñ1Ô1×=Ò=Ñ?Ô?ÑAÔA�àð 	>Ø*=ˆGÔ'àˆØˆàð 	>Ø)=ˆBÐ%Ñ&àÐÝ $ V¡¤ˆBˆ}Ñàð 	3Ø.2ˆN˜?Ñ+àð 	8Ø37ˆNÐ/Ñ0à-ð 	HØCGˆNÐ?Ñ@àð 	)Ø$(ˆBÐ Ñ!à"ð 	1Ø,0ˆBÐ(Ñ)àð 	-�7 4Ð)>ÀÑFÔFð 	-ÝÔ,ˆBˆy‰Mà"Ð"Ð"Ð"Ð"Ð"å�f˜cœiÑ(Ô(ð 	Ø×'Ò'Ñ)Ô)ˆDÝ >ˆDÔØˆFàð 	2Ø#1ˆBÐÑ ð	ð 	ð 	ð 	ð 	ñ 	ô 	ð 	ð.	ð .	ð .	ð .	ð .	ð .	ð .	ñ .	ô .	ð .	ðf 0ÐÐ Ñ'Ô'Ô/ÐFÐF¸ÐFÀ2ÐFÐFˆå�f�hÔ1Ñ2Ô2ð 	/Ø$*Ô$<Ð!Ø$ð ,ÝÐ*Ñ+Ô+Ð+øà$*×$>Ò$>Ñ$@Ô$@Ð!Ø$ð /ÝÐ*¨1Ô-Ñ.Ô.Ð.å�  H¨bÑ1Ô1Ñ2Ô2ˆ	Ø×$Ò$ WÑ-Ô-×4Ò4°W¸hÑGÔGˆ	ÝÐ ¥3 q¡6¤6Ñ)¨IÑ5×=Ò=¸gÑFÔFÑGÔGÐGåŒV�I˜r¥3 q¡6¤6Ñ*Ô*ˆå�f�bœjÑ)Ô)ð 	NØ—<’< Ñ#Ô#ð ð Ø��Ø��Ø�ð&ñ ô ð ð õ ��F¸¸¸¸F¸F¸FÀGÀGÐLÑMÔMÐMàÐ"Ø!ð =Ø!"×!;Ò!;Ø¨ð "<ñ "ô "�õ �NÔ-¨{Ñ;Ô;Ð;Ð;å�A×&Ò& vÑ.Ô.°Ñ<Ô<Ð<ØÐ&Ø!ð KØ!"×!;Ò!;Ø¨ð "<ñ "ô "�õ Ýðð ð ð à%3Ô%?ðñ ô ñô ð $ñô ð ð ð ×&Ò& v¸EÐ&ÑBÔB�Ý•EÐ7Ð7Ð7Ð7¨¬Ð7Ñ7Ô7Ñ8Ô8¸/ÑJÔJÐJØÐ%Ý�”
˜NÑ+Ô+Ð+Ø Ð,Ýðð ð ð àÔ5ðñ ô ð &ñô ð ð Ð'Ýðð ð ð àÔ2ðñ ô ð !ñô ð ð ñ 3	"¥¨¨H°dÑ!;Ô!;ñ 3	"ðð ð ð ð ð  +˜{¨:°uÑ=Ô=ÐØ'˜œÐGÐGÐ0@ÐGÀBÐGÐGˆJÝ”6˜) R­¨Z©¬Ñ9Ô9ˆDà'˜K¨°Ñ6Ô6ˆMØ$�f”nÐAÐA¨]ÐA¸bÐAÐAˆGÝ˜'Ô-Ñ.Ô.ˆFØÔ0ˆGð Ô+¨gÔ.LÑLð>ð >�
ð Ô)¨*Ô5�Ø˜6�>�>Ø=Ð=Ð=Ð=¨Ð=Ñ=Ô=�FøØˆIÝ&¥tÑ,Ô,ˆLØð &ð &�ð&Ø˜LÐ(Ð(Ø ,¨Q¤°Ô 3˜˜à !˜Ø!Ÿ+š+ a¨Ñ+Ô+�CØŸ*š*˜*°#°#°#Ð%7¸Ñ?Ô?À!ÑC�CØ×$Ò$ SÑ)Ô)Ð)Ø  ”O×*Ò*¨3Ñ/Ô/Ð/Ð/øÝ!ð &ð &ð &ð &ØCDÀ1À1ÀdÀdÐK�CØ% #Ñ%Ô%Ð%ð&øøøõ ð ð ð ð å˜q¥# i¡.¤.Ñ1Ô1ðñ ô ñ ô ˆGð
 FÐE¥f­S°¸FÑ-CÔ-CÑ&DÔ&DÐEÑEÔEˆHˆHð 8>°v°v¸x¸x¸xÈÈðOð õ
 �G˜SÑ!Ô!Ð!Ð!Ð!ðg3	"ð 3	"ð 3	"ð 3	"s   Õ&A8W×W<)NNFNNNNNFFTFTFFNFNFTF)rÙ   rÚ   rÛ   rŠ  r;   r"   r    rï   rï   ý  so   € € € € € ð
 ØØØ"ØØØØØ!Ø"Ø $Ø %Ø#'ØØ Ø!Ø %Ø ØØØ+0ð1M"ð M"ð M"ð M"ð M"ð M"r"   rï   c                  ó    — e Zd Z	 	 dd„Zd„ ZdS )ÚComparesTablesFTc                ó   — t          |j        ¦  «        t          |j        ¦  «        k    sJ ‚t          |j        |j        ¦  «        D �]b\  }}t          |j        |j        ¦  «         ||j        |j                 u sJ ‚|r4t          |j        |j        ¦  «         t          |j        |j        ¦  «         |rCd}t          |j        t          |j        ¦  «        ¦  «        sJ ||j        |j        fz  ¦   «         ‚n|  	                    ||¦  «         t          |j        t          j        ¦  «        r$t          |j        j        |j        j        ¦  «         |r.t          d„ |j        D ¦   «         d„ |j        D ¦   «         ¦  «         |j        r!t          |j        t          j        ¦  «        sJ ‚�Œd|rOt          |j        ¦  «        t          |j        ¦  «        k    sJ ‚|j        D ]}|j        j        |j                 €J ‚Œd S d S )Nz)Type '%s' doesn't correspond to type '%s'c                ó&   — h | ]}|j         j        ’ŒS r;   ©ÚcolumnrB  ©rS   Úfs     r    ú	<setcomp>z5ComparesTables.assert_tables_equal.<locals>.<setcomp>-  s   € Ð;Ð;Ð; q�Q”X”]Ð;Ð;Ð;r"   c                ó&   — h | ]}|j         j        ’ŒS r;   r�  r‘  s     r    r“  z5ComparesTables.assert_tables_equal.<locals>.<setcomp>.  s   € ÐEÐEÐE q�Q”X”]ÐEÐEÐEr"   )rl  r6  rn  r�   rB  Úprimary_keyÚnullabler$   r`   Úassert_types_baserV  ÚStringÚlengthÚforeign_keysÚserver_defaultr   ÚFetchedValueÚcolumns)r  ÚtableÚreflected_tableÚstrict_typesÚstrict_constraintsr6  Úreflected_crT   s           r    Úassert_tables_equalz"ComparesTables.assert_tables_equal  s@  € õ �5”7‰|Œ|�s ?Ô#4Ñ5Ô5Ò5Ð5Ð5Ð5Ý! %¤'¨?Ô+<Ñ=Ô=ð 	ñ 	‰NˆAˆ{Ý�”˜Ô(Ñ)Ô)Ð)Ø /Ô"3°A´FÔ";Ð;Ð;Ð;Ð;à!ð 6Ý�A”M ;Ô#:Ñ;Ô;Ð;Ý�A”J Ô 4Ñ5Ô5Ð5àð 7ØA�Ý! +Ô"2µD¸¼±L´LÑAÔAð ð À3ØÔ$Ø”FðJñ Dñ ô ð ð ð
 ×&Ò& {°AÑ6Ô6Ð6å˜!œ&¥(¤/Ñ2Ô2ð <Ý�A”F”M ;Ô#3Ô#:Ñ;Ô;Ð;à!ð ÝØ;Ð;¨A¬NÐ;Ñ;Ô;ØEÐE¨KÔ,DÐEÑEÔEñô ð ð Ôð Ý!ØÔ.µÔ0Cñô ð ð ð ùð ð 	OÝ�uÔ(Ñ)Ô)­S°Ô1LÑ-MÔ-MÒMÐMÐMÐMØÔ&ð Oð O�Ø&Ô2Ô:¸1¼6ÔBÐNÐNÐNÐNð	Oð 	OðOð Or"   c                óŠ   — |j                              |j         ¦  «        s#J d|j        ›d|j         ›d|j         ›d�¦   «         ‚d S )Nz
On column z, type 'z' doesn't correspond to type 'ú')r`   Ú_compare_type_affinityrB  )r  Úc1Úc2s      r    r—  z ComparesTables.assert_types_base:  sf   € ØŒw×-Ò-ØŒGñ
ô 
ð 	
ð 	
ð 	
ð ŒGˆGˆGØŒGˆGˆGØŒGˆGˆGð
ñ	
ô 	
ð 	
ð 	
ð 	
r"   N)FT)rÙ   rÚ   rÛ   r£  r—  r;   r"   r    rŒ  rŒ    sD   € € € € € ð
 Øð)Oð )Oð )Oð )OðV
ð 
ð 
ð 
ð 
r"   rŒ  c                  ó†   — e Zd Zd„ Zd„ Zd„ Zd„ Zdd„Zd„ Zd„ Z	d	„ Z
ej        d
„ ¦   «         Zd„ Zej        d„ ¦   «         ZdS )ÚAssertsExecutionResultsc                óŠ   — t          |¦  «        }t          t          |¦  «        ¦  «         |                      |||¦  «         d S r6   )ro   rã   r[  Úassert_list)r  rp  Úclass_Úobjectss       r    Úassert_resultz%AssertsExecutionResults.assert_resultE  s?   € Ý�f‘”ˆÝ�d�6‰lŒlÑÔÐØ×Ò˜ ¨Ñ1Ô1Ð1Ð1Ð1r"   c                ó  — |                       t          |¦  «        t          |¦  «        k    d|j        z   ¦  «         t          dt          |¦  «        ¦  «        D ]%}|                      |||         ||         ¦  «         Œ&d S )Nz9result list is not the same size as test list, for class r   )r-   rl  rÙ   rk  Ú
assert_row)r  rp  r­  Úlist_rE  s        r    r¬  z#AssertsExecutionResults.assert_listJ  s‡   € Ø�ŠÝ�‰KŒK�3˜u™:œ:Ò%ðàŒoññ	
ô 	
ð 	
õ �q�#˜e™*œ*Ñ%Ô%ð 	9ð 	9ˆAØ�OŠO˜F F¨1¤I¨u°Q¬xÑ8Ô8Ð8Ð8ð	9ð 	9r"   c                ó:  — |                       |j        |u dt          |¦  «        z   ¦  «         |                     ¦   «         D ]Ø\  }}t	          |t
          ¦  «        rt	          |d         t          ¦  «        r2|                      t          ||¦  «        |d         |d         ¦  «         Œg|  	                    |d         t          ||¦  «        |d         ¦  «         Œ™|                       t          ||¦  «        |k    d|›dt          ||¦  «        ›d|›�¦  «         ŒÙd S )Nzitem class is not r   r   z
attribute z value z does not match )
r-   Ú	__class__r[  Úitemsr$   r`  ro   r¬  r  r±  )r  r­  ÚrowobjÚdescr  Úvalues         r    r±  z"AssertsExecutionResults.assert_rowT  s+  € Ø�ŠØÔ Ð&Ð(<½tÀF¹|¼|Ñ(Kñ	
ô 	
ð 	
ð Ÿ*š*™,œ,ð 	ð 	‰JˆC�Ý˜%¥Ñ'Ô'ð 
Ý˜e Aœh­Ñ-Ô-ð NØ×$Ò$¥W¨V°SÑ%9Ô%9¸5À¼8ÀUÈ1ÄXÑNÔNÐNÐNà—O’O E¨!¤H­g°f¸cÑ.BÔ.BÀEÈ!ÄHÑMÔMÐMÐMà—’Ý˜F CÑ(Ô(¨EÒ1Ð1à�s�s�G F¨CÑ0Ô0Ð0Ð0°%°%ð9ñô ð ð ð	ð 	r"   c           	     óp  ‡ ‡‡	‡
—  G d„ dt           ¦  «        Š
t          j        |¦  «        }ˆ
fd„|D ¦   «         }t          ˆfd„|¦  «        D ]/}t	          dt          |¦  «        j        ›d‰j        ›d�¦  «         Œ0t          |¦  «        t          |¦  «        k    r0t	          dt          |¦  «        ›dt          |¦  «        ›d�¦  «         t          ¦   «         Š	ˆ	ˆ fd	„}|D ]R}|D ]%} |||¦  «        r| 	                    |¦  «          n)Œ&t	          d
‰j        ›dt          |¦  «        ›d�¦  «         ŒSdS )zÉAs assert_result, but the order of objects is not considered.

        The algorithm is very expensive but not a big deal for the small
        numbers of rows that the test suite manipulates.
        c                  ó   — e Zd Zd„ ZdS )úFAssertsExecutionResults.assert_unordered_result.<locals>.immutabledictc                ó    — t          | ¦  «        S r6   )Úidr  s    r    Ú__hash__zOAssertsExecutionResults.assert_unordered_result.<locals>.immutabledict.__hash__m  s   € Ý˜$‘x”x�r"   N)rÙ   rÚ   rÛ   r¾  r;   r"   r    Úimmutabledictr»  l  s#   € € € € € ð ð  ð  ð  ð  r"   r¿  c                ó&   •— h | ]} ‰|¦  «        ’ŒS r;   r;   )rS   Úer¿  s     €r    r“  zBAssertsExecutionResults.assert_unordered_result.<locals>.<setcomp>q  s#   ø€ Ð7Ð7Ð7¨�M�M !Ñ$Ô$Ð7Ð7Ð7r"   c                ó$   •— t          | ‰¦  «        S r6   r–   )ÚoÚclss    €r    ú<lambda>zAAssertsExecutionResults.assert_unordered_result.<locals>.<lambda>s  s   ø€ ­:°a¸Ñ+=Ô+=€ r"   zUnexpected type "z", expected "ú"zUnexpected object count "c                ó  •— |                      ¦   «         D ]o\  }}t          |t          ¦  «        r=	  ‰j        t	          | |¦  «        |d         g|d         ¢R Ž  ŒE# t
          $ r Y  dS w xY wt	          | |‰¦  «        |k    r dS ŒpdS )Nr   r   FT)rµ  r$   r`  Úassert_unordered_resultr  rZ   )Úobjr(   r  r¸  ÚNOVALUEr  s       €€r    Ú_compare_itemzFAssertsExecutionResults.assert_unordered_result.<locals>._compare_item�  sÅ   ø€ Ø"Ÿjšj™lœlð 
%ð 
%‘
��UÝ˜e¥UÑ+Ô+ð 	%ð%Ø4˜Ô4Ý# C¨Ñ-Ô-¨u°Q¬xðØ:?À¼(ðð ð ð ð øõ *ð %ð %ð %Ø$˜u˜u˜uð%øøøõ ˜s C¨Ñ1Ô1°UÒ:Ð:Ø$˜u˜uð ;à�4s   ±)AÁ
A*Á)A*z	Expected z instance with attributes z not found.T)Údictr   ÚIdentitySetr   r   r`   rÙ   rl  r"  Úremover[  )r  rp  rÄ  r�   ÚfoundÚwrongrË  Úexpected_itemÚ
found_itemrÊ  r¿  s   ` `      @@r    rÈ  z/AssertsExecutionResults.assert_unordered_resulte  s¶  øøøø€ ð	 ð 	 ð 	 ð 	 ð 	 �Dñ 	 ô 	 ð 	 õ Ô  Ñ(Ô(ˆØ7Ð7Ð7Ð7¨hÐ7Ñ7Ô7ˆå Ð!=Ð!=Ð!=Ð!=¸uÑEÔEð 	ð 	ˆEÝˆDå˜‘;”;Ô'Ð'Ð'¨¬¨¨ð7ñô ð ð õ
 ˆu‰:Œ:�˜X™œÒ&Ð&ÝˆDå�u‘:”:�:�:�s 8™}œ}˜}˜}ð.ñô ð õ
 ‘(”(ˆð	ð 	ð 	ð 	ð 	ð 	ð &ð 		ð 		ˆMØ#ð ð �
Ø �= ¨]Ñ;Ô;ð Ø—L’L Ñ,Ô,Ð,Ø�Eðõ �à”|�|�|¥T¨-Ñ%8Ô%8Ð%8Ð%8ð:ñô ð øð ˆtr"   Nc                ó:   — |€ddl m} t          j        |¦  «        S )Nr   )r'   )r³   r'   r   Úassert_engine)r  r'   s     r    Úsql_execution_asserterz.AssertsExecutionResults.sql_execution_asserter›  s*   € Øˆ:Ø"Ð"Ð"Ð"Ð"Ð"åÔ& rÑ*Ô*Ð*r"   c                óˆ   — |                       |¦  «        5 } |¦   «         }d d d ¦  «         n# 1 swxY w Y    |j        |Ž  |S r6   ©rÕ  r-   )r  r'   rÃ   ÚrulesÚasserterrp  s         r    Úassert_sql_executionz,AssertsExecutionResults.assert_sql_execution¡  sˆ   € Ø×(Ò(¨Ñ,Ô,ð 	!°Ø�Y‘[”[ˆFð	!ð 	!ð 	!ñ 	!ô 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!øøøð 	!ð 	!ð 	!ð 	!àˆÔ˜%Ð Ð Øˆs   –-­1´1c                óô   — g }|D ]e}t          |t          ¦  «        r+t          j        d„ |                     ¦   «         D ¦   «         Ž }nt          j        |Ž }|                     |¦  «         Œf | j        ||g|¢R Ž S )Nc                ó>   — g | ]\  }}t          j        ||¦  «        ‘ŒS r;   )r   ÚCompiledSQL)rS   ÚkrA  s      r    rU   z6AssertsExecutionResults.assert_sql.<locals>.<listcomp>¬  s)   € ÐKÐKÐK±d°a¸•iÔ+¨A¨qÑ1Ô1ÐKÐKÐKr"   )r$   rÌ  r   ÚAllOfrµ  rÝ  rh  rÚ  )r  r'   rÃ   rØ  ÚnewrulesÚruleÚnewrules          r    Ú
assert_sqlz"AssertsExecutionResults.assert_sql§  s�   € ØˆØð 	%ð 	%ˆDÝ˜$¥Ñ%Ô%ð 7Ý#œ/ØKÐK¸d¿jºj¹l¼lÐKÑKÔKð��õ $Ô/°Ð6�Ø�OŠO˜GÑ$Ô$Ð$Ð$à(ˆtÔ(¨¨YÐB¸ÐBÐBÐBÐBr"   c                óT   — |                       ||t          j        |¦  «        ¦  «        S r6   )rÚ  r   ÚCountStatements)r  r'   rÃ   Úcounts       r    Úassert_sql_countz(AssertsExecutionResults.assert_sql_count´  s,   € Ø×(Ò(Ø�	�9Ô4°UÑ;Ô;ñ
ô 
ð 	
r"   c              '  ó€   K  — |                       |¦  «        5 }d V — d d d ¦  «         n# 1 swxY w Y    |j        |Ž  d S r6   r×  )r  r'   rØ  rÙ  s       r    Úassert_executionz(AssertsExecutionResults.assert_execution¹  s‹   è è € à×(Ò(¨Ñ,Ô,ð 	°ØˆEˆEˆEð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	àˆÔ˜%Ð Ð Ð Ð s   ˜)©-°-c                óR   — |                       |t          j        |¦  «        ¦  «        S r6   )ré  r   rå  )r  r'   ræ  s      r    Úassert_statement_countz.AssertsExecutionResults.assert_statement_count¿  s#   € Ø×$Ò$ R­Ô)BÀ5Ñ)IÔ)IÑJÔJÐJr"   c              #  ó  ‡ K  — ˆ fd„t          ||¦  «        D ¦   «         }g }|D ]-\  }}}|                     |                     ¦   «         ¦  «         Œ.	 d V — t          ||¦  «        D ]G\  }\  }}}|                     d d d ¦  «         |                     t          j        |¦  «        ¦  «         ŒHd S # t          ||¦  «        D ]G\  }\  }}}|                     d d d ¦  «         |                     t          j        |¦  «        ¦  «         ŒHw xY w)Nc                óF   •— g | ]\  }}‰                      |¦  «        ||f‘ŒS r;   )rÕ  )rS   r'   ræ  r  s      €r    rU   zKAssertsExecutionResults.assert_statement_count_multi_db.<locals>.<listcomp>Ä  sB   ø€ ð 
ð 
ð 
á��Uð ×(Ò(¨Ñ,Ô,¨b°%Ð8ð
ð 
ð 
r"   )rn  rh  Ú	__enter__Ú__exit__r-   r   rå  )	r  ÚdbsÚcountsÚrecsÚ	assertersÚctxr'   ræ  rÙ  s	   `        r    Úassert_statement_count_multi_dbz7AssertsExecutionResults.assert_statement_count_multi_dbÂ  sV  øè è € ð
ð 
ð 
ð 
å" 3¨Ñ/Ô/ð
ñ 
ô 
ˆð ˆ	Ø"ð 	.ð 	.‰NˆC��UØ×Ò˜SŸ]š]™_œ_Ñ-Ô-Ð-Ð-ð	CØˆEˆEˆEå.1°)¸TÑ.BÔ.Bð Cð CÑ*�Ñ*˜3  EØ—’˜T 4¨Ñ.Ô.Ð.Ø× Ò ¥Ô!:¸5Ñ!AÔ!AÑBÔBÐBÐBðCð Cø­c°)¸TÑ.BÔ.Bð Cð CÑ*�Ñ*˜3  EØ—’˜T 4¨Ñ.Ô.Ð.Ø× Ò ¥Ô!:¸5Ñ!AÔ!AÑBÔBÐBÐBðCøøøs   ÁB1 Â1ADr6   )rÙ   rÚ   rÛ   r¯  r¬  r±  rÈ  rÕ  rÚ  rã  rç  Ú
contextlibÚcontextmanagerré  rë  rõ  r;   r"   r    rª  rª  D  sê   € € € € € ð2ð 2ð 2ð
9ð 9ð 9ðð ð ð"4ð 4ð 4ðl+ð +ð +ð +ðð ð ðCð Cð Cð
ð 
ð 
ð
 Ôð!ð !ñ Ôð!ð
Kð Kð Kð ÔðCð Cñ ÔðCð Cð Cr"   rª  c                  ó   — e Zd Zd	d„ZdS )
ÚComparesIndexesrž  úschema.Tabler�   ro   Údialect_namer%   c                óB  — t          t          |j        ¦  «        t          |¦  «        ¦  «         d„ |j        D ¦   «         }|D �]Z}||d                  }t          |j        |d         ¦  «         d„ |d         D ¦   «         }t          t          |j        ¦  «        t          |¦  «        ¦  «         |D ]}t          ||j        v ¦  «         Œ|                     d¦  «        }	|	rit          t          |j        ¦  «        t          |	¦  «        ¦  «         t          |j        |	|d         ¦  «        D ]\  }
}}|€t          |
j	        |¦  «         Œ|                     d¦  «        r=|› d�|d         v r0t          |j
        |         d	         |d         |› d�         ¦  «         �Œ\d S )
Nc                ó   — i | ]
}|j         |“ŒS r;   )rB  )rS   Úidxs     r    r7  zEComparesIndexes.compare_table_index_with_expected.<locals>.<dictcomp>Ø  s   € Ð;Ð;Ð; c�C”H˜cÐ;Ð;Ð;r"   rB  Úuniquec                ó   — g | ]}|®|‘ŒS r6   r;   )rS   r6  s     r    rU   zEComparesIndexes.compare_table_index_with_expected.<locals>.<listcomp>Ü  s   € ÐDÐDÐD˜!°a°m�A°m°m°mr"   Úcolumn_namesÚexpressionsÚdialect_optionsÚ_includeÚinclude)r�   rl  Úindexesrÿ  r�  r¤   rf  r  rn  Útextr  )r  rž  r�   rû  Úidx_dictÚexprþ  Úcolsr6  ÚexprsÚidx_expÚexprÚcols                r    Ú!compare_table_index_with_expectedz1ComparesIndexes.compare_table_index_with_expectedÔ  s¿  € õ 	�C�”ÑÔ¥ H¡¤Ñ.Ô.Ð.Ø;Ð;¨U¬]Ð;Ñ;Ô;ˆØð 	ñ 	ˆCØ˜3˜vœ;Ô'ˆCÝ�”
˜C œMÑ*Ô*Ð*ØDÐD˜s >Ô2ÐDÑDÔDˆDÝ•�C”KÑ Ô ¥# d¡)¤)Ñ,Ô,Ð,Øð *ð *�Ý˜˜Sœ[Ð(Ñ)Ô)Ð)Ð)Ø—G’G˜MÑ*Ô*ˆEØð 0Ý•C˜œÑ(Ô(­#¨e©*¬*Ñ5Ô5Ð5Ý*-Ø”O U¨C°Ô,?ñ+ô +ð 0ð 0Ñ&�G˜T 3ð �{Ý˜GœL¨$Ñ/Ô/Ð/øà—’Ð)Ñ*Ô*ðà#Ð-Ð-Ð-°Ð5FÔ1GÐGÐGåØÔ'¨Ô5°iÔ@ØÐ)Ô*¨lÐ+DÐ+DÐ+DÔEñô ð ùð'	ð 	r"   N)rž  rú  r�   ro   rû  r%   )rÙ   rÚ   rÛ   r  r;   r"   r    rù  rù  Ó  s(   € € € € € ðð ð ð ð ð r"   rù  )TFT)TFTFFr^   r6   )NF)T)RÚ
__future__r   Úcollectionsr   rö  r   Ú	itertoolsr   rO   rà   rX   r³   r   r	   r
   r   Ú
exclusionsr   r   r   r   r   r   r   r   rV  Úenginer   r   Úsql.selectabler   r   r!   r÷  r)   r4   r8   r<   r?   rC   rF   rp   rq   r_   r   rK   ry   rx   r…   r‹   r�   r’   r”   r—   r�   r    r¤   r¦   r›   rŸ   Úis_not_r«   r­   Únot_in_r±   r¶   r»   rÄ   rÆ   rË   rÎ   rÐ   rÒ   rÀ   rØ   rÔ   rë   rí   rï   rŒ  rª  rù  r;   r"   r    ú<module>r     s°  ðð #Ð "Ð "Ð "Ð "Ð "à #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ø 	€	€	€	Ø 
€
€
€
Ø €€€à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø Ð Ð Ð Ð Ð ðHð Hð Hð  Ôðð ñ Ôðð ð ð ð ð ð ðð ð ðð ð ðð ð ð(ð ð ð0 €Ø€Ø€ð ØØðð ð ð ð. Ôð ØØØ!Ø ðPð Pð Pñ ÔðPðf(ð (ð (ð/ð /ð /ðð ð ð=ð =ð =ð =ð.ð .ð .ð .ð
.ð .ð .ð .ð
.ð .ð .ð .ð
Kð Kð Kð Kðð ð ð ðð ð ð ð ð  ð  ð  ð!ð !ð !ð !ð2ð 2ð 2ð 2ð
2ð 2ð 2ð 2ð €ð2ð 2ð 2ð 2ð
5ð 5ð 5ð 5ð €ðð ð ð ð.ð .ð .ð .ð
ð 
ð 
ð*Oð Oð Oð;ð ;ð ;ðð ð ð
*ð 
*ð 
*ð*ð *ð *ð(Hð Hð Hð BGðð ð ð ðð ð ð ð ñ ô ð ð Ôð':ð ':ð ':ñ Ôð':ðTCð Cð Cð CðLð Lð Lð LðN"ð N"ð N"ð N"ð N"ñ N"ô N"ð N"ðb3
ð 3
ð 3
ð 3
ð 3
ñ 3
ô 3
ð 3
ðlLCð LCð LCð LCð LCñ LCô LCð LCð^ð ð ð ð ñ ô ð ð ð r"   