§
    eŠtjØ{  ã                  ó  — 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     ú[/var/www/html/CA-Chatbot/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          | t          j        ¦  «        rt          j        | g|¢R i |¤Ž d S t          d| z  ¦  «        ‚)NzGot unexpected warning: %r)r$   r   ÚSATestSuiteWarningÚwarningsÚwarnÚAssertionError)rQ   Ú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)rQ   rX   r   Ú	exceptionÚfilter_ÚfiltersrF   rY   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Ú_SEENr\   ÚextendÚupdateÚsetrU   rV   r   ÚpatchÚjoin)rH   r   rD   rE   r-   rF   rf   rg   rd   rY   re   s     `` `` @@@r    rG   rG   ª   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ñ &ñ ô ˜8øøð /3Ð2�Ð2˜ 8àð Ø#ð ð Ð%AÀDÇIÂIð Nð Nð Nð NØDHðNñ Nô Nñ Eô Eñ &ñ ô ˜8˜8˜8˜8˜8ð		ð 		ð 		ñ 		ô 		ð 		ð 		ð 		ð 		ð 		ð 		ð 		øøøð 		ð 		ð 		ð 		ð 		ð 		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_assertionsrv   þ   s   € õ &Ñ'Ô'Ð'Ð'Ð'r"   c                 óB   — t           j                             ¦   «          d S r6   )r
   Útesting_reaperÚassert_all_closedrK   r"   r    ru   ru   	  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Ð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�   3  s   € Ý
ˆ1ˆd˜ÐÑÔÐÐÐr"   c                óD   — t          t          | ¦  «        d|¬¦  «         d S )NTr—   ©r˜   Úboolr™   s     r    Úis_truer¡   7  s#   € Ý�ˆQ‰Œ�˜3ÐÑÔÐÐÐr"   c                óD   — t          t          | ¦  «        d|¬¦  «         d S )NFr—   rŸ   r™   s     r    Úis_falser£   ;  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œ   D  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¨   M  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ª   R  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®   [  sJ   € à�<Š<˜Ñ!Ô!ð ð  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³   c  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__)rb   s    r    Ú _assert_proper_exception_contextr¸   n  s]   € ð 	Ô YÔ%8Ð8Ð8ØÔ.ð 	9ð	
ð 	
ð ˆyˆy˜)Ô/Ð/Ð/ð1ñ	
ô 	
ˆuð 	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$   r]   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ˆ7Ð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__T  s   € Ý)ð2ñô ð r"   N)rÖ   r×   rØ   r  rK   r"   r    Ú
DontAccessrþ   S  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__[  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_mappingl  s   € àÔ*Ô;Ð;r"   c                ó4   — | j                              ¦   «         S r6   )r  Ú_default_dialectr  s    r    r  zOAssertsCompiledSQL.assert_compile.<locals>.CheckCompilerAccess._default_dialectp  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.compiles  s7   € Ø;�tÔ*Ô2Ô;Øðð Ø")ðØ-/ðð ð r"   c                ó4   —  | j         j        j        | |fi |¤ŽS r6   )r  Ú	_compilerr  r  s      r    r  zHAssertsCompiledSQL.assert_compile.<locals>.CheckCompilerAccess._compilerx  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   rr   Ú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  rM   r  r   )r  s   €r    ÚCheckCompilerAccessr  Z  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/  r2  s     €r    r4  z5AssertsCompiledSQL.assert_compile.<locals>.<dictcomp>Å  r5  r"   c                óB   •— t          ‰¦  «        }| |_        ||_        |S r6   )r   Ú
paramstyleÚ
positional)r8  r9  Ú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    rk   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_namerl   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_namesr0  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_selectrG  rI  rH  rô   rõ   rò   rø   rM  Ú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  r3  r+  r?  r-  rC  s6           `                                       @@@@@@r    Úassert_compilez!AssertsCompiledSQL.assert_compileø  sT  øøøøøøø€ ð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Ø% #Ñ%Ô%˜5ð&øøøõ ð ð ð ð å˜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"   )rh  r3  rj  rŒ   r?  Úprimary_keyÚnullabler$   r]   Úassert_types_baserS  ÚStringÚlengthÚforeign_keysÚserver_defaultr   ÚFetchedValueÚcolumns)r  ÚtableÚreflected_tableÚstrict_typesÚstrict_constraintsr3  Ú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ð ð
 ×&Ò& {°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_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   )rl   rà   rX  Úassert_list)r  rl  Úclass_Úobjectss       r    Úassert_resultz%AssertsExecutionResults.assert_result8  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-   rh  rÖ   rg  Ú
assert_row)r  rl  r©  Úlist_rB  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__rX  Úitemsr$   r\  rl   r¨  r  r­  )r  r©  ÚrowobjÚdescr  Úvalues         r    r­  z"AssertsExecutionResults.assert_rowG  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>d  s#   ø€ Ð7Ð7Ð7¨�M�M !Ñ$Ô$Ð7Ð7Ð7r"   c                ó$   •— t          | ‰¦  «        S r6   r“   )ÚoÚclss    €r    ú<lambda>zAAssertsExecutionResults.assert_unordered_result.<locals>.<lambda>f  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  rW   )Úobjr(   r  r´  ÚNOVALUEr  s       €€r    Ú_compare_itemzFAssertsExecutionResults.assert_unordered_result.<locals>._compare_itemt  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Ö   rh  r  ÚremoverX  )r  rl  rÀ  r~   ÚfoundÚwrongrÇ  Úexpected_itemÚ
found_itemrÆ  r»  s   ` `      @@r    rÄ  z/AssertsExecutionResults.assert_unordered_resultX  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Úasserterrl  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Ù  rd  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"   )rj  rd  Ú	__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¦  7  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~   rl   Ú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    r4  zEComparesIndexes.compare_table_index_with_expected.<locals>.<dictcomp>Ë  s   € Ð;Ð;Ð; c�C”H˜cÐ;Ð;Ð;r"   r?  Úuniquec                ó   — g | ]}|®|‘ŒS r6   rK   )rP   r3  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Œ   rh  Úindexesrû  r™  r¡   rb  rþ  rj  Útextrÿ  )r  rš  r~   r÷  Úidx_dictÚexprú  Úcolsr3  Ú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~   rl   r÷  r%   )rÖ   r×   rØ   r  rK   r"   r    rõ  rõ  Æ  s(   € € € € € ðð ð ð ð ð r"   rõ  )TFT)TFTFFr[   r6   )NF)T)QÚ
__future__r   Úcollectionsr   rò  r   Ú	itertoolsr   rL   rÝ   rU   r°   r   r	   r
   r   Ú
exclusionsr   r   r   r   r   r   r   r   rS  Úenginer   r   Úsql.selectabler   r   r!   ró  r)   r4   r8   r;   r?   rB   rm   rn   r\   r   rG   rv   ru   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 €Ø€Ø€ð ØØðð ð ð ð. Ôð ØØØ!Ø ð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ð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"   