§
    i˜ºhL{  ã                  ó  — 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a(da)da*	 	 	 dId „Z+ej!        	 	 	 	 	 dJd!„¦   «         Z,d"„ Z-d#„ Z.d$„ Z/dKd%„Z0dLd&„Z1dLd'„Z2dLd(„Z3dLd)„Z4dLd*„Z5dLd+„Z6dLd,„Z7dLd-„Z8dLd.„Z9dLd/„Z:e:Z;dLd0„Z<dLd1„Z=e=Z>dLd2„Z?dLd3„Z@d4„ ZAd5„ ZBd6„ ZCd7„ ZDd8„ ZEd9„ ZFd:„ ZG	 dMd;„ZH G d<„ d=¦  «        ZIej!        dMd>„¦   «         ZJdNd?„ZKdNd@„ZL G dA„ dB¦  «        ZM G dC„ dD¦  «        ZN G dE„ dF¦  «        ZO G dG„ dH¦  «        ZPdS )Oé    )Ú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     úe/var/www/html/services/rag-service/venv/lib/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                 ó2   — t          t          j        | fi |¤ŽS r6   )r   r   ÚBase20DeprecationWarningr   s     r    Úexpect_deprecated_20r;   \   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>.decoraten   s”   ø€ å Ð=°HÐ=Ð=Ð=¨EÐ=Ð=ð 	#ð 	#Ø�2�t�?˜r�?�?ð	#ð 	#ð 	#ð 	#ñ 	#ô 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#øøøð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ó   ’'§+®+r   )r'   r   r1   s   `` r    Úemits_warning_onr?   b   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,   )r8   r.   s      €r    r1   z!uses_deprecated.<locals>.decorate†   s‰   ø€ å Ð8°%Ð8Ð8ð 	#ð 	#Ø�2�t�?˜r�?�?ð	#ð 	#ð 	#ð 	#ñ 	#ô 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#øøøð 	#ð 	#ð 	#ð 	#ð 	#ð 	#r2   r   r3   s   ` r    Úuses_deprecatedrB   v   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   rD   rE   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 © )Ú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          d| z  ¦  «        ‚)NzGot unexpected warning: %r)ÚAssertionError)rQ   Úargr   s      r    Ú	real_warnz#_expect_warnings.<locals>.real_warnË   s   € Ý$Ð%AÀCÑ%GÑHÔHÐHr"   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)rQ   rU   r   Ú	exceptionÚfilter_ÚfiltersrF   rV   rD   rE   Ú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)rP   ÚsrD   s     €r    ú	<genexpr>z#_expect_warnings.<locals>.<genexpr>ö   sL   øè è € ð Nð NØ?@˜¨UÐ 9 ¤	 	¸Ñ:ðNð Nð Nð Nð Nð Nr"   )ÚlistÚ_FILTERSÚ_SEENrY   ÚextendÚupdateÚsetÚwarningsÚwarnr   ÚpatchÚjoin)rH   r   rD   rE   r-   rF   rc   rd   ra   rV   rb   s     `` `` @@@r    rG   rG   ª   s©  øøøøøøøè è € ð ð !�
ð !ØDÐD¸8ÐDÑDÔDˆˆå�x‘.”.ˆåÐõ Ð Ð Ð ÝÐ#Ð#Ð#Ý�Š˜Ñ Ô Ð Ý�Š�WÑÔÐÝ�W�JÑˆØˆˆˆˆˆå˜7‘|”|Ð#ˆˆuØˆØ�:ˆà"ð 	&ðIð Ið Ið Iõ !œˆ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_connectionsrK   r"   r    Úglobal_cleanup_assertionsru   û   s   € õ &Ñ'Ô'Ð'Ð'Ð'r"   c                 óB   — t           j                             ¦   «          d S r6   )r
   Útesting_reaperÚassert_all_closedrK   r"   r    rt   rt     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ú !~ )rL   r]   )ÚaÚbrQ   Ú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.ú != NrK   ©r„   r…   rQ   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 == NrK   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‰   NrK   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“   (  s6   € Ý�a˜ÑÔÐJÐJ˜SÐJÀQÀQÀQÈÈÐ$JÑJÔJÐJÐJÐJr"   c                ó*   — t          | d |¬¦  «         d S ©N©rQ   )Úis_©r„   rQ   s     r    Úis_noner™   ,  s   € Ýˆˆ4�SÐÑÔÐÐÐr"   c                ó*   — t          | d |¬¦  «         d S r•   )Úis_notr˜   s     r    Úis_not_nonerœ   0  s   € Ý
ˆ1ˆd˜ÐÑÔÐÐÐr"   c                óD   — t          t          | ¦  «        d|¬¦  «         d S )NTr–   ©r—   Úboolr˜   s     r    Úis_truer    4  s#   € Ý�ˆQ‰Œ�˜3ÐÑÔÐÐÐr"   c                óD   — t          t          | ¦  «        d|¬¦  «         d S )NFr–   rž   r˜   s     r    Úis_falser¢   8  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 NrK   rŠ   s      r    r—   r—   <  ó)   € à�ˆ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 NrK   rŠ   s      r    r›   r›   A  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 NrK   rŠ   s      r    Úin_r§   J  r¤   r"   c                ó0   — | |vsJ |p| ›d|›�¦   «         ‚dS )z2Assert a in not b, with repr messaging on failure.z is in NrK   rŠ   s      r    Únot_inr©   O  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„   ÚfragmentrQ   s      r    Ústartswith_r­   X  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‰   )rL   ÚsubrŠ   s      r    Úeq_ignore_whitespacer²   `  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__)r_   s    r    Ú _assert_proper_exception_contextr·   k  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©rQ   rº   r»   ©r¾   rQ   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˜$Ð) &Ð)Ð)ð*ð *ð *ð *ñ *ô *ð *ð *ð *ð *ð *ð *øøøð *ð *ð *ð *ð *ð *r>   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)rE   rD   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Æ   rQ   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Ñ   rK   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$   rZ   r[   ÚWarningÚ	TypeErrorrÔ   ÚsysÚexc_inforÑ   r%   rL   r\   ÚUNICODEr·   ÚprintÚencode)r¾   rQ   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¾   rQ   rº   s      r    Úexpect_raises_messageré   ð  s   € Ý˜*¨#¸]ÐKÑKÔKÐKr"   c                  ó@   — e Zd Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„ZdS )ÚAssertsCompiledSQLNFTc           	     óv  ‡‡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        d6d‰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¦  «        ¦  «        }tM          |||›d |›d!‰›�¦  «         |�R|r-‰1 '                    |d¬"¦  «        Š2tM          ‰2j(        |¦  «         n#tM          ‰1 )                    |¦  «        |¦  «         |	��|rF‰1 '                    |d¬"¦  «        Š2tM          tU          ˆ2fd#„‰2j+        D ¦   «         ¦  «        |	¦  «         nE‰1 )                    |d¬"¦  «        Š4tM          tU          ˆ4fd$„‰1j+        D ¦   «         ¦  «        |	¦  «         |
�tM          ‰1j,        |
¦  «         |�!tM          ˆ1fd%„‰1j-        D ¦   «         |¦  «         |�!tM          ˆ1fd&„‰1j.        D ¦   «         |¦  «         |�rêt          ‰1dd ¦  «        �rÚˆfd'„}  | d(d¦  «        }! |j        d6d|!i|¤Ž}"tI          j%        ddt          |"¦  «        ¦  «        } | dd¦  «        }# |j        d6d|#i|¤Ž}$t#          |$j+        ¦  «        }%|$j/        }&|$j.        |$j-        z  D ]!}'|$j0        |'         Š3‰3|%v rˆ3fd)„|%D ¦   «         }%Œ"g Š5tc          t"          ¦  «        }(|%D ]›})	 |)|(v r|(|)         d*         }*nd}*|& 2                    |)|)¦  «        }+| 3                    d+|+›d,�|*¦  «        d-z   },‰5 4                    |,¦  «         |(|)          4                    |,¦  «         Œ|# tj          $ r d.|)›d/|›�}-J |-¦   «         ‚w xY wtm          ˆ5fd0„to          d1tq          ‰5¦  «        ¦  «        D ¦   «         ¦  «        }.d2„ ts          tu          ‰5|%¦  «        ¦  «        D ¦   «         }/d3|%›d4|/›d5|›�}-tw          |.|-¦  «         d S d S d S )7NÚ__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__Q  s   € Ý)ð2ñô ð r"   N)rÕ   rÖ   r×   r  rK   r"   r    Ú
DontAccessrý   P  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__X  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_mappingi  s   € àÔ*Ô;Ð;r"   c                ó4   — | j                              ¦   «         S r6   )r  Ú_default_dialectr  s    r    r  zOAssertsCompiledSQL.assert_compile.<locals>.CheckCompilerAccess._default_dialectm  s   € ØÔ*×;Ò;Ñ=Ô=Ð=r"   c                ó6   —  | j         j        j        | fd|i|¤ŽS )NÚdialect)r  rM   Ú__func__©r   r  r   s      r    rM   zFAssertsCompiledSQL.assert_compile.<locals>.CheckCompilerAccess.compilep  s7   € Ø;�tÔ*Ô2Ô;Øðð Ø")ðØ-/ðð ð r"   c                ó4   —  | j         j        j        | |fi |¤ŽS r6   )r  Ú	_compilerr  r  s      r    r  zHAssertsCompiledSQL.assert_compile.<locals>.CheckCompilerAccess._compileru  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   rq   Úobjectr  Ú_compiler_dispatch)r   ÚcompilerrÆ   r  s      €r    r  zQAssertsCompiledSQL.assert_compile.<locals>.CheckCompilerAccess._compiler_dispatchz  só   ø€ Ý˜8 [Ñ1Ô1ð 
Ýœ×*Ò*Ø  +¨z¨z©|¬|ñô ð ð ð  F˜tÔ2ÔEØ$ð ð  Ø(.ð ð  ðð ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð ð ð B˜4Ô.ÔAØ ðð Ø$*ðð ð s   »AÁAÁ"AN)
rÕ   rÖ   r×   r  Úpropertyr  r  rM   r  r  )r  s   €r    ÚCheckCompilerAccessr  W  sˆ   ø€ € € € € ðPð Pð Pð" ð<ð <ñ ŒXð<ð>ð >ð >ðð ð ð
ð ð ð
ð ð ð ð ð ð r"   r"  r  ÚparamsrÙ   ÚasciiÚignorez
SQL String:
z[\n\t]r¯   r‰   z on dialect )Úescape_namesc                ó*   •— g | ]}‰j         |         ‘ŒS rK   )Ú
parameters)rP   ÚxÚexpanded_states     €r    rR   z5AssertsCompiledSQL.assert_compile.<locals>.<listcomp>¬  s1   ø€ ð ð ð à !ð +Ô5°aÔ8ðð ð r"   c                ó    •— g | ]
}‰|         ‘ŒS rK   rK   )rP   r)  Úps     €r    rR   z5AssertsCompiledSQL.assert_compile.<locals>.<listcomp>µ  s   ø€ Ð7Ð7Ð7 A˜1˜Qœ4Ð7Ð7Ð7r"   c                ó6   •— i | ]}‰j         |         |j        “ŒS rK   ©Ú
bind_namesÚeffective_value©rP   r…   Úcs     €r    ú
<dictcomp>z5AssertsCompiledSQL.assert_compile.<locals>.<dictcomp>º  ó4   ø€ ð ð ð àð ”L ”O QÔ%6ðð ð r"   c                ó6   •— i | ]}‰j         |         |j        “ŒS rK   r.  r1  s     €r    r3  z5AssertsCompiledSQL.assert_compile.<locals>.<dictcomp>Â  r4  r"   c                óB   •— t          ‰¦  «        }| |_        ||_        |S r6   )r   Ú
paramstyleÚ
positional)r7  r8  Úcpr  s      €r    Úget_dialectz6AssertsCompiledSQL.assert_compile.<locals>.get_dialectÊ  s!   ø€ Ý˜'‘]”]�Ø *�”Ø *�”Ø�	r"   Úpyformatc                ó    •— g | ]
}|‰k    ¯|‘ŒS rK   rK   )rP   ÚvÚnames     €r    rR   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   NrK   )rP   ÚiÚ	positionss     €r    rh   z4AssertsCompiledSQL.assert_compile.<locals>.<genexpr>ï  sI   øè è € ð ð àð ˜!˜a™%Ô  9¨Q¤<Ò/ðð ð ð ð ð r"   r   c                ó   — g | ]\  }}|‘ŒS rK   rK   )rP   Ú_r=  s      r    rR   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 rK   )<r   ÚDefaultDialectÚsupports_default_valuesÚsupports_default_metavalueÚsupports_native_booleanr  r	   r'   r  ÚStrCompileDialectr$   r%   r   ÚURLÚcreater:  Údefault_schema_nameri   r   ÚFROM_LINTINGÚ
sqlalchemyrú   ÚQueryÚ_statement_20r   Ú_label_stylerM   ÚsqltypesÚ
TypeEngineÚ_static_cache_keyÚhashÚ_generate_cache_keyÚreprrà   Údecoderß   rL   r±   r‹   Úconstruct_expanded_stater(  Úconstruct_paramsÚtupleÚpositiontupÚprefetchÚliteral_execute_paramsÚpost_compile_paramsÚescaped_bind_namesr/  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_selectrF  rH  rG  ró   rô   rñ   r÷   rL  Ú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_valuer=  ÚstartÚescÚposrQ   Úorderedr}   r  r2  r*  r>  r,  rB  s6           `                                       @@@@@@r    Úassert_compilez!AssertsCompiledSQL.assert_compileõ  sU  øøøøøøø€ ð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Ñ*Ô*ˆåˆB�°B°B°B¸¸¸ÀÀÐHÑIÔIÐIàÐ"Ø!ð =Ø!"×!;Ò!;Ø¨ð "<ñ "ô "�õ �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   Ô$A8VÖV:)NNFNNNNNFFTFTFFNFNFTF)rÕ   rÖ   r×   r…  rK   r"   r    rë   rë   ô  so   € € € € € ð
 ØØØ"ØØØØØ!Ø"Ø $Ø %Ø#'ØØ Ø!Ø %Ø ØØØ+0ð1F"ð F"ð F"ð F"ð F"ð F"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 rK   ©Úcolumnr>  ©rP   Úfs     r    ú	<setcomp>z5ComparesTables.assert_tables_equal.<locals>.<setcomp>  s   € Ð;Ð;Ð; q�Q”X”]Ð;Ð;Ð;r"   c                ó&   — h | ]}|j         j        ’ŒS rK   rŠ  rŒ  s     r    rŽ  z5ComparesTables.assert_tables_equal.<locals>.<setcomp>  s   € ÐEÐEÐE q�Q”X”]ÐEÐEÐEr"   )rg  r2  ri  r‹   r>  Úprimary_keyÚnullabler$   rZ   Úassert_types_baserR  ÚStringÚlengthÚforeign_keysÚserver_defaultr   ÚFetchedValueÚcolumns)r   ÚtableÚreflected_tableÚstrict_typesÚstrict_constraintsr2  Úreflected_crQ   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 'ú')rZ   Ú_compare_type_affinityr>  )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’  rK   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   )ri   rß   rW  Úassert_list)r   rk  Úclass_Úobjectss       r    Úassert_resultz%AssertsExecutionResults.assert_result5  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-   rg  rÕ   rf  Ú
assert_row)r   rk  r¨  Úlist_rA  s        r    r§  z#AssertsExecutionResults.assert_list:  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__rW  Úitemsr$   r[  ri   r§  r  r¬  )r   r¨  ÚrowobjÚdescr  Úvalues         r    r¬  z"AssertsExecutionResults.assert_rowD  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__]  s   € Ý˜$‘x”x�r"   N)rÕ   rÖ   r×   r¹  rK   r"   r    Úimmutabledictr¶  \  s#   € € € € € ð ð  ð  ð  ð  r"   rº  c                ó&   •— h | ]} ‰|¦  «        ’ŒS rK   rK   )rP   Úerº  s     €r    rŽ  zBAssertsExecutionResults.assert_unordered_result.<locals>.<setcomp>a  s#   ø€ Ð7Ð7Ð7¨�M�M !Ñ$Ô$Ð7Ð7Ð7r"   c                ó$   •— t          | ‰¦  «        S r6   r’   )ÚoÚclss    €r    ú<lambda>zAAssertsExecutionResults.assert_unordered_result.<locals>.<lambda>c  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  rT   )Úobjr(   r  r³  ÚNOVALUEr   s       €€r    Ú_compare_itemzFAssertsExecutionResults.assert_unordered_result.<locals>._compare_itemq  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   rZ   rÕ   rg  r  ÚremoverW  )r   rk  r¿  r}   ÚfoundÚwrongrÆ  Úexpected_itemÚ
found_itemrÅ  rº  s   ` `      @@r    rÃ  z/AssertsExecutionResults.assert_unordered_resultU  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Úasserterrk  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 rK   )r   ÚCompiledSQL)rP   Úkr=  s      r    rR   z6AssertsExecutionResults.assert_sql.<locals>.<listcomp>œ  s)   € ÐKÐKÐK±d°a¸•iÔ+¨A¨qÑ1Ô1ÐKÐKÐKr"   )r$   rÇ  r   ÚAllOfr°  rØ  rc  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 rK   )rÐ  )rP   r'   rá  r   s      €r    rR   zKAssertsExecutionResults.assert_statement_count_multi_db.<locals>.<listcomp>´  sB   ø€ ð 
ð 
ð 
á��Uð ×(Ò(¨Ñ,Ô,¨b°%Ð8ð
ð 
ð 
r"   )ri  rc  Ú	__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ð  rK   r"   r    r¥  r¥  4  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}   ri   Ú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 rK   )r>  )rP   Úidxs     r    r3  zEComparesIndexes.compare_table_index_with_expected.<locals>.<dictcomp>È  s   € Ð;Ð;Ð; c�C”H˜cÐ;Ð;Ð;r"   r>  Úuniquec                ó   — g | ]}|®|‘ŒS r6   rK   )rP   r2  s     r    rR   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‹   rg  Úindexesrú  r˜  r    ra  rý  ri  Útextrþ  )r   r™  r}   rö  Úidx_dictÚexprù  Úcolsr2  Ú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}   ri   rö  r%   )rÕ   rÖ   r×   r
  rK   r"   r    rô  rô  Ã  s(   € € € € € ðð ð ð ð ð r"   rô  )TFT)TFTFFrX   r6   )NF)T)QÚ
__future__r   Úcollectionsr   rñ  r   Ú	itertoolsr   rL   rÜ   ro   r¯   r   r	   r
   r   Ú
exclusionsr   r   r   r   r   r   r   r   rR  Úenginer   r   Úsql.selectabler   r   r!   rò  r)   r4   r8   r;   r?   rB   rj   rk   rY   r   rG   ru   rt   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ô  rK   r"   r    ú<module>r     s¡  ðð #Ð "Ð "Ð "Ð "Ð "à #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ø 	€	€	€	Ø 
€
€
€
Ø €€€à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø Ð Ð Ð Ð Ð ðHð Hð Hð  Ôðð ñ Ôðð ð ð ð ð ð ðð ð ðð ð ð(ð ð ð0 €Ø€Ø€ð ØØðð ð ð ð. Ôð ØØØ!Ø ðMð Mð Mñ ÔðMð`(ð (ð (ð/ð /ð /ðð ð ð=ð =ð =ð =ð.ð .ð .ð .ð
.ð .ð .ð .ð
.ð .ð .ð .ð
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ðG"ð G"ð G"ð G"ð G"ñ G"ô G"ð G"ðT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"   